Die JVM wird zunehmend interessanter für Entwickler von Programmiersprachen, die vom Namen her rein gar nichts mit Kaffee zu tun haben. Dank JRuby, Jython, Groovy, Scala und Co. findet zur Zeit eine kambrische Explosion der Sprachvielfalt auf der JVM statt. Grund genug, einmal die Hauptakteure zu einem Gipfeltreffen einzuladen, die sich dann im sonnigen Santa Clara in Kalifornien ein Stelldichein gaben.
Die JVM als Plattform
Der Vorläufer des aktuellen JVM Language Summits fand bereits im Dezember 2004 statt und bereits damals ging es um den Traum, die Java Virtual Machine zugänglicher für Entwickler von dynamischen Programmiersprachen zu machen, und so Python, Groovy, Perl & co. zu einer hochperformanten Laufzeitumgebung zu verhelfen. Seitdem hat sich Tim Brays Idee von der JVM als der Plattform etabliert, nicht zuletzt dank des Aufstiegs von Ruby, PHP und Python als Mittel der Wahl für zahlreiche Web 2.0 Projekte, und den kontinuierlichen Verbesserungen an den auf der JVM aufsetzenden Implementierungen dieser Sprachen.
Die Geschwindigkeit von JRuby kommt in der Zwischenzeit an die von der nativen Ruby 1.8 Implementierung heran und übertrifft sie sogar in vielen Fällen. Mit der Arbeit an der Da Vinci VM, die HotSpot erweitert, um Implementierungen von dynamischen Sprachen auf der JVM einfacher und vor allem schneller zu machen, wird die JVM noch spannender für neue Sprachen. Und seitdem die JVM durch OpenJDK Open Source geworden ist, ist auch die letzte Berührungsangst unter Open Source Entwicklern weggefallen - die JVM mausert sich allmählich zur ersten Wahl für neue Programmiersprachen.
Gipfelstürmer unter sich
Zum JVM Language Summit hat Sun Microsystems nach Santa Clara in Kalifornien eingeladen, und mit 27 ausgewählten Vorträgen aus den Bereichen der virtuellen Maschinen, Sprachimplementierungen, Werkzeugen und Erfahrungsberichten in drei Tagen versucht der Bandbreite des Themas gerecht zu werden. Die Folien zu einzelnen Vorträgen lassen sich übrigens im Wiki des Summits finden.
Beim Thema JVM zeigten am ersten Tag John Pampuch, was HotSpot zur ersten Wahl als VM für Programmiersprachen macht, und John Rose, was von der Java 7 JVM zu erwarten ist, durch bereits implementierte und angedachte HotSpot-Erweiterungen im Da Vinci VM Projekt innerhalb von OpenJDK. Nach Berichten von Tim Bray und Ola Bini bekannte sich Mark Reinhold, Chief Engineer für Java SE, ausdrücklich dazu, die invokedynamic Erweiterung aus dem JSR 292 und der Da Vinci VM in Java 7 zu integrieren.
Ergänzt wurden diese Vorträge durch Remi Forax' Backport Projekt (JSR 292), um die neuen Features auch auf der existierenden Generation der JVMs verfügbar zu machen, sowie einen radikal anderen Ansatz, nämlich das Forschungsprojekt Maxine VM von Bernd Mathiske. Maxine ist im Gegensatz zu HotSpot fast vollständig in Java geschrieben, was. Das macht die Implementierung und Erweiterungen der VM selbst leichter und wesentlich modularer als bisherige VMs, erlaubt es aber auch, Java-Features wie Annotations zu nutzen, um der VM Hinweise zu geben, was auf welche Art optimiert werden soll, und gibt damit den Sprachimplementierungen mehr Kontrolle über den generierten Code als bisher möglich.
Bitte einen Babelfish
Bei den Sprachimplementierungen ging es ins Detail: Charles Nutter sprach über Interna der JRuby-Implementierung, Frank Wierczbicki über den Kern von Jython. Daneben gab es einen Vortrag von Iulian Dragos zur Optimierung von Scala, sowie das automatische Werkzeug Scalify zur Übersetzung von Java-Programmen nach Scala von Paul Phillips.
Das Thema der funktionalen Sprachen zog sich weiter durch die Vorträge von Neil Gafter zu Closures auf der JVM, und Microsofts Eric Meijer zur funktionalen Programmierung. Als kleines Detail am Rande gab Gafter beim JavaPosse-Podcast zum Summit an, nun bei Microsoft zu arbeiten. Für viele Java-Entwickler, die Gafter noch als Hauptakteur hinter Java Generics kennen, ist das sicherlich ein überraschender Schritt, und man darf gespannt sein, welche Aufgabe ihn in Redmond erwartet.
Die wirkliche Überraschung des Summits, wenn man sich durch die Blogposts und das Getwitter zur Veranstaltung klickt, war Clojure, eine dynamische funktionale Programmiersprache für die JVM. Neben Clojure fand sich mit Jatha eine weitere Lisp-Implementierung auf dem Summit. Jatha ist für Common Lisp zuständig, Clojure ist dagegen ein eigenständiger Lisp-Dialekt.
Während die meisten Sprachimplementierungen auf der JVM versuchen, sich mit den Java Klassenbibliotheken zu integrieren und das Problem, wie man aus der eigenen Sprache Java Methoden aufruft, zu lösen, hat sich Attila Szegedi bereits des nächsten Problems angenommen, und begonnen sich ein Meta-Objekt-Protokoll (MOP) für dynamische Sprachen auf der JVM zu überlegen.
Eine gemeinsame MOP-Bibliothek würde es verschiedenen Sprachimplementierungen möglich machen, gegenseitig Objekte zu inspizieren und Funktionen über Sprachgrenzen hinweg aufzurufen. Bis JRuby transparent Funktionen aus Jython aufrufen kann, ist es noch ein recht weiter Weg, aber auch hier fallen die angestrebten Änderungen aus der DaVinci VM auf einen fruchtbaren Boden, und wie bei den meisten beim Summit vorgestellten Projekten ist Open Source Code zum herunterladen und ausprobieren verfügbar.
Auf Wiedersehen in 2009?
Die JVM Languages Community hat das Summit genutzt um sich besser zu vernetzen, von einander zu lernen, neue Ideen zu entwickeln, und natürlich auch um Spaß miteinander zu haben, wie man dem JavaPosse Podcast leicht raushört. Es ist allen zu wünschen, dass diese Art von Summit eine alljährliche Veranstaltung wird. ES ist eigentlich nur schade, dass es der erste derartige Summit war – und nicht bereits der fünfte.
Dalibor Topić arbeitet als Java F/OSS Ambassador bei Sun Microsystems in Hamburg mit der OpenJDK Community daran Java in GNU/Linux Distributionen fest zu verankern und Portierungen auf neue Platformen in das OpenJDK Projekt einzubinden.















