Nashorn auf der JAX 2013

Project Nashorn: Zweite Chance für JavaScript auf der JVM

Claudia Fröhling

Viele Wege führen nach Rom und ebenso viele Wege führen auch auf die Java Virtual Machine. Das ist einer der Gründe, warum ihre Attraktivität ungebrochen ist. Wer sich als Entwickler mit JavaScript beschäftigt, dem stehen einige Wege und Mittel offen.

Seit den Anfängen der JVM Mitte der Neunziger wurde eine Vielzahl von Sprachen für die Plattform implementiert, die nicht zwingend mit Java verwandt waren. Genau das war der Sinn hinter Write Once/Run Anywhere: Das unabhängige Bytecode-Format lässt freie Hand, was kompiliert wird und auf der JVM laufen soll. So hat auch JavaScript seinen Weg hierher gefunden.

Aber wie genau passen nun JavaScript und die Java Virtual Machine zusammen, und wie können Entwickler hier Code zum Laufen bringen? Eine bekannte und schon in die Jahre gekommene Möglichkeit, ist die Open Source verfügbare JavaScript-Engine Rhino, die seinerzeit von Netscape ins Leben gerufen wurde und heute von der Mozilla Foundation verwaltet wird. Rhino zielt auf Server-seitige Anwendungen ab und wird in selbige eingebettet. Rhino ist übrigens komplett in Java geschrieben. So wie das Rhinozerus ein Tier mit Millionen Jahre alter Geschichte ist, so ist auch Rhino ein betagtes Projekt. Sieht man sich die offizielle Seite bei Mozilla an, entsteht schnell der Eindruck, dass an Rhino seit einiger Zeit nicht mehr gearbeitet wurde. Wer Rhinos Platz einnimmt, dazu später mehr.

Im Gegensatz zu Rhinos langjähriger Geschichte ist dynjs ein ganz jungfräuliches Projekt, das von Douglas Campos ins Leben gerufen wurde. Douglas arbeitet bei Red Hat und ist Project Lead der Mobile-Library AeroGear. dynjs entstand vor dem Hintergrund, Code bauen zu können, der neue Werkzeuge wie ASM und invokedynamic nutzen kann, erzählt Douglas im Interview mit dem Java Magazin, das in Kürze am Kiosk erhältlich sein wird. Da Rhinos Code nicht aktuell genug war, hat Douglas kurzerhand sein eigenes Projekt gestartet. Mittlerweile ist dynjs bereits in vert.x integriert, der nächste Schritt ist mit nodej ein Kompatibilitäts-Layer für Node.js.

Ein zweiter Anlauf

Fassen wir noch einmal zusammen: Auf der einen Seite gab es eine offizielle JavaScript Engine, die mit Java ausgeliefert, aber nicht mit hoher Priorität weiterentwickelt wurde. Eine Engine, die zwar im offiziellen Oracle-Package enthalten, aber nicht bei Oracle gebaut wurde. Auf der anderen Seite haben wir ein junges Projekt, das als Hobby begann und vor allem dank Red Hat zur starken Alternative aufgebaut wird. Diese Situation sorgte für ein Vakuum, das gefüllt werden musste. Das Ergebnis: Project Nashorn.

Nashorn wurde 2011 auf dem JVM Language Summit von Oracle erstmals angekündigt und stellt wie Rhino und dynjs eine JavaScript-Implementierung für die JVM dar. Als Teil von Java 8 wird Nashorn dieses Jahr verfügbar sein, der Code wurde bereits in das OpenJDK Repository überführt.

Die Namensgebung des Projekts war natürlich kein Zufall, „Nashorn“ ist das deutsche Wort für Rhinocerus und macht deutlich, dass Oracles Projekt die alte Engine von Mozilla beerbt. Es ist sozusagen JavaScripts zweite Chance für die JVM.

Auf der JAX hatten wir das Vergnügen mit Marcus Lagergren zu sprechen, der bei Oracle im Java Language Team arbeiten und am Donnerstag die Engine in seiner Keynote vorstellte.

Marcus‘ Keynote war eine Liebeserklärung an die Java Virtual Machine. Für ihn begann alles mit Sprachen wie Lisp und Smalltalk, die Grundsteine der JVM wie Class Libraries und Garbage Collection eingeführt hatten. Heute ist die JVM das Zuhause vieler Bibliotheken, Frameworks und Sprachen, vor allem der dynamischen Sprachen. „And dynamic languages are hot!“, so Marcus. Und Javascript im Speziellen erlebt eine wahre Renaissance. „It’s spreading like a forest fire right now!“

Wie Marcus auch im Interview oben bestätigt, ist invokedynamic ein enorm wichtiger Meilenstein für die polyglotte Entwicklung, und Nashorn ist sozusagen der Proof of Concept von invokedynamic. „We knew we must become the ultimate invokedynamic consumer“, resümierte Marcus in seiner Kenyote. Das macht Lust auf mehr und bestätigt ein weiteres Mal, dass das Java-Ökosystem „Alive and Kicking“ ist!

JVM prominent auf der JAX

Nicht nur das Projekt Nashorn zeigt, dass das Ökosystem rund um die Java Virtual Machine „Alive and Kicking“ ist. Noch viel mehr spannende JVM-Themen gab es am Donnerstag im Rahmen des „Around the JVM“ Special Days, moderiert von Arno Haase. Ziel des Tages war es, das technische Zusammenspiel der JVM mit der Umgebung, in der sie läuft – seien es Betriebssysteme, Netzwerkumgebungen, Prozessoren oder Virtualisierungsplattformen – zu beleuchten. Auch mit Arno hatten wir Gelegenheit, vorab zu sprechen.

Geschrieben von
Claudia Fröhling
Kommentare

Schreibe einen Kommentar

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