Dernière modification : Dec 08 , 2024
Présentation de GraalVM

Présentation de GraalVM

Quelques mots sur GraalVM

  • Développé par Oracle Labs
  • Runtime hautes performances pour les langages JVM

GraalVM : Gratuit ou Payant ?

Versions Gratuites

GraalVM Community Edition

  • Licence : Disponible sous licence GPL 2 avec la clause Classpath Exception.
  • Fonctionnalités : Inclut la plupart des fonctionnalités de GraalVM, telles que le compilateur JIT, le support polyglotte et la création d'images natives.
  • Usage : Idéale pour les développeurs open-source, les petites entreprises et les projets personnels.

Versions Commerciales

GraalVM Enterprise Edition

  • Licence : Licence commerciale, souvent accompagnée d'un support technique et de mises à jour supplémentaires.
  • Fonctionnalités Avancées : Inclut des optimisations de performance supplémentaires, des outils de diagnostic avancés et une meilleure gestion de la mémoire par rapport à la Community Edition.
  • Usage : Destinée aux entreprises et aux utilisateurs ayant des besoins critiques en termes de performance et de support.

Comparaison des Editions

Caractéristique Community Edition Enterprise Edition
Licence GPL 2 + Classpath Licence commerciale
Support Officiel Non Oui
Optimisations Supplémentaires Non Oui
Outils de Diagnostic Avancés Non Oui
Gestion Avancée de la Mémoire Non Oui
Idéal pour Open source, petits projets Entreprises, projets critiques

Utilisation et Téléchargement

  • Community Edition : Disponible gratuitement en téléchargement depuis le site officiel de GraalVM ou GitHub.
  • Enterprise Edition : Nécessite un abonnement commercial disponible via Oracle.

Caractéristiques clés

  • Support polyglotte
    • Exécution de programmes dans plusieurs langues
    • Intégration transparente de Java, JavaScript, Python, Ruby, R, et plus encore
  • Compilateur hautes performances
    • Le compilateur GraalVM offre des performances améliorées
    • Permet la compilation anticipée

Support de plusieurs languages

  • Contrairement à la JVM, GraalVM supporte différents langages

Référence

Image Native

Image Native est une technologie permettant de compiler le code Java à l'avance en un binaire – un exécutable natif. Un exécutable natif inclut uniquement le code requis à l'exécution, c'est-à-dire les classes de l'application, les classes de la bibliothèque standard, l'environnement d'exécution du langage, et le code natif lié statiquement à partir du JDK.

Un fichier exécutable produit par Image Native présente plusieurs avantages importants :

  • Utilise une fraction des ressources requises par la Java Virtual Machine, ce qui le rend moins coûteux à exécuter.
  • Démarre en quelques millisecondes.
  • Offre des performances optimales immédiatement, sans période de préchauffage.
  • Peut être emballé dans une image de conteneur légère pour un déploiement rapide et efficace.
  • Présente une surface d'attaque réduite.

Un exécutable natif est créé par le générateur d'Image Native ou native-image, qui traite les classes de votre application et d'autres métadonnées pour créer un binaire pour un système d'exploitation et une architecture spécifiques. Tout d'abord, l'outil native-image effectue une analyse statique de votre code pour déterminer les classes et méthodes accessibles lorsque votre application s'exécute. Ensuite, il compile les classes, les méthodes et les ressources en un binaire. Ce processus entier est appelé temps de construction pour le distinguer clairement de la compilation du code source Java en bytecode.

L'outil native-image peut être utilisé pour créer un exécutable natif, ce qui est l'option par défaut, ou une bibliothèque partagée native. Ce guide de démarrage rapide se concentre sur la création d'un exécutable natif ; pour en savoir plus sur les bibliothèques partagées natives, consultez cette ressource.

Compilateur GraalVM JIT

  • La JVM optimise le code pendant l’exécution (grâce au JIT), cette intelligence n’est pas possible dans les applications compilées avec GraalVm Native Image.
  • Le temps de build d’une application native est extrêmement lent comparé au build d’un JAR.
  • Dans les applications natives, nous perdons une partie de la puissance de la JVM: l’instrumentation (JMX), plus d’accès au heap dump et thread dump …
  • Une JVM convient mieux au Heaps importants qu’un exécutable produit par Native Image.

Compilateur GraalVM AOT

  • Le temps de build est extrêmement lent ;
  • Absence d’instrumentation JMX ;
  • Impossible d’avoir un Heap Dump ;
  • Beaucoup de frameworks ne sont pas supportés à cause de la réflexion ;
  • Moins efficace pour les Heaps importants avec de gros débits. En effet, uniquement le SerialGC est disponible pour la version Community. A noter que le G1 est disponible dans la version Enterprise de GraalVM.
  • Code machine moins optimisé que celui produit par JIT.

GraalVM Native image

Native Image est une technologie permettant de compiler à l'avance du code Java en un exécutable autonome, appelé image native.

Présentation de GraalVM

Created by Sylvain Leroy

Objectifs

  • Familiarisation avec GraalVM:Présenter GraalVM, compiler une application Java normalement et nativement.