Da Vinci Machine FAQ
What are new features are being added to the JVM?
The original JSR
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
What kind of performance penalty will there be for dynamic
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
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.