JSR-274 - Standardizing BeanShell
I'm very happy to announce that the JCP has begun voting on a JSR to standardize the BeanShell scripting language through the Java
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
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
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.