La JVM ne peut pas exécuter directement le code que vous écrivez. Il ne sait exécuter que des programmes écrits en bytecode. Le bytecode est un langage de bas niveau proche du code machine.

Pour Java, la compilation est la traduction d'un programme (de haut niveau) écrit en Java en le même programme écrit en bytecode.

Votre code est passé dans un fichier .java au compilateur. Si le compilateur ne trouve aucune erreur dans le code, vous récupérez un nouveau fichier de bytecode. Ce fichier aura le même nom mais une extension différente : .class . S'il y a des erreurs dans le code, le compilateur vous dira "le programme n'a pas été compilé". Ensuite, vous devez lire chaque message d'erreur et corriger les erreurs.

Vous utilisez la commande javac pour invoquer le compilateur, qui fait partie du JDK (Java Development Kit). Cela signifie que si vous n'installez que le JRE (Java Runtime Environment), vous n'aurez pas le compilateur ! Vous n'aurez que la JVM, qui ne peut exécuter que du bytecode. Nous installons donc le JDK et transmettons notre fichier .java au compilateur.

Par exemple, prenons un programme simple avec une sortie console :


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

Enregistrons ce code dans le fichier D:/temp/MySolution.java .

Compilons notre code en utilisant la commande


D:\temp>javac MySolution.java

S'il n'y a pas d'erreurs de compilation dans le code, un fichier MySolution.class apparaîtra dans le dossier temporaire . De plus, le fichier MySolution.java contenant votre code ne va nulle part. Il reste là où il était. Mais maintenant MySolution.class contient du bytecode et est prêt à être exécuté directement par la JVM.

Notre exemple est aussi simple que possible, mais même les projets les plus grands et les plus complexes utilisent la commande javac . Il vous sera donc très utile de savoir comment cela fonctionne.

Vous pouvez compiler plusieurs classes à la fois. Par exemple, supposons qu'il existe un autre fichier Cat.java dans le dossier temp :


D:\temp>javac MySolution.java Cat.java

ou ca:


D:\temp>javac *.java

Une fois compilés, les fichiers .class peuvent être regroupés dans un fichier jar , qui peut être facilement déplacé vers différents ordinateurs, puis exécuté dessus. Voici un exemple de création d'un fichier jar :


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

où:

  • jar est la commande pour créer des fichiers .jar , inclus dans le JDK

  • cvfe sont des options de ligne de commande avec les significations suivantes :

    • c - créer un nouveau fichier jar

    • v - afficher des informations détaillées

    • f - indique que nous voulons que la sortie de l'outil soit placée dans un fichier ( myjar.jar )

    • e – indique le point d'entrée ( MySolution ), c'est-à-dire la classe qui contient la méthode principale

  • MySolution.java Cat.class - noms séparés par des espaces des fichiers qui seront compressés dans le fichier jar .

Voici comment nous exécutons le fichier jar résultant :


D:\temp>java -jar myjar.jar
Pour des informations plus détaillées :
Les outils javac et jar ont une aide intégrée. Pour l'afficher, exécutez ce qui suit sur la ligne de commande :
  • javac --aide
  • bocal --aide