Oracle GraalVM

Die Lösung ist ohne zusätzliche Kosten zusammen mit Java SE Universal Subscription erhältlich, um eine moderne Java-Anwendungsentwicklung zu ermöglichen, bei der Anwendungen auf Microservice-Basis mit besserer Leistung und geringeren Kosten für native Cloud-Bereitstellungen erstellt werden.

Was ist Oracle GraalVM?

Definition von GraalVM

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 (Graal-Compiler, Truffle und Oracle Java Development Kit [JDK])

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

Oracle GraalVM

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.

Gründe für die Nutzung von Oracle GraalVM

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:

  • Schnelle Anpassung an einen sich ändernden Markt Geschäftsanwendungen müssen heute wachsende Datenmengen verarbeiten und schnell auf Kundenanfragen reagieren. Java-Anwendungen können weiterentwickelt werden, um mit der Marktentwicklung mithalten zu können. Dadurch können Entwickler die Anwendungsperformance steigern und die IT-Kosten reduzieren.
  • Es können moderne Java-Anwendungen erstellt werden, die Microservices und Container für native Clouds verwenden. Microservices sind kleine, unabhängige Mini-Anwendungen, die eine einzige Funktion ausführen. Geschäftsanwendungen nutzen üblicherweise Hunderte von Services und jeder davon muss so schnell wie möglich gestartet werden ,um die Latenzen zu minimieren und die Verbrauchskosten der Cloud zu reduzieren. In anderen Worten: Zahlen Sie nur für das, was Sie auch nutzen.
  • Verbessern Sie die Produktivität von Entwicklern, indem Sie ein Ökosystem kultivieren, bei dem verschiedene Programmiersprachen auf einer JVM zusammenarbeiten können.

GraalVM-Anwendungsfälle

Performancesteigerung und Erweiterung bestehender Java-Anwendungen

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-Anwendungen

Die 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 fünfmal weniger Speicher im Vergleich zur Ausführung auf einer JVM.

Natives GraalVM Enterprise
Abbildung 1 – Native ausführbare Dateien starten beinahe sofort und verbrauchen im Vergleich zu Go oder Java HotSpot nur wenig 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ät

Sie 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.

So verbessern Sie die Anwendungsperformance und -effizienz

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.