Oracle GraalVM

Disponible avec l'abonnement à Java SE Universal sans coût supplémentaire, il permet de développer des applications Java innovantes en créant des applications basées sur des microservices pour des déploiements natifs du cloud avec à la clé de meilleures performances et des économies.

Qu'est-ce qu'Oracle GraalVM ?

GraalVM, définition

Oracle GraalVM est un JDK à hautes performances qui peut accélérer les applications Java et JVM en utilisant un compilateur juste à temps (JIT). Il réduit la latence des applications, améliore le débit de pointe en réduisant le temps de collecte des déchets et est accompagné d'un support Oracle 24h/24 et 7j/7.

Il existe également un utilitaire d'image native qui compile le bytecode Java en amont (AOT) et génère des exécutables natifs pour certaines applications qui démarrent presque instantanément et utilisent très peu de ressources mémoire.

GraalVM (compilateur Graal, Truffle et Oracle Java Development Kit [JDK])

GraalVM est né en 2011 d'un projet de recherche d'Oracle Labs visant à créer une plateforme d'exécution capable d'exécuter plusieurs langages de programmation avec des performances élevées. Le cœur du projet GraalVM est le compilateur GraalVM à optimisation avancée, qui est utilisé comme compilateur juste-à-temps (JIT) pour la machine virtuelle Java (JVM) ou par la fonction d'image native GraalVM pour compiler les bytecodes Java en avance sur le temps en code machine natif. Le cadre d'implémentation du langage Truffle de GraalVM fonctionne avec le compilateur GraalVM pour exécuter JavaScript, Python, Ruby et d'autres langages pris en charge sur la JVM avec des performances exceptionnelles.

Lorsque GraalVM est activé en mode JIT, la JVM utilise le compilateur GraalVM Enterprise JI pour créer un code machine adapté à la plateforme à partir du bytecode Java pendant l'exécution de l'application. La compilation est effectuée de manière incrémentielle pendant l'exécution du programme, avec une optimisation supplémentaire appliquée au code qui est fréquemment exécuté. Cette approche garantit que le code dans les hotspots s'exécute extrêmement rapidement grâce à un inlining agressif, une analyse d'échappement partiel et d'autres optimisations avancées. Certaines optimisations réduisent les allocations d'objets, ce qui diminue la charge du ramasseur de déchets. Cela permet d'améliorer les performances maximales des applications à long terme.

L'utilitaire d'image native GraalVM peut également compiler le bytecode Java pour générer des exécutables machine natifs en amont (c'est-à-dire au moment de la construction). Ces exécutables démarrent presque instantanément et consomment une fraction de la mémoire qui serait utilisée par la même application Java tournant sur la JVM. Les exécutables natifs sont également compacts car ils n'incluent que les classes, les méthodes et les bibliothèques dépendantes dont l'application a besoin.

GraalVM prend également en charge l'interopérabilité multilingue grâce au cadre d'implémentation linguistique Truffle. Truffle permet aux programmes écrits dans des langages pris en charge d'utiliser des bibliothèques multilingues. Par exemple, un programme JavaScript peut appeler des méthodes Ruby et partager des valeurs sans faire de copies. Lorsqu'il est exécuté sur une JVM, Truffle collabore avec le compilateur GraalVM pour compiler les langues prises en charge en code machine natif afin d'obtenir des performances optimales, tout comme Java.

Pour en savoir plus sur le compilateur GraalVM, lisez l'eBook GraalVM pour les nuls

Oracle GraalVM

Le compilateur de GraalVM comprend plusieurs algorithmes d'optimisation supplémentaires qui améliorent significativement les performances et la consommation de ressources. L'image native de GraalVM prend en charge un certain nombre de fonctionnalités avancées, notamment le nettoyage de la mémoire G1, les pointeurs compressés et l'optimisation guidée par profil qui aide le compilateur à générer un code plus efficace.

GraalVM est inclus dans l'abonnement Java SE sans coût supplémentaire. Il comprend un support 24/7 par Oracle avec accès aux correctifs de sécurité et aux mises à jour du chemin critique pour des performances et une fiabilité plus prévisibles. Pour la migration de Java vers le cloud, GraalVM peut être utilisé gratuitement sur Oracle Cloud Infrastructure (OCI).

Pourquoi utiliser Oracle GraalVM ?

GraalVM peut permettre aux développeurs de construire un code plus efficace, avec une meilleure isolation et une plus grande agilité pour les environnements cloud ou hybrides. Voici quelques-unes des raisons pour lesquelles de plus en plus d'entreprises utilisent aujourd'hui GraalVM :

  • S'adapter rapidement à un marché en mutation. Les applications métier d'aujourd'hui doivent traiter des volumes croissants de données et répondre rapidement aux demandes des clients. Les applications Java peuvent évoluer pour suivre le rythme, ce qui aide les développeurs à améliorer l'efficacité des performances des applications tout en réduisant les coûts informatiques.
  • Capacité à créer des applications Java modernes qui utilisent des microservices et des conteneurs pour les applications cloud native. Les microservices sont de petites mini-applications indépendantes qui remplissent une seule fonction. Les applications d'entreprise exploitent généralement des centaines de services et chacun d'entre eux doit démarrer rapidement pour minimiser la latence et réduire les coûts de consommation du cloud. En d'autres termes, ne payez que ce que vous utilisez.
  • Améliorer la productivité des développeurs en cultivant un écosystème où différents langages de programmation peuvent fonctionner ensemble sur une JVM.

Cas d'utilisation de GraalVM

Améliorer les performances et étendre les applications Java existantes

Grâce aux innovations de GraalVM, le code Java peut plus facilement s'adapter aux exigences informatiques actuelles avec des performances plus élevées pour répondre rapidement aux besoins des clients. L'optimiseur avancé améliore le débit de pointe. Il optimise également la consommation de mémoire en minimisant les allocations d'objets afin de réduire le temps consacré à la collecte des déchets. GraalVM en mode JIT peut améliorer les performances jusqu'à 50 %. La mémoire est ainsi libérée plus rapidement, ce qui permet d'exécuter d'autres charges de travail sur la même infrastructure et de réduire les coûts informatiques.

Créer des applications cloud natives

L'utilitaire d'image native de GraalVM compile à l'avance les applications Java en exécutables natifs. Les exécutables natifs démarrent presque 100 fois plus vite et consomment jusqu'à 5 fois moins de mémoire qu'avec une JVM.

GraalVM Enterprise Native 
Figure 1 – Les exécutables natifs démarrent presque instantanément et consomment très peu de mémoire par rapport à Go ou Java HotSpot.

Alors que les entreprises déplacent leurs charges de travail vers le cloud et paient à l'heure pour l'utilisation des ressources système, GraalVM peut les aider à réaliser des économies de coûts opérationnels. Ces résultats rendent les exécutables natifs générés par GraalVM idéaux pour le déploiement de microservices, un domaine pris en charge par les principaux cadres de microservices, tels que Helidon, Micronaut, Quarkus et Spring Boot.

Développer des programmes multilingues et améliorer la productivité

Vous pouvez exécuter Java et d'autres langages, tels que JavaScript, sur la JVM avec d'excellentes performances. La solution SuiteScript d'Oracle NetSuite est un langage d'extension permettant aux utilisateurs finals de personnaliser les applications exécutées sur NetSuite. Oracle GraalVM a permis à NetSuite d'intégrer un moteur d'exécution JavaScript basé sur Truffle, capable de compiler des instructions JavaScript en code machine qui s'exécute 4 fois plus rapidement que SuiteScript sur la JVM.

Comment améliorer les performances et l'efficacité des applications

GraalVM comprend un compilateur optimiseur avancé qui génère du code machine pendant l'exécution du programme JIT pour améliorer les performances des applications Java. En compilant à l'avance, l'image native démarre rapidement et utilise moins de mémoire, ce qui la rend idéale pour le déploiement de l'informatique dématérialisée. Il prend en charge les programmes multilingues afin d'améliorer la productivité en permettant aux développeurs d'utiliser les meilleures bibliothèques nécessaires pour résoudre les problèmes de l'entreprise, quelle que soit la langue dans laquelle elles sont écrites.