I just spent the last 24 hours converting the GrexEngineShell (gesh) from beanshell to compiled java.
The good news is that ... it only took 24 hours (conversion isn't complete, but we've got the virual FS navigation up and running again, which is the most important part). Also, because we're no longer constrained to beanshell's "open a telnet port for every hacker in the world" design I've also integrated it into the GrexEngine as a full service - which means I only need to edit an XML file or two and I can make it HTTP, HTTPS, Telnet, or anything I fancy (just by changing a single word in most cases) - and get all the benefits of a secure login system wherever the protocol offers it. The 24 hours included the time to do this integration (and I feel quite smug that I could get a new grexengine service up and running so quickly, even though we'd not had any command-line services before
) - and included a good night's sleep, in case you were wondering!
The bad news is that it was necessary at all. The beanshell source is just too damn hard to work with (at the moment...we've posted to the beanshell SF project with our problems, and made some suggestions - there are even some people who might step forward to help clean it up) and it was costing us more time in fixing beanshell's problems than we were saving in being able to use a scripting language
. That's a pretty serious problem (hence voicing our concerns on SF as a sort of "test case").
Also, there is of course the fact that it's incredibly slow for any loop iteration at the moment, which almost killed Survivor dead in the water
. I have strong hopes that the next version of beanshell may be literally 10-100 times faster, if (as rumoured) they move to more intense use of bytecode generation / mangling. But for now, it's not usable unless you can avoid loops!