Présenté le 26 avril, GraalVM 22.1, la dernière version du runtime polyglotte développé par Oracle, présente une première itération du mode de construction rapide pour Native Image, la technologie de la plate-forme pour la compilation en amont du code Java dans un exécutable autonome. Avec le mode de construction rapide, le compilateur fonctionne en mode économe avec moins d'optimisations, ce qui se traduit par des temps de compilation beaucoup plus rapides. Native Image AOT compile le code Java vers un exécutable autonome, appelé image native. Selon la taille et la complexité de l'application à compiler, le processus de construction peut prendre beaucoup de temps, GraalVM devant analyser et optimiser une application entière et ses dépendances. Les développeurs de GraalVM ont constaté que le mode de construction rapide améliorait de 43 % le temps de compilation global.
Le mode de construction rapide n'est recommandé qu'à des fins de développement car il optimise le temps de construction au détriment des performances d'exécution et de l'utilisation de la mémoire. Pour la production, les développeurs doivent utiliser le mode de compilation par défaut. Il est prévu de travailler davantage sur le mode de construction rapide afin d'améliorer les performances d'exécution et d'accélérer les autres processus de construction. Les temps de construction des exécutables sont également plus rapides dans GraalVM 22.1, grâce aux améliorations des performances et à la réduction de l'empreinte mémoire de l'image native. GraalVM Community Edition peut être téléchargé sur GitHub. Les builds de GraalVM Enterprise peuvent être téléchargées sur Oracle Technology Network.
Autres fonctionnalités et améliorations dans GraalVM 22.1 :
GraalVM Community Edition est disponible pour la plateforme Apple Silicon – ARM - sous forme d'aperçu. Le comportement par défaut de native-image a été aligné sur celui de la commande Java. Une construction n'échoue plus si une classe ne peut être trouvée dans le classpath ou le module path. Cela peut être souhaitable car une application peut définir un comportement différent si certaines classes ne sont pas disponibles.
La configuration de réflexion conditionnelle pour Native Image, dans laquelle une entrée de configuration de classe n'est appliquée que si une condition fournie est satisfaite, peut désormais être générée via un agent de traçage. Avec la configuration de réflexion conditionnelle, une entrée de configuration de classe est appliquée uniquement si une condition fournie, telle que typeReachable, est satisfaite, ce qui rend la configuration plus précise et réduit la taille de l'exécutable. La mise en cache expérimentale du moteur est prise en charge pour les applications Node.js dans GraalVM Enterprise Edition.
Le moteur d'exécution Python ajoute la prise en charge des modules gelés, ce qui accélère de 30 % le démarrage de l'exécution et utilise 40 % de mémoire en moins. Ce changement signifie que les modules fréquemment utilisés sont analysés, convertis en bytecode et stockés dans le binaire. Au démarrage, le moteur d'exécution charge directement ce bytecode, ce qui évite les surcharges.