GraalVM : Oracle annonce une machine virtuelle polyglotte

Conçue pour supporter plusieurs langages sans sacrifier la performance

Oracle vient de lancer GraalVM 1.0, une machine virtuelle universelle conçue pour supporter plusieurs langages, et en même temps, tourner avec la même performance, outils et configuration.

« GraalVM est une machine virtuelle universelle pour exécuter des applications écrites en JavaScript, Python, Ruby, R, les langages de JVM comme Java, Scala, Kotlin, et les langages LLVM comme C et C++, » peut-on lire sur le site du projet.

« GraalVM supprime l’isolation entre les langages de programmation et permet l’interopérabilité dans un environnement runtime. Elle peut s’exécuter seule ou bien dans le contexte du OpenJDK, Node.js, Oracle Database, ou MySQL. »

Selon Oracle, les machines virtuelles actuelles fournissent une haute performance d’exécution de programmes seulement pour un langage spécifique ou un nombre limité de langages. En conséquence, la compilation, la gestion de mémoire et les outils sont maintenus séparément pour différents langages, ce qui contredit le principe DRY (don’t repeat yourself). Cette réalité nuit non seulement aux exécutants de machines virtuelles, mais aussi aux développeurs qui doivent gérer plusieurs facteurs non uniformes, notamment la performance et la configuration. De plus, faire communiquer des programmes écrits en différents langages requiert une logique coûteuse de sérialisation et desérialisation.

C’est pourquoi Oracle a entrepris d’adresser ce problème depuis des années maintenant, à vrai dire, le projet GraalVM a existé pendant longtemps, mais ce n’est que maintenant qu’il est prêt pour une utilisation générale après l’annonce de cette version 1.0.

« GraalVM fournit une haute performance pour les langages individuels et une interopérabilité sans frais supplémentaires pour créer des applications polyglottes. Au lieu de convertir des structures de données aux limites des langages, GraalVM permet aux objets et tableurs d’être utilisés directement par des langages étrangers. »

Un exemple des possibilités offertes inclut l’accès à une fonctionnalité d’une bibliothèque Java depuis du code Node.js ; ou appeler un programme statistique de Python depuis Java ; ou utiliser R pour créer un graphe SVG avec des données gérées par un autre langage.

« Pour les langages JVM, GraalVM offre un mécanisme pour créer des images natives dotées d’un démarrage instantané et une utilisation faible de la mémoire. Le processus de génération d’image exécute une analyse statique pour trouver tout code susceptible d’être atteint depuis la méthode Java principale et effectue par la suite une compilation anticipée (AOT). Le résultat natif qui en résulte contient le programme entier en code machine pour une exécution immédiate. Il peut être lié avec d’autres programmes natifs et peut optionnellement inclure le compilateur GraalVM pour le support d’une compilation à la volée afin d’exécuter tout langage GraalVM en haute performance. »

Selon Oracle, un avantage majeur de l’écosystème GraalVM est d’offrir des outils qui supportent tout langage et applicables pour tous les déploiements GraalVM. L’installation de base fournit aux développeurs un débogueur, un profiler (profilage de code) et un heap viewer. Oracle encourage les développeurs tiers à utiliser l’instrumentation API ou les API d’implémentation de langages pour enrichir davantage l’écosystème GraalVM.

« Cette première version n’est qu’un début. Nous travaillons pour améliorer tous les aspects de GraalVM ; en particulier le support de Python, R et Ruby. GraalVM est écosystème ouvert et nous encourageons tout le monde à créer dessus leurs propres langages ou outils. Nous voulons faire de GraalVM un projet collaboratif permettant une exécution standardisée des langages et un groupe d’outils riches, » a écrit Oracle.

Dans la même rubrique

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 23 |

Actu en image