Dynalink 0.3: Dynamische Interoperabilität zwischen JVM-Sprachen

Hartmut Schlosser

Ein interessantes Projekt für Entwickler von JVM-Sprachen macht erneut auf sich aufmerksam. Dynalink 0.3 ist erschienen und präsentiert sich im schicken Gewand einer neuen Webseite. Was hat es mit dem Projekt auf sich?

Dynalink selbst nennt sich eine „InvokeDynamic-basierte High-Level Linking und Metaobject Protocol Library“. Sinn und Zweck des Ganzen ist es, die Entwicklung von Sprachen für die JVM zu erleichtern, die vom seit JDK7 verfügbaren InvokeDynamic Feature Gebrauch machen.

Die Bibliothek erlaubt es JVM-Klassen einer Sprachenruntime, innerhalb einer JVM-Instanz Methoden einer anderen Sprachenruntime aufzurufen, deren Properies zu lesen und zu schreiben, etc. Insbesondere kann das Projekt dazu verwendet werden, um POJOs von Nicht-Java-Runtimes aus zu manipulieren.

Das Projekt besteht aus zwei Teilen. Ein sogenanntes Linker Composition Framework erlaubt es, dass InvokeDynamic Linker für verschiedene Sprachen im Classpath entdeckt, geladen und zu einem einzigen Master-Linker zusammengeführt werden. Außerdem gibt es ein Set von Konventionen, die die Methodennamen und die Argumentenweitergabe betreffen und von InvokeDynamic für ein von allen verstandenes Metaobjekt-Protokoll genutzt werden.

Ein spezieller POJO Linker ermöglicht es JVM-Sprachen zudem, Verbindungen zu Java-Objekten herzustellen. Er sorgt für die Konformität zur JavaBeans-Spezifikation und stellt Support für vararg-Methoden und Overload-Methoden-Auflösung bereit.

Das Projekt wird maßgeblich von Oracle Ingenieur Attila Szegedi vorangetrieben und ist aktuell in Version 0.3 erschienen. Die laufende Entwicklung kann man sich auf der GitHub-Seite What’s new in 0.3 ansehen. Zur Einführung sei die Präsentation von Szegedi vom JVM Language Summit empfohlen, die man sich im Oracle Media Network ansehen kann.

Dynalink hat das Potenzial, die Interoperabilität von Sprachen auf der JVM entscheidend zu verbessern. Jetzt schon soll es möglich sein, Objekte von Ruby nach Python, dann zu JavaScript und danach an Java weiterzureichen – und wieder zurück. Der weitere Werdegang des Projektes wird interessant zu beobachten sein, insbesondere da wohl Oracle selbst an einem Einsatz interessiert ist.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.