BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités GraalVM 21.0 Propose Une JVM Écrite En Java

GraalVM 21.0 Propose Une JVM Écrite En Java

GraalVM a a publié la version majeure 21.0 avec un nouveau composant, Java on Truffle, qui fournit une implémentation d'une Java Virtual Machine (JVM) écrite en Java. GraalVM est lui-même une machine virtuelle polyglotte qui fournit un runtime partagé pour exécuter des applications écrites dans plusieurs langages tels que Java, Python et JavaScript.

Avant cette version, l'exécution d'applications Java dans GraalVM était possible en utilisant la machine virtuelle Java HotSpot avec le compilateur GraalVM Just-In-Time (JIT), ou en compilant vers un exécutable natif à l'aide de GraalVM Image native. Avec cette version, Java on Truffle, une JVM écrite en Java à l'aide de Truffle framework, fournit une option supplémentaire pour exécuter des applications Java.

Java on Truffle, nom de code Espresso, peut être installé à l'aide du GraalVM Updater, gu. gu est un gestionnaire de packages qui télécharge et installe des packages non inclus dans la distribution principale de GraalVM.

gu install espresso

Pour exécuter une application Java en utilisant Java sur Truffle, l'option -truffle doit être passée à la commande java.

java -truffle -jar awesomeApp.jar

Java on Truffle est une JVM minifiée qui fournit tous les composants de base d'une JVM comme l'interpréteur de bytecode, la Java Native Interface (JNI) et le Java Debug Wire Protocol (JDWP). Il implémente les API de la bibliothèque Java Runtime Environment (libjvm.so) et réutilise tous les JAR requis et les bibliothèques natives de GraalVM. Et tout comme avec une JVM traditionnelle, Java on Truffle prend en charge l'exécution d'autres langages basés sur JVM comme Kotlin.

Espresso (Java on Truffle) in the GraalVM StackImage Source: GraalVM Blog

Comme il est implémenté en Java et est capable d'exécuter du code Java, Java sur Truffle est essentiellement Java auto-hébergé ou Java sur Java. Cela ouvre des opportunités intéressantes pour rechercher et innover la JVM car elle permet aux développeurs Java de lire et de comprendre le code source JVM et de l'améliorer.

Voici une liste des fonctionnalités et avantages notables fournis par Java on Truffle :

  • Tirez parti des fonctionnalités améliorées de HotSwap pour modifier les méthodes, les lambdas et accéder aux modificateurs de classes lors de l'exécution pendant une session de débogage
  • Possibilité d'exécuter une version du bytecode Java différente de la JVM hôte. Par exemple, une bibliothèque Java 8 uniquement peut être appelée depuis une application Java 11 via l'API Polyglot
  • Isolez la JVM hôte et l'application Java exécutée sur Truffle dans le bac à sable et exécutez du code invité moins fiable. Dans ce contexte, les termes hôte et invité sont utilisés pour différencier les différentes couches où Java est exécuté. Java on Truffle fait référence à la couche invité
  • Permettre aux applications Java d'interagir directement avec des langages non JVM tels que JavaScript et Python, et transmettre des données dans les deux sens dans le même espace mémoire
  • Tirez parti des outils standard fournis par le framework Truffle. Par exemple, l'outil de profilage d'échantillonneur de processeur peut être utilisé pour voir quelle partie d'une application Java prend le plus de temps processeur
  • Créez une image native Java compilée Ahead-Of-Time (AOT) et chargez dynamiquement du code Java pour exécuter et utiliser le compilateur JIT d'Espresso. Par exemple, une application CI/CD comme Jenkins peut être construite comme une image native tandis que des plugins arbitraires peuvent être chargés dynamiquement

Image Source: GraalVM Blog

Une collection d'applications de démonstration est fournie par GraalVM pour présenter ces caractéristiques et avantages.

Notez que Java on Truffle est un composant expérimental et n'est pas prêt pour une utilisation en production. Et bien que l'on s'attende à ce que le préchauffage et les performances de pointe de Java sur Truffle soient améliorés dans les versions futures, les performances de pointe de cette nouvelle version de GraalVM sont plusieurs fois plus lentes que celles de la JVM classique. Voici une liste des limitations notables de Java on Truffle qui pourraient être résolues dans les futures versions de GraalVM :

  • N'implémente pas l'interface JVM Tool (JVMTI). Les options de la VM correspondantes -agentlib et -agentpath ne sont pas prises en charge.
  • N'implémente pas l'interface java.lang.instrument. L'option de la VM correspondante -javaagent n'est pas prise en charge.
  • Java Management Extensions (JMX) a été partiellement implémenté. Certaines méthodes peuvent renvoyer des données partielles.

En plus de Java on Truffle, cette version comprend d'autres améliorations. Par exemple, l'utilisation de la sérialisation Java dans les binaires d'images natives est désormais autorisée. La configuration d'utilisation de la sérialisation peut être générée automatiquement avec javaagent avant de créer l'image native.

Cette version de GraalVM comprend également des améliorations de compatibilité et d'exécution sur ses distributions Ruby, Python et LLVM. L'implémentation de GraalVM du langage WebAssembly, GraalWasm, a également été optimisé pour améliorer le temps de préchauffage et les performances globales de l'interprétation de WebAssembly.

Les versions Java de cette release de l'édition communautaire de GraalVM sont mises à jour et basées sur OpenJDK 1.8.0_282 et OpenJDK version 11.0.10. La distribution Node.js de GraalVM a été mise à jour vers 12.20.1.

Du côté des outils, GraalVM 21.0 est livré avec l'outil gu amélioré qui permet des mises à jour de version faciles. Un GraalVM Extension Pack pour Visual Studio Code a également été publié pour aider dans le développement et le débogage d'applications basées sur GraalVM.

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT