< Programmation Java

Le JDK est un ensemble d'outil permettant de développer en Java.

Pour obtenir la liste des options d'un outil, il suffit de lancer l'outil sans aucun argument.

Compiler le code

javac est le compilateur qui convertit le code source .java en fichier .class (contenant le bytecode Java).

Supposons que vous avez :

  • un dossier « src » qui contient vos sources (tous vos fichiers .java) ;
  • un dossier « bin » où vous placerez tous les fichiers compilés (les fichier .class correspondant).
# compile seulement la classe Exemple et place le résultat dans bin
javac -d bin src/Exemple.java

# compile toutes les sources trouvées dans src et les place dans bin
javac -d bin src/**/*.java

Si la compilation échoue parce que votre code utilise des classes que javac ne connait pas (erreur Unable to find symbol), vous devez préciser à javac un classpath comme expliqué plus loin.

Lancer l'application

java permet une dans lancer une application java en ligne de commande, il faut passer en paramètre le nom complet (pleinement qualifié) de la classe.

java org.wikibooks.fr.Exemple argument_1 argument_2

La ligne de commande ci-dessus appel la méthode public static void main(String[] args) de la classe Exemple du package org.wikibooks.fr avec args, un tableau à deux éléments : "argument_1" et argument_2".

javaw permet une application Java sans console (interface graphique seule).

javaw org.wikibooks.fr.Exemple

Une archive java (*.jar) avec l'option -jar, un petit fichier (appelé « Manifest ») contenu dans le jar indique lui-même le nom de la classe principale à lancer.

java -jar chemin/vers/le/fichier.jar

Préciser le CLASSPATH

Dans toutes les commandes ci-dessus, il faut permettre à java de trouver tous les fichiers compilés nécessaire à l'exécution du code (les fichiers *.class générés avec javac). Pour cela, il faut préciser à java les répertoires ou celui-ci pourra trouver tout ça.

Pour cela, il faut définir ce qu'on appelle le « CLASS PATH », c'est une simple chaine qui définit plusieurs chemins pour trouver des .class séparés par ":". Les chemins peuvent être des chemins vers des fichiers .jar ou vers des répertoires contenant des fichiers .class. Il y a deux façon de préciser le CLASSPATH à java, la première est d'utiliser le paramètre -classpath de ligne de commande.

java -classpath chemin/vers/une/premiere/bibliotheque.jar:chemin/vers_une_autre/bibliotheque.jar:bin org.wikibooks.fr.Exemple

Ici, java essaiera de trouver le fichier Exemple.class dans les deux jars donnés puis dans le dossier bin. Si le fichier n'est trouvé dans aucun de ces éléments, il y aura une erreur (Class not found exception).

La seconde façon de préciser le CLASSPATH est de définir une variable d'environnement système. Sous linux,

export CLASSPATH="chemin/vers/une/premiere/bibliotheque.jar:chemin/vers_une_autre/bibliotheque.jar"

Attention à ne pas confondre java -jar fichier.jar et java -cp fichier.jar, la première commande permet de lancer le programme qui se trouve dans fichier.jar et fonctionne ; la seconde précise que des classes peuvent être chargée depuis fichier.jar mais oublie de préciser quelle classe il faut lancer : java indiquera qu'un paramètre est manquant. Enfin, sachez que vous pouvez remplacer « -classpath » par « -cp ».

jar

L'outil jar permet de regrouper les classes (fichiers *.class) et ressources d'une application en une seule archive exécutable. Cette archive est au format ZIP mais possède l'extension .jar. Dans cette archive, un répertoire spécial situé à la racine nommé META-INF contient des fichiers d'information et de configuration pour la machine virtuelle Java, dont notamment le fichier MANIFEST.MF (fichier manifest, MF = Meta File).

Une archive JAR peut être exécutable si la classe principale (contenant une méthode statique nommée main) de l'application est spécifiée dans ce fichier MANIFEST.MF. Dans ce cas, l'application peut se lancer avec la commande suivante :

java -jar chemin_de_l_archive.jar ...arguments passés à l'application si besoin...

Ce fichier manifest est au format texte. Exemple :

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 19.1-b02 (Sun Microsystems Inc.)
Main-Class: org.wikibooks.fr.ApplicationExemple
Class-Path: .

Il possède différents champs. Chaque champ possède un nom, suivi de deux-points et de sa valeur. Si une valeur est longue, elle peut être répartie sur plusieurs lignes, chaque ligne additionnelle commençant alors par au moins un caractère espace.

Pour plus de détails sur les fichiers manifest voir http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

Logo

Le champ Class-Path dans une archive JAR diffère du paramètre classpath passé aux outils Java :

  • Il ne peut contenir que des chemins relatifs à d'autres archives Java (*.jar) ; les répertoires ne sont pas supportés ;
  • Le séparateur est un caractère espace. Les fichiers référencés ne peuvent donc en contenir dans leur nom.

Pour créer une archive JAR à partir d'un répertoire contenant les classes et ressources (les sous-répertoires devant correspondre aux packages), et d'un fichier texte pour le fichier manifest :

jar cfm mon_archive.jar mon_manifest.txt -C repertoire .

Peu importe le nom du fichier manifest et son extension spécifiés, il sera renommé MANIFEST.MF.

Les arguments de la commande sont décrits ci-dessous :

cfm
Une série de caractères dont le premier spécifie l'action principale :
  • c Créer une archive (Create).
  • t Afficher le contenu de l'archive (Table of content).
  • x Extraire les fichiers de l'archive (eXtract files).
  • u Mettre à jour l'archive existante (Update archive).
Les caractères suivants donne l'ordre des arguments qui suivent :
  • f Le nom du fichier archive (archive File).
  • m Le nom du fichier manifest à utiliser (Manifest file).
mon_archive.jar
Le nom du fichier archive.
mon_manifest.txt
Le nom du fichier manifest à utiliser.
-C repertoire
Précise le chemin du répertoire pour les chemins relatifs
.
Inclus le fichier spécifié (. désignant le répertoire courant sous la plupart des systèmes d'exploitation).

Eclipse possède une interface interactive pour générer un fichier JAR à partir des classes d'un projet Java, ou d'une configuration d'exécution.

javadoc

L'outil javadoc est le générateur de documentation, qui génère automatiquement de la documentation à partir des commentaires du code source.

Voir le chapitre sur les commentaires pour plus de détails sur l'outil et son utilisation.

jdb

Cette section est vide, pas assez détaillée ou incomplète.

le débogueur

javah

javah permet de générer un fichier d'en-tête C (*.h) contenant la déclaration des fonctions correspondantes aux méthodes natives de la classe compilée spécifiée.

javah -classpath directory-list classname

javap

javap permet de lister les membres et désassembler la classe compilée spécifiée.

javap -c -classpath directory-list classname

Voir aussi

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.