Oracle GraalVM ist ein leistungsstarkes JDK, das die Performance von Java und JVM-basierten Anwendungen mithilfe eines alternativen Just-in-Time (JIT)-Compilers beschleunigen kann. Es reduziert die Anwendungslatenz, verbessert den Durchsatz bei Spitzen durch die Reduzierung des Zeitaufwands für die Garbage Collection und beinhaltet einen Rund-um-die-Uhr-Support durch Oracle.
Außerdem verfügt es über ein natives Image-Dienstprogramm, dass Java-Bytecode im Voraus (Ahead-of-Time, AOT) kompiliert und für einige Anwendungen native ausführbare Dateien erzeugt, die beinahe sofort starten und nur minimalen Speicherplatz belegen.
GraalVM nahm seinen Anfang 2011 als Forschungsprojekt in den Oracle Labs, bei dem eine Laufzeitplattform entwickelt werden sollte, die mehrere Programmiersprachen mit hoher Performance ausführen sollte. Der Kern des GraalVM-Projekts ist der GraalVM-Compiler zur erweiterten Optimierung, der als Just-in-Time (JIT)-Compiler für die Java Virtual Machine (JVM) oder das native GraalVM-Image-Dienstprogramm verwendet wird, um Java-Bytecodes im Voraus in nativen Maschinencode zu kompilieren. Das Truffle-Framework zur Sprachimplementierung von GraalVM kooperiert mit dem GraalVM-Compiler bei der Ausführung von JavaScript, Python, Ruby und weiteren unterstützten Sprachen auf JVM, wobei eine überragende Performance erreicht wird.
Bei der Verwendung von GraalVM im JIT-Modus, nutzt die JVM den GraalVM JIT-Compiler, um während der Ausführung der Anwendung aus dem Java-Bytecode einen Plattform-spezifischen Maschinencode zu erstellen. Die Kompilierung findet dabei inkrementell während der Programmausführung statt, wobei Code, der häufig ausgeführt wird, noch einmal besonders optimiert wird. Dieser Ansatz stellt sicher, dass Code in Hotspots extrem schnell ausgeführt werden kann – dank eines aggressiven Inlinings, einer partiellen Escape-Analyse und anderen erweiterten Optimierungen. Einige Optimierungen reduzieren die Objektzuweisungen, wodurch sich die Belastung des Garbage Collectors verringert. Dadurch verbessert sich bei Anwendungen mit langer Ausführungszeit die Spitzenperformance.
Das native Image-Dienstprogramm von GraalVM kann ebenfalls Java-Bytecode kompilieren, um im Voraus (d. h. während der Erstellung) native ausführbare Dateien in Maschinencode zu generieren. Diese ausführbaren Dateien starten beinahe sofort und belegen nur einen Bruchteil des Speicherplatzes, der sonst von der selben Java-Anwendung benötigt würde, die auf der JVM ausgeführt wird. Zudem sind die nativen ausführbaren Dateien kompakt, sodass sie nur die Klassen, Methoden und abhängigen Librarys enthalten, welche die Anwendung benötigt.
GraalVM unterstützt auch die Interoperabilität zwischen mehreren Sprachen über das Truffle-Framework zur Sprachenimplementierung. Truffle ermöglicht es Programmen, die in unterstützten Sprachen erstellt worden sind, mehrsprachige Librarys zu verwenden. Ein Java Script-Programm kann so zum Beispiel Ruby-Methoden aufrufen und Werte teilen, ohne dass Kopien erstellt werden müssen. Bei der Ausführung auf JVM arbeitet Truffle mit dem GraalVM-Compiler zusammen, um, genau wie Java, unterstützte Sprachen zu nativem Maschinencode zu kompilieren, um eine optimale Leistung zu gewährleisten.
Mehr über den GraalVM-Compiler erfahren, E-Book „GraalVM für Dummies“ lesen
Der Compiler von GraalVM beinhaltet zahlreiche zusätzliche Optimierungsalgorithmen, die erhebliche Verbesserungen bei der Performance und beim Ressourcenverbrauch ermöglichen. Die nativen Image-Funktionen von GraalVM unterstützen eine Reihe erweiterter Funktionen wie den G1 Garbage Collector, komprimierte Zeiger und die angeleitete Optimierung von Profilen, mit deren Hilfe der Compiler einen effizienteren Code erstellen kann.
GraalVM ist ohne zusätzliche Kosten in Java SE-Produkten enthalten. Es beinhaltet einen 24-Stunden-Support durch Oracle mit Zugriff auf Sicherheitsfixes und kritische Pfadupdates, um eine besser vorhersagbare Performance und Zuverlässigkeit sicherzustellen. GraalVM kann kostenlos auf Oracle Cloud Infrastructure (OCI) für die Java-Migration in die Cloud verwendet werden.
GraalVM ermöglicht Entwicklern die Erstellung eines effizienteren Codes, der eine bessere Isolierung und Agilität für Cloud-Umgebungen oder hybride Umgebungen aufweist. Hier sind einige Gründe aufgeführt, warum immer mehr Unternehmen heute GraalVM verwenden:
Die Innovationen von GraalVM ermöglichen Java-Code mit den heutigen Computing-Anforderungen Schritt zu halten, indem sie für eine höhere Leistung sorgen, um schneller auf Kundenbedürfnisse reagieren zu können. Der erweiterte Optimizer verbessert den Spitzendurchsatz. Außerdem optimiert er den Speicherverbrauch, indem er die Objektzuweisungen minimiert, um den Zeitaufwand für die Garbage Collection zu reduzieren. Eine im JIT-Modus ausgeführte GraalVM kann die Performance um bis zu 50 % steigern. Dadurch wird schneller wieder Speicher frei, sodass Sie andere Workloads auf der selben Infrastruktur ausführen und damit die IT-Kosten reduzieren können.
Erstellung nativer Cloud-AnwendungenDie native Image-Servicefunktion von Oracle GraalVM kompiliert Java-Anwendungen im Voraus in binären Maschinencode. Die nativen ausführbaren Dateien starten fast 100-mal schneller und verbrauchen bis zu 5-mal weniger Speicher.
Unternehmen verlagern ihre Workloads in die Cloud und zahlen dabei für die stundenweise Nutzung von Systemressourcen. GraalVM hilft ihnen dabei, hier Betriebskosteneinsparungen zu realisieren. Diese Ergebnisse machen mit GraalVM generierte native ausführbare Dateien ideal für die Bereitstellung von Microservices, ein Bereich, der von führenden Microservice-Frameworks wie Helidon, Micronaut, Quarkus, und Spring Boot unterstützt wird.
Entwicklung mehrsprachiger Programme und Verbesserung der ProduktivitätSie können Java und andere Sprachen wie JavaScript mit hervorragender Performance auf der JVM ausführen. SuiteScript von Oracle NetSuite ist eine Erweiterungssprache für Endbenutzer, mit der sie Anwendungen, die auf NetSuite ausgeführt werden, anpassen können. Oracle GraalVM ermöglicht NetSuite, eine Truffle-basierte JavaScript-Laufzeit zu integrieren, die JavaScript in Maschinencode kompilieren kann, der viermal schneller ausgeführt wird als SuiteScript bei der Ausführung auf der JVM.
GraalVM umfasst einen erweiterten Optimierungscompiler, der Maschinencode generiert, während das Programm JIT ausführt, um die Leistung von Java-Anwendungen zu beschleunigen. Durch die Kompilierung im Voraus startet das native Image schnell und belegt weniger Speicher. Dadurch ist es ideal für die native Cloud-Bereitstellung geeignet. Die Lösung unterstützt mehrsprachige Programme, um die Produktivität zu verbessern, indem sie es Entwicklern ermöglicht, die besten Librarys zu verwenden, die sie zur Lösung von Geschäftsproblemen benötigen – unabhängig davon, in welcher Sprache sie geschrieben sind.