I'm very happy to announce that the JCP has begun voting on a JSR to standardize the BeanShell scripting language through the Java Community Process. 

The goal of this JSR will be to formalize the langauge and provide the RI and TCK which will allow it to be included in a future release of the J2SE. This effort will build upon the introduction of the javax.script API by providing a standard, Java syntax compatible, scripting language as part of the Java platform. 

I think this is a very exciting proposal and will lead to very good things for both the Java platform and for existing users of BeanShell. I encourage everyone to read the JSR proposal (http://jcp.org/en/jsr/detail?id=274), which provides more details and motivation. But let me briefly anticipate a few questions: 

1) Why spend time on this? Why not just put the time into making BeanShell better independently? 

Well, the primary reason is that we really believe that the Java platform needs a standardized, "native" Java scripting language and is long overdue for one. There are so many things that developers and end users can do with a dynamic language and scripting capabilities (prototyping, application extension, configuration, testing, dynamic deployment) and this capability has been there just under the surface since Java 1.1, waiting to be tapped. This is why we created BeanShell and have maintained it (sometimes lovingly, sometimes reluctantly) for the past seven years. During that time BeanShell has matured into a truly Java syntax compatible language, while staying relatively lean and simple. It only takes a couple of hundred K of code (less than the size of some of the Swing components) to bring all of this to Java. So, we think it's time that it gets done. 

Next, from the project's point of view, we think that this will make BeanShell better. There is nothing like a little pressure to get people moving and get things done. We are very much looking forward to the involvement of new voices and outside experts on the project and I believe that this process is going to benefit everyone, most of all BeanShell users. 

2) Won't this effort suffer from the pitfalls of designing a language by committee? 

The purpose of the JSR will be primarily to ratify the existing language, not to create a new one. We aren't going to start from scratch or go off in completely uncharted territory. Of course having the benefit of new people and ideas we may find new answers to old problems, but I believe that we can keep a firm grip on the process and get this done with an outcome that will make everyone happy. Because we have been very conservative with the core of BeanShell over the years it has stayed relatively clutter free. This leaves us a lot of flexibility and room for future enhancement. We do have some interesting and bold ideas brewing, but those proposals will come from the community based on their merit and not from an attempt to solve every problem via the expert group. 

3) So what is the plan? Where is the roadmap for BeanShell? 

The first step will be to finalize the current (2.x) release with the existing feature set. This work will be mainly bug fixes, but will also move a bit further towards Java 5 syntax compatibility. At JavaOne next month we will be hosting a BeanShell BOF (please join us) to talk about plans for BeanShell 3.0 and solicit feedback on the JSR. We expect BeanShell 3.0 to be fully Java 5 compatible in terms of base syntax, to offer some new (long desired) features in the scripting domain, and to address performance and management issues. We are currently updating the beanshell.org web site and services and we're moving the codebase into Subversion. We will soon have a Wiki which will allow the community to help us even more. We will be releasing much more regularly starting immediately. The goal will be to have the JSR in good shape by the end of the year, with an alpha release of 3.0 including new features developed concurrently by the community.