Da Vinci Machine FAQ

virtual flying machine

What are new features are being added to the JVM?

The original JSR 292 request called for a new instruction called invokedynamic to ease the implementation of non-Java call sites.  It also mentioned the need for new ways to dynamically structure classes.  The JSR 292 Expert Group has been evaluating these and other ideas and will be proposing a core set of JVM extensions for standardization in 2008.  We would like to include these extensions in the next version of Java SE—Java SE 7.  The Da Vinci Machine Project also expects to host more forward-leaning experiments and prototypes, in the spirit of the Kitchen Sink Language project, which may or may not become standards at a later time.

Will there be new bytecodes?

There will be new bytecode semantics, which will compatibly extend the existing semantics that support Java programs.  For reasons of compatibility (in the Java tool chain), the invokedynamic instruction will probably be a variation of invokeinterface.  We can add new bytecodes if that is required.

What kind of performance penalty will there be for dynamic invocation?

Performance should be within a small factor of the invokevirtual and invokeinterface instructions, and comparable for call sites with stable type profiles.

Will there be support in the Java language for dynamic features?

This Project does not address the possibility of extensions to the Java language.  We intend that new JVM features will work smoothly with the existing Java language, where that makes sense.  We expect that likely extensions (like closures) will also be compatible in some way, and we hope to offer support from the JVM to new features that would benefit from JVM enhancements.

code churn