
Une configuration Native Image optimisée et des mises à jour du runtime multilingue pour Python, JavaScript et WebAssembly font partie des améliorations apportées par cette mise à jour de GraalVM.
Annoncée le 16 septembre, la version 25 de GraalVM l’outil Oracle qui sert à compiler des applications Java en binaires natifs, est arrivé en même temps que le JDK 25 publié récemment. L’actualisation améliore la précision de l’analyse des points-to dans Native Image et propose des importations en phase source à partir de modules WebAssembly. Oracle a également fait part de son intention de découpler les sorties de GraalVM du calendrier de mise à jour à 6 mois de Java, et à partir de septembre 2025, l’outil sera appelé GraalVM Community Edition. La version 25.0.1 de ce dernier sera livré le 21 octobre 2025.
Des évolutions pour Native Image
Selon les notes de la récente mise à jour, les fonctionnalités et améliorations de GraalVM 25 comprennent des déclarations d’importation de modules, des en-têtes d’objets compacts et un aperçu de la concurrence structurée. « GraalVM 25 active par défaut la propagation conditionnelle des constantes Whole-Program Sparse Conditional Constant Propagation (WP-SCCP), améliorant ainsi la précision de l’analyse points-to dans Native Image », a déclaré Oracle. Cette optimisation améliore la précision et l’évolutivité de l’analyse statique, ce qui peut réduire la taille du binaire natif final.
Il comprend également un profileur statique basé sur XGBoost pour l’inférence de profil call-count dans Native Image. Le modèle classe les méthodes comme « regular/hot » ou « cold », guidant les optimisations et réduisant la taille du binaire avec un impact minimal sur les performances d’exécution. GraalVM 25 dispose d’une option expérimentale appelée H:+RelativeCodePointers, qui réduit les entrées de relocalisation dans les exécutables indépendants de la position et les bibliothèques partagées. Pour des raisons de sécurité, la version 25 introduit Advanced Obfuscation dans Native Image, une fonctionnalité expérimentale exclusive à Oracle GraalVM qui renomme les symboles dans les images natives pour renforcer la protection contre la rétro-ingénierie.
Optimisations pour JavaScript et Python
Dans GraalJS, une implémentation du langage JavaScript basée sur GraalVM, GraalVM 25 permet par défaut les importations en phase source à partir de modules WebAssembly (import source mod from « ./mod.wasm ») si l’option js.webassembly est activée et si l’option js.source-phase-imports n’est pas définie sur false. ECMAScript 25 est également activé par défaut. Avec GraalWasm, un runtime WebAssembly open source, Context.eval renvoie désormais un objet module compilé (mais pas encore instancié), plutôt qu’une instance de module.
Pour GraalPy, qui fournit un runtime Python 3 pour Java, le REPL Python complet est désormais disponible sur les versions autonomes de GraalPy pour Windows. La bibliothèque standard et le noyau Python ont été mis à jour vers la version 3.12.8. Pour le runtime polyglotte, l’option sandbox.MaxStackFrames n’est plus obligatoire pour la politique de sandbox polyglotte UNTRUSTED, grâce à l’amélioration de la gestion de la déoptimisation dans le code compilé. Selon Oracle, la suppression de cette option améliore les performances du code sandboxé.
La feuille de route de Java SE pour GraalVM
Mi-septembre, Oracle a annoncé plusieurs mises à jour de la feuille de route Java SE (Standard Edition) pour GraalVM, notamment :
– L’équipe GraalVM se concentre à présent sur les langages Graal non Java, notamment GraalJS et GraalPy. Les détails seront communiqués ultérieurement.
– GraalVM pour JDK 24 était la dernière version de GraalVM sous licence et prise en charge dans le cadre des produits Oracle Java SE. Les clients qui ont besoin de mises à jour supplémentaires pour les versions héritées de GraalVM doivent les télécharger via Oracle Support.
– La technologie GraalVM Early Adopter, y compris Native Image, est en cours d’abandon pour les clients Java SE Products. Les objectifs d’amélioration du temps de démarrage, du temps nécessaire pour atteindre des performances optimales et de l’empreinte des programmes Java sont poursuivis dans le cadre du Projet Leyden d’OpenJDK en tant que partie intégrante de Java.
