0Pricing
Java Academy · Leçon

Construire une image native

Compilation anticipée

Construire une image native est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Créer une image native

L'outil native-image transforme du bytecode Java compilé en un exécutable natif unique et autonome. Cette leçon présente le processus de construction, ce qui se passe en interne et la manière d'exécuter le résultat.

Commencer avec du Java ordinaire

Une image native part de classes compilées normales. Imaginons ici un programme simple que nous allons compiler en code natif.

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello from a native binary!");
    }
}

Compiler, puis construire

Les deux étapes sont les suivantes : d'abord, javac Hello.java produit Hello.class ; ensuite, native-image Hello produit un exécutable nommé hello. La construction est bien plus lente que la compilation, car elle analyse l'ensemble du programme.

Analyse en monde fermé

native-image effectue une analyse en monde fermé : il doit voir tout le code susceptible de s'exécuter. À partir de main, il parcourt chaque méthode accessible et n'inclut que celles-ci dans le binaire. Tout ce qui est inaccessible est supprimé (élimination du code mort au moment de l'édition des liens).

Compilation anticipée

Les méthodes accessibles sont compilées à l'avance en code machine natif. Comme il ne reste aucun bytecode à interpréter et qu'il n'y a pas de compilation à la volée, il n'y a pas non plus de phase de chauffe : le programme fonctionne à pleine vitesse dès sa première instruction.

Initialisation lors de la construction

Pour démarrer rapidement, native-image peut exécuter les initialisateurs statiques lors de la construction et intégrer le tas ainsi obtenu à l'image (le tas de l'image). Certains objets existent donc déjà au moment précis du lancement du programme.

Exécuter l'exécutable

La sortie est un exécutable ordinaire du système OS. Vous l'exécutez directement : pas de java -jar et aucune installation de JVM n'est requise sur la machine cible. Il est également entièrement statique ou majoritairement statique selon les options utilisées.

Options de construction courantes

Parmi les options utiles :

  • -o name — nom du fichier de sortie.
  • --no-fallback — échouer plutôt que produire une image de repli dépendante de la JVM.
  • -O2 / -O3 — niveau d'optimisation.
  • --static — binaire entièrement lié statiquement (Linux).

Mémoire et disque

La construction elle-même consomme beaucoup de mémoire : les grandes applications peuvent nécessiter plusieurs gigaoctets de RAM et plusieurs minutes de CPU. Ce coût est payé une seule fois lors de la construction, en échange d'un démarrage peu coûteux et rapide à l'exécution.

Construire avec Maven/Gradle

Dans les projets réels, vous appelez rarement native-image manuellement. Les plugins native-build-tools de GraalVM l'intègrent à Maven (native:compile) et Gradle (nativeCompile), de sorte que le binaire fait partie de votre chaîne de construction habituelle.

Vérifier le démarrage

Après la construction, comparez les démarrages : le lancement avec java -jar peut prendre des centaines de millisecondes, tandis que le binaire natif répond en quelques millisecondes. Mesurer cette différence est précisément l'objectif de la compilation native.

Vérification rapide

Vérifiez votre compréhension de la construction d'images natives.

Récapitulatif

Vous avez appris comment construire une image native :

  • Partir de bytecode compilé ; native-image produit un exécutable autonome.
  • L'analyse en monde fermé trouve tout le code accessible depuis main.
  • Le code accessible est compilé en AOT ; le code inaccessible est supprimé.
  • L'initialisation lors de la construction intègre un tas d'image pour accélérer le démarrage.
  • La construction est lente et consomme beaucoup de mémoire ; intégrez-la à l'aide des plugins Maven/Gradle.

Questions Fréquemment Posées

La leçon « Construire une image native » est-elle gratuite ?

Oui — le texte complet de « Construire une image native » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Construire une image native » ?

Compilation anticipée Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Construire une image native » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Qu’est-ce que GraalVM
  2. Construire une image native
  3. Réflexion et configuration
  4. Compromis des images natives
← Retour à Java Academy