GraalVM – oder die Zukunft der JVM hat begonnen

Die GraalVM ist nun offiziell released. Nach 7 Jahren Forschung und Entwicklung verteilt über verschiedene Standorte in der ganzen Welt, hat Oracle die erste Version der GraalVM 19.0 offiziell freigegeben. Geplant sind jährlich ein grosser Release und mehrere kleinere Releases während des Jahres. Massgeblich an der Entwicklung der VM beteiligt ist Thomas Wuerthinger von den Oracle Labs in Zürich. Aber was genau ist die GraalVM und was macht sie so speziell?

Die GraalVM ist eine Standard JVM (aktuell vom OpenJDK 1.8; Upgrades auf 11 oder später sind geplant), wo der JIT-Compiler (C1 und C2) durch den Graal Compiler ausgewechselt wird. Möglich ist dies durch JEP 243 (Java-Level JVM Compiler Interface). Der Graal Compiler selbst ist ein neuer (in Java geschriebener) Compiler, der hochoptimierten Code erzeugen kann. Speziell im Bereich “Escape Analysis” setzt er neue Massstäbe.

Der Name GraalVM verrät es bereits: es ist keine reine JVM, es ist eine VM, die verschiedene Sprachen unterstützt.

  • Alle Sprachen die Byte Code erzeugen (Java, Scala, Kotlin etc.), laufen unverändert auf der GraalVM. Die Performance ist generell besser als bei der normalen JVM mit dem C2 Compiler.
  • Die GraalVM ist polyglot. Unterstützt werden ,neben den JVM Sprachen, Javascript R. Python und Ruby. Diese befinden sich aber noch in einem früheren Implementations-Stand. Speziell ist, dass man die Sprachen in einem Projekt oder sogar im gleichen (Source Code File) mixen kann und dass die Kosten für den Kontext Switch von einer Sprache zur anderen optimiert wurden, was sich direkt an der besseren Performance zeigt.
  • Die GraalVM unterstützt auch eine AOT (Ahead-Of-Time) Compilation, bei der die gesamte Java Applikation vor der Ausführung in Maschinencode übersetzt wird. Das generierte Binary kann dann ohne JRE ausgeführt werden. Das Binary ist sehr klein und die Startupzeiten sehr schnell. Sicherlich ein Ansatz der bestens in die Welt von Docker und Microservices passt.

Fazit:

Die GraalVM ist ein Meilenstein in der Geschichte von Java und der Ausführung von Java. Technologisch ein Meisterwerk. Es ist sicherlich kein Zufall, dass Twitter bereits die GraalVM produktiv einsetzt. Es bleibt zu hoffen, dass sich die GraalVM auch politisch gegen die HotSpot mit dem C2 Compiler durchsetzten wird.

Kommentare sind geschlossen.