Da Vinci Machine FAQ

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.