This thing may be called "Instant Java".
A great scripting, testing and debugging tool. Provides a scripting language that is "almost Java", a nice GUI, a class browser, class reloading capabilities, and a partridge in a pear tree.
It can give you real productivity boost when you work in Java.
Suppose that you have some new jar with the API that is unfamiliar to you.
can introduce you to this API fairly quickly.
Sometimes people use JavaUnit
for that purpose --
just to get aquainted with API inside which they should work.
allows you to do that with a much greater comfort.
Just one feature -- adding classpath items inside a script -- helps a lot.
can help on application design stage.
You can prototype your application with BeanShell
and then transform them to real Java classes
WHEN EVERYTHING WORKS. That's a high quality of DesignPhase
, of course :)
works very close with JavaBeans
"design patterns": foo.bar > 42 is translated to foo.getBar() > 42 by the interpreter. Non-programmers can get their minds around the first way of writing more easily, thus BeanShell
is incredibly useful for end user programming.
provides a unified API for executing BeanShell
also provides access to BeanShell
. In fact, keyboard macros automatically generate BeanShell
script and there's a console plugin that features BeanShell
. -- MarkCrocker
I've recently discovered this gem. I've gone from mild interest (hmm... dynamicly typed java?), to moderate disbelief (yay... no more casting required), to severe joy (you...you...you mean I needn't stub out methods? I don't need to completely implement the interface I'm casting to!?). I must say, I'm really hoping that this can take off some of the sharp edges and corners of java that I've been cutting myself on as of late.
Dynamic typing, transparent support for primitive types, appropriate casting to interfaces (including the all important DoesNotUnderstand
, called Invoke)... this should be interesting :)
I have to admit one thing, however: I hate the name :)
one of the most useful features of this language is that it lessens the difference between classes and functions. a little example:
print("x=" + x + ", y=" + y + ", z=" + z);
x = foo("hello", 5);
x=hello, y=5, z=3
(from Rice University, another environment that is almost Java), OtherLanguagesForTheJavaVm