Red Hat a introduit une nouvelle distribution Java, Mandrel, qui compile les applications Java directement en code machine natif pour un démarrage plus rapide avec moins de mémoire.
Basé sur GraalVM d'Oracle, Mandrel propose une version supplémentaire prise en charge par la communauté avec des différences mineures. Mark Little, directeur principal de l'ingénierie de Red Hat, explique : "Mandrel peut être décrit comme la distribution d'un OpenJDK standard avec une image native GraalVM spécialement packagée." Le principal moteur de l'introduction de Mandrel par Red Hat est de stimuler la vitesse et l'efficacité du framework Quarkus, avec son «Java subatomique supersonique». Quarkus est un framework offrant à la fois un développement local avec rechargement rapide ainsi qu'une distribution conteneurisée ou serverless aux fournisseurs de cloud. Depuis sa première introduction en 2019, Quarkus a souligné la capacité de construire des exécutables natifs qui démarrent plus rapidement et réduisent les coûts et ressources opérationnels dans le cloud.
Le chef de GraalVM, Thomas Wuerthinger, a répondu à la sortie de Mandrel, en déclarant : "Merci @maxandersen et ses collègues pour leur participation active à @graalvmcommunity ! "
Andres Dinn a expliqué le rôle de GraalVM et Mandrel dans l'épisode 7 de la série de vidéos Quarkus Insights. La vidéo explique l'utilisation ainsi que divers détails techniques avec des questions telles que la différence entre la compilation just-in-time et la compilation ahead-of-time. Andres Dinn explique les avantages et les inconvénients de chacun et où ils sont les mieux adaptés.
Le référentiel GitHub de Mandrel représente un fork de GraalVM mais n'offre pas encore de distribution binaire. Au lieu de cela, les utilisateurs compilent eux-mêmes le JDK en suivant les instructions fournies.
En ce qui concerne les performances, GraalVM offre un temps de démarrage 50 fois plus rapide et une utilisation de la mémoire 5 fois plus petite. Les tests ont été effectués en utilisant une version précédente du framework Quarkus exécutés dans une HotSpot Java. Bien que cette amélioration nécessite un temps de compilation ahead-of-time, elle se place aux côtés de Lambda native de Quarkus et un déploiement dans Azure Functions.
Des conseils et astuces supplémentaires sont disponibles via James Ward, qui a comparé plusieurs frameworks en natif compilé. James Ward couvre les avantages de l'amélioration des performances ainsi que certains pièges, tels que les applications qui reposent sur la réflexion. "Cela crée un problème pour les images natives GraalVM car la réflexion se produit au moment de l'exécution, ce qui rend difficile pour un compilateur AOT de comprendre les chemins d'exécution." Pour les applications qui n'ont pas besoin de réflexion, la page d'accueil de Quarkus vise directement l'avantage : 12 Mo de RAM par rapport à 73 Mo (une diminution de 83%) et 0,016 seconde avant la première réponse par rapport à 0,943 (une diminution de 98%).
Les développeurs peuvent utiliser Mandrel maintenant avec leur propre build, ou peuvent tirer parti de la communauté GraalVM ou de toute distribution JDK 11+. Les développeurs intéressés peuvent également les utiliser pour participer au hackathon Quarkus.