Dynamic Scripting on Java Moves Forward — PushToTest
Personal tools
You are here: Home The Cohen Blog Dynamic Scripting on Java Moves Forward

Dynamic Scripting on Java Moves Forward

by Frank Cohen — last modified Mar 30, 2008 12:03 PM

The expert group working on an enhancement to Java that will make dynamic scripting languages easier to code and more efficient to run met this week. The JSR 292 group has been quietly considering designs for a new Java byte code instruction called "invokedynamic".

Java 1.6 introduced the JSR 223 ScriptEngine API that makes it possible for TestMaker to support multiple languages to write test suites. With the ScriptEngine TestMaker users are able to write tests in Java, Jython, JRuby, Groovy, PHP, and about 15 more languages.

Some of the supported languages are on-the-fly byte-code compilers. For instance, Jython is the Python scripting language that runs in the Java Virtual Machine (JVM.) At runtime Jython converts a Python script into Java Byte Code and runs the script in the JVM.

For the on-the-fly byte-code compiler script engines, the current JVM lacks an efficient way to dynamically dispatch calls to methods. Enhancing the JVM with an "invokedynamic" instruction will make it much easier to write this kind of script engine.

Originally the JSR 292 project was lead by Gilad Bracha, an expert in object-oriented programming languages, in particular modularity, reflection and type systems. Gilad left Sun last year and John Rose, took the project and has been running with it.

JSR 292 will make significant changes to the JVM instruction architecture. The expert group wants public review of the changes early and is producing an EDR (early draft review required by JCP). To make the current Proof of Concept design public, the expert group needs to informally agree that the design shows a direction that is worth explaining and improving - sometimes called a "red face test."

The original JSR 292 language includes not only invokedynamic but also some sort of class modification or extension. Based on recent experience, the expert groups believes something is needed beyond invokedynamic to support some sort of lightweight behavioral extension (method handles, autonomous methods, etc.)

The group is planning to start an OpenJDK open source sub-project to help create the Reference Implementation (RI) for JSR 292. The group plans to meet again soon but there is no published calendar of milestones or dates.

This is very good news for Java and Dynamic Scripting.

-Frank

Document Actions