invokedynamic
JDK 7 features. The most notable one is the new invokedynamic instruction, which will give dynamic languages first class status on the JVM. People are patching up things here. A VM for an Object Oriented language should be built around dynamic typing and true message passing. Dynamic typing is important because good software engineering means exploratory programming and prototyping. Message passing should be preferred over method calls because it melds well with dynamic typing, concurrency and component distribution. Smalltalk and Erlang got these right from the very beginning.
JDK 7 also features automatic resource management. If you have programmed in Common Lisp, you know what that means:
(with-open-file (file "some.data" :direction :output)
(format file "whew!!"))Now you can do the same stuff in Java:
try (file = new FileOutputStream("some.dat")) { file.write(buf, 0, len); } // file is automatically closed here.
The last great idea in language design is probably (at least) 35 years old. Glad to see the world’s leading ‘enterprise language’ catching up – slowly!
PS: Static type checking, if required, can be implemented in the language being implemented itself. EOPL contains the best explanation (I have seen) on this topic.