GraalVM 21.2 a été publié pour accélérer les temps de compilation natifs et améliorer les intégrations avec le JDK flight recorder ainsi que la prise en charge des langages non Java comme Ruby et JavaScript.
La version simplifie le rôle des tests de duplication entre les fonctionnalités d'une application lorsqu'elle s'exécute en mode HotSpot (un environnement d'exécution compatible TCK) par rapport à la compilation d'images natives (binaire natif pour la plate-forme). L'avantage de la compilation native est un temps de démarrage et une mémoire réduits, ainsi que la possibilité de s'exécuter sur différentes plates-formes telles que iOS et Android. La prise en charge des tests natifs apparaît dans le cadre des plugins Gradle et Maven qui exécutent des tests supplémentaires sur une application pour valider que la fonctionnalité d'une image native correspond aux attentes du mode HotSpot. Ce plugin de test offre des fonctionnalités similaires à des outils comme Quarkus qui exploitent les tests GraalVM et Mandrel (GraalVM de RedHat) lorsqu'une image native est créée. Lors de la compilation native d'une application Quarkus, les développeurs peuvent tirer parti d'une annotation @NativeImageTest, pour étendre un test de classe unitaire existant avec une exécution avant et après la compilation native. Le test en double se produit parce que l'application en cours d'exécution est légèrement différente : un échec avant la compilation native évitera de perdre du temps à compiler une application incorrecte et un test échoué après démontrera que la fonctionnalité de la version native diffère de la version HotSpot.
Les développeurs d'applications natives peuvent désormais surveiller les événements de performances via le Flight Recorder d'OpenJDK à l'aide d'événements écrits en Java, similaires à ce qu'ils attendraient de ces événements sur un JDK HotSpot. Les événements personnalisés peuvent ensuite être affichés dans des outils tels que JDK Mission Control (le compagnon de visionnage de JFR) ou des outils de tableau de bord tels que New Relic One.
Des améliorations de performances supplémentaires ont été apportées aux langages polyglottes sous-jacents, car GraalVM fournit un environnement d'exécution commun et un JIT qui prend en charge plusieurs langages à la fois. Grâce au framework de langage Truffle, GraalVM offre un support pour compiler et exécuter des applications en Python, Ruby, R, Cuda et bien d'autres.
Les capacités de la compilation native de GraalVM apparaissent dans un mélange de différentes JVM qui permettent aux développeurs et aux opérateurs de tirer pleinement parti de différents types de matériel :
- Les JVM HotSpot standard (les plus courantes) offrent une compilation juste à temps avec des performances de pointe optimales pour s'exécuter sur les systèmes modernes (x68/x86_64), le cloud et de nombreux boîtiers intégrés (diverses puces ARM)
- GraalVM/Mandrel propose un mode HotSpot ainsi qu'une compilation native pour s'exécuter sur des appareils mobiles (iOS et Android), ainsi qu'une compilation juste à temps pour une compilation ahead-of-time sur des appareils intégrés ARM plus petits
- TornadoVM offre des fonctionnalités similaires plus ciblées sur l'exécution sur GPU que sur CPU. TornadoVM partage des capacités similaires de concert avec GraalVM, car les deux effectuent une compilation native
Les développeurs intéressés par les nouvelles fonctionnalités peuvent télécharger la dernière GraalVM Community Edition ou les versions futures de Mandrel de RedHat.