GraalVM 21 avec Java on Truffle

Par:
fredericmazue

ven, 05/02/2021 - 10:30

GraalVM est une machine virtuelle universelle développée par Oracle, permettant d'exécuter des applications écrites dans des langages basés sur JavaScript, Python, Ruby, R, tels que Java, Scala, Kotlin, Clojure et LLVM, tels que C et C ++.

GraalVM supprime l'isolement entre les langages de programmation et permet l'interopérabilité dans un environnement d'exécution partagé.

Cette universalité que présente GraalVM est rendue possible grâce au framework Truffle. Pour dire les choses simplement, Truffle permet de créer des interpréteurs d’arbres syntaxiques. Pour mémoire, un arbre syntaxique est un arbre dont les nœuds représentent des opérateurs du langage, des expressions ou encore des variables. En traitant un tel arbre, il est possible de déterminer les instructions devant être exécutées.

GraalVM 21, qui vient d'être publiée, comporte un nouveau composant : Java on Truffle, nom de code : Espresso. Avant Java on Truffle, l'exécution d'applications Java dans GraalVM était possible en utilisant la VM Java HotSpot avec le compilateur Just-In-Time (JIT) de GraalVM, ou en compilant vers un exécutable natif à l'aide de GraalVM Native Image.

Java on Truffle est une JVM minifiée qui fournit tous les composants de base d'une JVM et assure la prise en charge de l'exécution d'autres langages basés sur JVM comme Kotlin.

Implémenté en Java et capable d'exécuter du, Java, Java On Truffle est un 'Java sur Java' ou un 'Java auto-hébergé', ce qui offre de nouvelles possibilités.

Par exemple, une bibliothèque Java 8 uniquement peut être appelée à partir d'une application Java 11 via l'API Polyglot. Il devient possible aux applications Java d'interagir directement avec des langages non JVM tels que JavaScript et Python, et de passer des données dans les deux sens dans le même espace mémoire. Il est possible de tirer parti des outils standard fournis par le framework Truffle. Par exemple, l'outil de profilage d'échantillonneur de processeur, etc.

Java on Truffle est pour le moment un composant expérimental, qui ne doit donc pas être utilisé en production.

Plus d'informations sur Java on Truffle ici.