Tutoriel – Les bases de l’outil JAR et du compiler Java

L’utilisation d’EDI comme Eclipse nous fait oublier les bases de Java, comme l’utilisation d’une calculatrice nous fait oublier combien font 1+1… Nous allons ici revoir comment compiler notre code source et l’exécuter en ligne de commande.

Exécution d’une application à partir de son code source

Nous allons voir ici comment compiler et exécuter son projet.

Compilation du code Source Java

Nous allons transformer tous nos fichiers sources comportant une extension .java en fichier binaires .class (c’est à dire le Bytecode Java)

Lorsque des fichiers sont à specifier, vous pouvez utiliser le wildcard * afin de ne pas avoir a taper toute une liste de repertoire ou de fichier (par exemple: commande *.java)

Compilation Simple

javac -d /repertoireDeDestination fichiersACompiler1.java fichiersACompiler2.java

Compile les fichiers fichiersACompiler1.java et fichiersACompiler2.java dans le répertoire repertoireDeDestination.

Compilation à partir d’une certaine version d’un code source
javac -source 1.5 fichiersACompiler1.java fichiersACompiler2.javaCompilera votre code, comme si il s’agissait de code Java 1.5
Compilation à destination d’une certaine version de JVM
javac -target 1.5 fichiersACompiler1.java fichiersACompiler2.java

Compilera votre code, afin qu’il soit optimisé pour les JVM 1.5.

Il est impossible avec javac de compiler un code source pour une JVM ayant une version antérieure (compiler du source 1.5 pour une JVM 1.4, par exemple). Toutefois, l’outil Retroweaver permet de réaliser cette petite prouesse…

Création et manipulation du JAR

jar cf nomDuFichierJar repertoire1 repertoire2 fichier1 fichier2crée un nouveau JAR nommé nomDuFichierJar en y incluant fichier1, fichier2, fichier3. Le fichier MANIFEST.MF sera créé automatiquement.
jar tf nomDuFichierJar liste tous les fichiers du fichier JAR
jar xf nomDuFichierJar extrait le contenu du fichier JAR

Ajouter l’option 0 lors de la création d’un JAR (jar c0f ….)permet de ne pas compresser celle-ci. Cela peut etre utile si vous souhaitez démarrer rapidement une application locale.

Exécution de l’application Java

Avec un Jar

java -jar nomDuFichierJarExécute le fichier nomDuFichierJar en fonction du Manifest File. Ce fichier doit contenir le nom de classe contenant la méthode main, notamment
Main-Class: classname

Avec uniquement les fichiers .class
java fichierClassContenantLeMain

Attention le fichier a une extention .class (fichierClassContenantLeMain.class), mais son extention ne doit pas être mis dans la commande.

Options Possibles de jar, java et de javac

Ces trois commandes ont une foules d’options possibles. Je vous laisse les retrouver ici:

Vous pouvez customiser les paramètres de lancement de la machine virtuelle Java, dans Eclipse. Pour cela, allez dans dans le menu Run/Run Dialog et remplissez le champ VM arguements:

Connaissez vous la différence entre JAR, EAR, WAR, RAR, AAR ?

(Source: Wikipedia)

Avant de parler de leurs différences, parlons de leur points communs. Tous ces fichiers sont en fait des ZIP contenant des fichiers destinés à être executé par une JVM.

  • JAR: Java Archive…
  • WAR: Web Archive – sont des archives JAR contenant des fichiers XML, des classes Java, des JSP et d’autres objets pour les applications Web. Elles sont déployer généralement sur des serveurs Web (comme Tomcat ou WebSphere)
  • EAR: Enterprise Archive – sont des archives JAR contenant des fichiers XML, des classes Java et d’autres objets pour les applications d’entreprise. Elles sont utilisées principalement pour les applications contenant des EJB. Elles sont déployées sur des serveurs implémentant la quasi totalité des spécifications J2EE (comme Jonas+Tomcat ou Websphere)
  • RAR: Resource Adapter aRchive – sont des archives JAR contenant des fichiers XML, des classes Java et d’autres objets pour l’architecture de connecteurs (JCA) de la plateforme J2EE
  • AAR: Axis ARchive – sont des archives JAR spécifique pour le déploiement de service web sous Axis 2, voir Apache Axis.
  • Sources: