JSR 292: Supporting Dynamically Typed Languages on the Java Platform
http://jcp.org/en/jsr/detail?id=292
動的な型を持つ言語をサポートするためのJVM仕様がJSR 292として提案されました。簡単に言うと、現在のJVMの仕様では4種類のinvoke命令(invokeinterface, invokespecial, invokestatic, invokevirtual)があるが、これに新しくinvokedynamicという命令を追加して動的な型付けに対応しようというものです。invokedynamic命令についてはJSR 292のスペックリードであるGilad Bracha氏のブログで紹介されています。
http://blogs.sun.com/roller/page/gbracha?entry=invokedynamic
Basically, it will be a lot like invokevirtual (if you don’t know what that is, either open a JVM spec and find out, or stop reading). The big difference is that the verifier won’t insist that the type of the target of the method invocation (the receiver, in Smalltalk speak) be known to support the method being invoked, or that the types of the arguments be known to match the signature of that method. Instead, these checks will be done dynamically.
要するに型チェックをコンパイル時や検証時には行わずに、実行時に行うようなinvokevirtualということのようです。invokedynamicについてはJavaOne TokyoのセッションでもDolphinで追加される"かもしれない"新機能として紹介されていていました。例えば
newSize(c) { return c.size() * c.growthFactor(); }
のようなコードをコンパイルできるようにするためのアイデアの一つとして取り上げられました。なのでJSR 292はDolphinかそれ以降のJavaで標準仕様となる可能性もあり、要チェックな存在です。
追記:
Gilad Bracha氏のブログで、JAOOでの発表に使われたスライドが公開されていますね(2005/10/7のエントリ)。
http://blogs.sun.com/roller/resources/gbracha/JAOO2005.pdf