Strange Loop

JVM dynamic languages interoperability framework

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.

Click to view published talk video

Attila Szegedi

Attila Szegedi

Twitter, Inc.

Attila Szegedi is a software engineer working for Twitter, in its Core System Libraries group. He is the author of Dynalink - the dynamic linker framework for languages on the JVM, a contributor to the Mozilla Rhino, a JavaScript runtime for the JVM (most recently responsible for its CommonJS Modules implementation), as well as one of the principal developers of the FreeMarker templating language runtime.