JSR-292 could make Java more inviting for dynamic languages:
There is growing interest in running a variety of programming languages on the the Java platform, and consequently, on the Java virtual machine (JVM). This interest is increasingly focused on dynamically typed languages, in particular scripting languages.
To make it easier to produce performant, high quality implementations of such languages, we propose to add support at the virtual machine level.
Specifically, we seek to add a new JVM instruction, invokedynamic, designed to support the implementation of dynamically typed object oriented languages. We will also investigate support for hotswapping, the capability to modify the structure of classes at run time.
However, it looks like there's some skepticism within the Java community:
My big question is how this affects Java's security model, particualrly since "The invokedynamic instruction is in many ways similar to the existing invokevirtual instruction. However, it is much less constrained by byte code verification rules. Instead, it relies on dynamic typechecking to ensure the integrity of the virtual machine." This is scheduled for Java 7, Dolphin. Comments are due by March 13. (Seems a bit short for such a major change.)
To really support a language like Smalltalk, you need what they are calling hot swap. Being able to make dynamic calls is a start, but that's it - a start.