Microservices : Oracle intègre GraalVM Enterprise à Java SE Subscription
Le compilateur GraalVM Enterprise est désormais disponible dans la distribution commerciale Java SE. Il s’agit toujours et encore de proposer une solution afin d’accélérer le lancement des microservices.
Oracle ajoute son compilateur GraalVM sans frais supplémentaires à l’abonnement Java SE (Standard Edition) pour aider les développeurs à créer des microservices « cloud natif » sur la plateforme Java.
« GraalVM est la technologie de compilation Java d’Oracle qui améliore les performances des applications et permet un démarrage quasi instantané des microservices sans coût additionnel », déclare Shaun Smith, directeur de la gestion des produits GraalVM d’Oracle Labs.
Ce serait même plutôt l’inverse d’ailleurs, cette technologie comprend à la fois un compilateur Just in Time (JIT) pour exécuter les programmes sur la VM HotSpot, ainsi qu’un autre Ahead of Time (AOT) pour obtenir un exécutable natif basé sur GraalVM Native Image. GraalVM a été pensé comme la machine virtuelle polyglotte complémentaire de la JVM et de Hotspot. Son avantage principal tient dans sa faible empreinte mémoire.
Des microservices Java moins gourmands en ressources
Un compilateur JIT est une caractéristique de l’interpréteur d’exécution qui, au lieu d’interpréter le code binaire chaque fois qu’une méthode est invoquée, compile le code binaire dans les instructions du code machine de la VM en cours d’exécution, puis invoque ce code objet à la place.
Parallèlement, la technique AOT correspond à l’acte de compiler un langage de programmation de niveau supérieur à l’instar de C ou C++, ou une représentation intermédiaire comme le bytecode Java, en un code machine de sorte que le fichier binaire résultant puisse s’exécuter en natif.
En savoir plus sur le fonctionnement de GraalVM :
GraalVM ou l’espoir de faire passer Java à l’ère du serverless
« Oracle travaille sur sa technologie d’optimisation des compilateurs depuis 10 ans dans les laboratoires Oracle », assure Shaun Smith. « GraalVM offre des temps d’exécution plus rapides et une empreinte matérielle plus faible qui peut réduire les coûts ».
Le succès de GraalVM est évident. Les frameworks de microservices les plus populaires tels que Spring, Micronaut, Quarkus, Tomcat, Netty et Helidon soutiennent GraalVM.
« Pour moi, GraalVM représente une excellente voie par laquelle Java peut attirer les développeurs construisant des logiciels modernes et containerisés via le support de Quarkus, Micronaut et Helidon, car GraalVM permet des temps de démarrage accélérés et réduit les besoins en mémoire pour l’exécution », valide Brad Shimmin, analyste chez Omdia.
« De plus, le travail en cours au sein de GraalVM Enterprise pour faire coexister des langages disparates dans le même runtime est passionnant du point de vue des développeurs », renchérit-il.
« Bien qu’ils ne soient pas encore achevés… GraalVM peut exécuter non seulement Java et les langages basés sur Java comme Scala, mais aussi des langages de script populaire tels Ruby, R et Python », rappelle Brad Shimmin. « Cela ajouté à la nature intégrable de GraalVM – par exemple, il peut fonctionner dans la base de données Oracle – ouvre un certain nombre de portes intéressantes pour les programmeurs d’entreprise qui créent des logiciels embarquant de l’intelligence artificielle en plus des applications traditionnelles côté serveur, côté client ou en mode edge computing ».
Le modèle de soubscription de Java SE
« Oracle est passé au modèle à la souscription pour Java SE il y a deux ans, pour s’aligner sur le fonctionnement des processus d’approvisionnement modernes », précise Donald Smith, directeur principal de la gestion des produits chez Oracle.
La souscription à Java SE est annualisée, mais s’appuie sur une tarification mensuelle. Pour les utilisateurs de la version desktop, le prix est de 2,50 dollars par utilisateur et par mois. Pour les serveurs et les systèmes en cloud, le tarif est de 25 dollars par processeur, par mois. Des réductions de volume progressives sont disponibles pour les grandes entreprises et cette version commerciale est gratuite pour les organisations clientes d’OCI (Oracle Cloud Infrastructure). L’abonnement comprend également une assistance 24 h/24 et 7 j/7 ainsi que des mises à jour de performance, de stabilité et de sécurité.
« Oracle ajoute continuellement de la valeur à Java SE », vante Smith. « Nous nous concentrons sur l’innovation de la plateforme Java pour qu’elle reste pertinente et intéressante pour le développement d’applications modernes ».
« GraalVM Enterprise contient plus de 60 optimisations de compilateurs. Il a également une empreinte mémoire plus faible, un débit plus élevé, une utilisation plus modérée du processeur et une réduction des frais de collecte des déchets », liste Donald Smith.
Oracle joue la carte du support pour les entreprises qui n’auraient pas confiance en la version communautaire.
GraalVM on Truffle : une machine virtuelle « méta-circulaire »
À la fin du mois de janvier 2020, Oleg Selajev, developer avocate pour GraalVM chez OracleLabs, a annoncé la version 21.0 du projet sous licence GPLv2. En plus d’améliorer la compatibilité avec Python, Ruby et JavaScript, celle-ci introduit Java on Truffle, une troisième manière expérimentale d’exécuter des programmes Java sur la JVM via la librairie de langage Truffle. Cela donne naissance à une « machine virtuelle métacirculaire ». Elle peut s’exécuter elle-même avec pour contrepartie une baisse de performance à chaque ajout d’un niveau de complexité. Cette méthode est pour l’instant deux à trois fois moins compétente qu’une VM HotSpot. Pour autant, elle permet de combiner en une seule image native les compilations JIT et AOT. Cela apporterait un meilleur support du code dynamique de certaines applications.
Brad ShimminAnalyste, Omdia.
Cependant, il faut noter que GraalVM évoluera sans doute sous l’influence du projet Leyden, pensé pour réduire encore et toujours l’empreinte de Java grâce à des images statiques.
En attendant, « les développeurs travaillant avec GraalVM peuvent organiser des structures de données très efficaces qui sont accessibles pour des programmes à code hybride écrits à la fois en C et en Node.js, par exemple », avance Brad Shimmin. « L’extension de cette notion aux applications complexes qui couvrent Java et R, pourrait aider les entreprises à déployer des logiciels beaucoup plus optimisés sans avoir à refactoriser leurs composants d’un langage à un autre ».