I recently took a look at joeq (http://joeq.sourceforge.net/) which is a Java virtual machine written in Java. Included is a "reflective" Java interpreter that can run on top of an existing Java virtual machine (e.g. Sun JRE). It can interpret class files, but can also delegate some (or all) method calls to the underlying VM as well. It looks like it would be quite easy to support Java language continuations with this interpreter. There are some drawbacks however:

1) In order to be included in a continuation a method call must be interpreted by joeq - not by the underlying VM (= severe performance penalty. Probably at least 15 to 20 times slower than hotspot compiled code). Although the joeq interpeter is very high quality, I did some informal tests and it appears to actually be slower than interpreted Rhino (not sure exactly why, perhaps because Rhino bytecodes are higher level), but was significantly faster than BeanShell (which is a Java source code interpreter).
2) It has an LGPL license.


Chris

Reply via email to