Oracle GraalVM is een geavanceerde Java Development Kit (JDK) die de prestaties van Java- en JVM-applicaties kan versnellen door middel van een alternatieve JIT-compiler (just-in-time). GraalVM Enterprise beperkt de vertraging van applicaties, verbetert de piekdoorvoer door de tijd voor het verzamelen van afval te verminderen en wordt geleverd met 24/7 ondersteuning van Oracle.
Ook is er een hulpprogramma voor native images beschikbaar waarmee Java-bytecode ahead-of-time (AOT) wordt gecompileerd en native uitvoerbare bestanden worden gegenereerd voor bepaalde applicaties die bijna direct worden opgestart en die zeer weinig geheugenresources gebruiken.
GraalVM is in 2011 gestart als een onderzoeksproject van Oracle Labs om een runtimeplatform te creëren voor het uitvoeren van meerdere programmeertalen met hoge prestaties. De kern van het GraalVM-project bestaat uit een geavanceerde optimalisatiecompiler, die wordt gebruikt als een JIT-compiler (just-in-time) voor de Java Virtual Machine (JVM) of door de GraalVM-functie voor native images om Java-bytecode ahead-of-time te compileren naar native machinecode. Het Truffle-framework van GraalVM voor taalimplementatie werkt samen met de GraalVM-compiler om JavaScript, Python, Ruby en andere ondersteunde talen voor de JVM uit te voeren met uitstekende prestaties als resultaat.
Wanneer GraalVM in de JIT-modus wordt gebruikt, maakt de JVM tijdens het uitvoeren van de applicatie gebruik van de GraalVM JIT-compiler om platformspecifieke machinecode te maken op basis van Java-bytecode. De compilatie wordt incrementeel uitgevoerd tijdens de uitvoering van het programma. Hierbij wordt code die regelmatig wordt uitgevoerd extra geoptimaliseerd. Deze benadering zorgt ervoor dat code in hotspots extreem snel wordt uitgevoerd dankzij agressieve inlining, partiële ontsnappingsanalyse en andere geavanceerde optimalisatie. Sommige optimalisaties verminderen objecttoewijzingen, waardoor de last op de Garbage Collector wordt verminderd. Dit helpt de piekprestaties van langlopende applicaties te verbeteren.
Met het GraalVM-hulpprogramma voor native images kan ook Java-bytecode worden gecompileerd om ahead-of-time (bijvoorbeeld tijdens het bouwen) native uitvoerbare computerbestanden te genereren. Deze uitvoerbare bestanden worden bijna direct opgestart en verbruiken slechts een fractie van het geheugen dat door dezelfde Java-applicatie op de JVM zou worden gebruikt. Native uitvoerbare bestanden zijn ook compact omdat ze alleen de klassen, methoden en afhankelijke bibliotheken bevatten die de applicatie vereist.
GraalVM ondersteunt ook interoperabiliteit met meerdere talen via het Truffle-framework voor taalimplementatie. Dankzij Truffle kunnen programma's die in ondersteunde talen zijn geschreven, gebruikmaken van meertalige bibliotheken. Een JavaScript-programma kan bijvoorbeeld Ruby-methoden aanroepen en waarden delen zonder kopieën te maken. Truffle werkt samen met de GraalVM-compiler om ondersteunde talen te compileren naar native machinecode voor optimale prestaties, net als Java.
Voor meer informatie over de GraalVM-compiler leest u het eBook GraalVM voor dummies.
De compiler van GraalVM bevat een aantal aanvullende optimalisatiealgoritmen die aanzienlijke verbeteringen bieden voor de prestaties en het verbruik van resources. De functies van GraalVM voor native images bieden ondersteuning voor een aantal geavanceerde functies, zoals de G1 Garbage Collector, gecomprimeerde pointers en profielgestuurde optimalisatie waarmee de compiler efficiëntere code kan genereren.
GraalVM is gratis inbegrepen bij Java SE-producten. GraalVM Enterprise wordt 24/7 ondersteund door Oracle. U hebt toegang tot beveiligingsfixes en updates van kritieke paden voor meer voorspelbare prestaties en een grotere betrouwbaarheid. Voor Java-migratie naar de cloud kan GraalVM gratis worden gebruikt op Oracle Cloud Infrastructure (OCI).
Met GraalVM kunnen ontwikkelaars efficiëntere code bouwen met betere isolatie en meer flexibiliteit voor cloud- of hybride omgevingen. Hier volgen enkele redenen waarom steeds meer bedrijven voor GraalVM kiezen:
Dankzij GraalVM-innovaties kan Java-code voldoen aan de hedendaagse vereisten voor computergebruik en kan er sneller worden ingespeeld op de behoeften van klanten. Met de geavanceerde optimizer wordt de piekdoorvoer verbeterd. Ook wordt het geheugengebruik geoptimaliseerd door objecttoewijzingen te minimaliseren en zo tijd te besparen bij het verzamelen van afval. Met GraalVM in de JIT-modus kunnen de prestaties tot 50% worden verbeterd. Zo wordt er eerder geheugen vrijgemaakt en kunt u andere workloads uitvoeren op dezelfde infrastructuur en de IT-kosten verlagen.
Cloudnative applicaties bouwenMet het hulpprogramma van Oracle GraalVM voor native images worden Java-applicaties met bytecode ahead-of-time gecompileerd naar binaire machinecode. De native uitvoerbare bestanden worden bijna 100 keer sneller opgestart en verbruiken tot 5 keer minder geheugen dan bij uitvoering op een JVM.
Wanneer organisaties workloads naar de cloud verplaatsen en per uur betalen voor het gebruik van systeemresources, kan GraalVM helpen de operationele kosten te verlagen. Deze resultaten maken door GraalVM gegenereerde native uitvoerbare bestanden ideaal voor het implementeren van microservices, een taak die door belangrijke microserviceframeworks zoals Helidon, Micronaut, Quarkus en Spring Boot wordt ondersteund.
Meertalige programma's ontwikkelen en de productiviteit verbeterenHet uitvoeren van Java en andere talen, zoals JavaScript, op de JVM levert uitstekende prestaties op. SuiteScript van Oracle NetSuite is een uitbreidingstaal voor eindgebruikers voor het aanpassen van applicaties die op NetSuite worden uitgevoerd. Met Oracle GraalVM kan NetSuite een op Truffle gebaseerde JavaScript-runtime insluiten waarmee JavaScript kan worden gecompileerd naar machinecode die 4 keer sneller wordt uitgevoerd dan SuiteScript op de JVM.
GraalVM omvat een geavanceerde optimalisatiecompiler die machinecode genereert terwijl het programma just-in-time wordt uitgevoerd om de prestaties van Java-applicaties te versnellen. Door ahead-of-time te compileren, wordt de native image snel opgestart en wordt er minder geheugen gebruikt. Dit is de ideale situatie voor cloudnative implementatie. Er wordt ondersteuning geboden voor meertalige programma's om de productiviteit te verbeteren. Hierdoor kunnen ontwikkelaars gebruikmaken van de allerbeste bibliotheken om bedrijfsproblemen op te lossen, ongeacht de taal waarin ze zijn geschreven.