With the advent of the invokedynamic in Java 7, implementations of language runtimes on JVM will become much more performant and powerful. Invokedynamic in itself is however only the first stepping stone, the least amount of functionality exposed by the JVM sufficient to enable the new features. Language implementers still need a lot of plumbing for correct interoperability with Java objects: overloaded method resolution, property access, collections access, and so on. The JVM Dynamic Linker Framework provides these functions, a convention for specifying them as invokedynamic calls, and means to link the invocations. More importantly, it provides means for registration and discovery of the same functions for other languages, acting as a nexus that can transparently link call sites generated by one language implementation to code in another implementation. Thus, it allows a dynamic language runtime to handle not only POJOs, but also objects from any other dynamic language runtime that itself uses the framework.
We present a new statically typed JVM-targeted programming language developed by JetBrains and intended for industrial use.
The main design goals behind this project are to create a Java-compatible language, make it compile as fast as Java, make it safer than Java, i.e. statically check for common pitfalls such as null pointer dereference, make it more concise than Java by supporting local type-inference, first-class functions (closures), extension functions, mixins and first-class delegation, etc; and, keeping the useful level of expressiveness (see above), make it way simpler than the most mature competitor — Scala.
The compiler is being developed alongside with an IntelliJ IDEA integration, so the users will get IDE support as soon as they get the compiler (first public version is planned for the end of 2011).
18th–20th September 2011