Definition „Oracle GraalVM“ Was ist GraalVM?

Autor / Redakteur: Egoloizos / Stephan Augsten

GraalVM ist eine von Oracle entwickelte Alternative zur JVM, sprich Java Virtual Machine. GraalVM soll mit seiner Funktionalität zur leistungsstärkeren Kompilierung von Java-Anwendungen beitragen. Als polyglotte VM kann GraalVM auch externe Bibliotheken einbinden.

Firmen zum Thema

Die selbst auf Java basierende GraalVM soll eine leistungsstarke Kompilierung von Java-Anwendungen erlauben.
Die selbst auf Java basierende GraalVM soll eine leistungsstarke Kompilierung von Java-Anwendungen erlauben.
(Bild: Oracle)

Die Bezeichnung GraalVM steht als Abkürzung für „General Recursive Applicative and Algorithmic Language Virtual Machine“. Das GraalVM-Projekt stammt aus dem Hause Oracle. Die GraalVM soll Entwicklern eine Möglichkeit der effizienteren Kompilierung von Java-Anwendungen geben. Die GraalVM fasst hierbei sämtliche Funktionen der GraalVM zusammen. Die Entwicklung der GraalVM begann im Jahre 2013.

Die Oracle Labs forschten seinerzeit an einer Virtual Machine für Java, die ihrerseits selbst in Java geschrieben ist. Die Java Virtual Machine selbst ist hingegen in den meisten Fällen in den Programmiersprachen C oder C++ geschrieben. Das Ziel GraalVM-Projekts ist eine Ersetzung der C- und C++-Anteile in den jetzigen JVM-Plattformen. Dadurch soll die Möglichkeit entstehen, die Vorteile der Java Virtual Machine auch in anderen Sprachen nutzbar zu machen.

Die GraalVM führt Java-basierte Programme schneller und effizienter aus, als es mittels der klassischen JVM möglich wäre. Der Code kann hierbei entweder direkt interpretiert oder in einem Compiler übersetzt werden. Dies lässt sich auf verschiedene Weisen realisieren. Dank der polyglotten Ausrichtung der GraalVM können damit auch andere Programme eingebunden werden.

Da die virtuelle Maschine nicht nur mit Java-Code umgehen kann, haben die Oracle Labs den Namen GraalVM und nicht etwa GraalJVM ausgewählt. Davon profitieren insbesondere Programme, die in anderen Programmiersprachen wie etwa Scala oder C geschrieben wurden.

Grundlagen und Funktionsweise der GraalVM

Eine wichtige Rolle in der Funktionsweise der GraalVM spielt der Compiler. Dieser basiert auf dem JVM Compiler Interface (JVMCI). Er ist imstande, Java-Anwendungen mit effizientem Maschinencode bereitzustellen und auf diese Weise zu beschleunigen. Der Compiler selbst ist in Java geschrieben, sodass sich Entwickler ganz auf diese Programmiersprache konzentrieren können und sich nicht zusätzlich mit C++ befassen müssen.

Der GraalVM-Compiler verfügt weiterhin über interne Optimierungsroutinen. Diese ermöglichen es dem Compiler, seine eigene Arbeit fortlaufend zu verbessern. Die Nutzung des Compilers erfordert den Download der GraalVM. Der Fokus dieses Compilers liegt auf Leistung. Die Anwendungen oder Apps sollen möglichst leistungsstark bereitgestellt werden.

Dies kann dazu führen, dass der Kompilierungsprozess mehr Zeit in Anspruch nimmt und die App damit mehr Ressourcen braucht. Dazu gehört insbesondere mehr Speicher. Das GraalVM-Native-Image stellt über den Compiler ebenso eine ausführbare Datei zur Verfügung. Ebenso können mit der GraalVM Anwendungen auch so realisiert werden, dass sie sich in möglichst kurzer Zeit vom Code zum laufenden Programm konvertieren lassen.

Die GraalVM und ihre Versionen

Grundsätzlich ist hinsichtlich der GraalVM zwischen der kostenlosen Community Edition und der kommerziellen Enterprise Edition zu unterscheiden. Der Graal-Quellcode ist bei GitHub zugänglich. Binärdateien Graals gibt es für Linux/X86-, Linux/ARM, Windows und macOS. Noch enthält die GraalVM zahlreiche Technologien, die aus anderen Projekten übernommen werden. Dazu gehören OpenJDK sowie Node.js.

Da diese nicht durch die GraalVM-Community gewartet oder aktualisiert werden, liegt die Verantwortung dieser Technologien bei ihren jeweiligen Entwicklern. Die kommerzielle Enterprise-Edition Graals bietet gemäß ihrer Entwickler sowohl eine verbesserte Leistung und Skalierbarkeit als auch eine erhöhte Sicherheit. Weiterhin bietet Oracle für die Enterprise-Edition einen Support rund um die Uhr. Die Enterprise-Edition lässt sich zeitlich begrenzt kostenlos testen.

Die Entwickler empfehlen aufgrund des stärkeren Compilers und der höheren Sicherheit für die betriebliche und professionelle Nutzung die Enterprise Edition an Stelle der kostenlosen Community-Version. Grundsätzlich ist jedoch auch die Community-Edition in der professionellen Anwendung nutzbar. Zu berücksichtigen ist, dass die Community-Version nicht den vollumfänglichen Oracle-Support bietet.

Substrate VM als Bestandteil des GraalVM-Projekts

Ein wichtiger Bestandteil des Graal-Projekts ist die SubstrateVM, welche dazu dient, den Nutzern ein Kommandozeilen-Tool zur Verfügung zu stellen. Die schlanke und in Java geschriebene Virtual Machine übernimmt Aufgaben der JVM in finalen Binary. Dazu gehören etwa Thread Management und Garbage Collection.

Die Substrate VM wird an Stelle der JVM genutzt. Sie bietet nicht die maximal mögliche Leistung einer App, sorgt jedoch für einen schnellen Start der App. Dies ist besonders für Serverless-Anwendungen interessant. Ebenso profitieren Programme mit kürzerer Laufzeit davon. Dank der Substrate VM benötigen Programme weniger Ressourcen und können schneller starten.

Weitere Optionen und Möglichkeiten der GraalVM

Über die Java-Anwendungen und deren leistungsoptimierte Kompilierung hinaus, verfügt GraalVM noch über weitere Eigenschaften und Möglichkeiten. Gegenwärtig lassen sich auch Node.js, Ruby, R und Python über die GraalVM ausführen. Damit profitieren auch die in diesen Sprachen geschriebenen Programme von den gleichen Möglichkeiten in der GraalVM-Kompilierung wie Java-Anwendungen.

Aufgrund dieser generellen Unterstützung lassen sich auch solche Anwendungen betreiben, die aus Java heraus Zugriff auf Module haben, die in anderen Sprachen entworfen worden sind. Die Einbindung von Bibliotheken aus anderen Sprachen in die Java-Anwendungen ist aufgrund des polyglotten Charakters der GraalVM problemlos möglich.

(ID:47037394)