javac : Le compilateur java de la SDK
javac transforme les fichiers «.java» en fichiers «.class». Les fichiers «.class» sont dans un format
appelé ByteCode, qui permet leur interpretation par la JVM.
Les options de javac
Format general des lignes de commandes de javac :
javac [options] <fichier java> <fichier java> ….
– -d <DEST>
indique le répertoire de destination de tout ce qui est géneré par javac. Que javac crée des repertoires
(pour les packages) ou des fichiers .class (pour les classes et interfaces), javac génerera tout à partir du repertoire DEST.
NOTE : Le repertoire DEST doit exister avant de lancer la commande.
(La commande mkdir <DEST> peut être utilisée pour créer des repertoires sur les deux OS.)
Si on ne spécifie pas cette option, javac dépose les fichiers «.class» dans le même répertoire que le fichier java correspondant.
– -classpath <liste de repertoires et de fichiers jars>
Le caractère » : » (resp « ; ») sépare les différents éléments de la liste sur linux (resp windoz).
L’option classpath est sans doute la plus importante option de javac, elle permet d’indiquer à la
JVM l’endroit où elle pourra trouver les classes dont elle a besoin pour compiler les fichiers .java
. Ce qu’il est important de comprendre ici est l’association (mapping) entre répertoire et nom de
package de java.
Supposons que l’on veuille compiler le fichier Toto.java dans lequel on déclare la classe Toto
comme appartenant au package titi. Supposons également que l’on aie besoin pour compiler cette
classe des classes du package tata et que les fichiers «.class» du package tata se trouvent dans le
repertoire C :/temp/tata/*.class.
Alors, javac compilera le fichier Toto.java avec la commande :
javac -classpath c :/temp <chemin relatif ou absolu du fichier Toto.java> En effet, lorsque javac a
besoin des classes du package tata, il va chercher un répertoire tata contenant les fichiers .class qu’il lui faut… et le répertoire C :/temp contient bien un repertoire tata contenant les fichiers «.class».
Il est très important de comprendre que le répertoire C :/temp/tata n’est pas une entrée valide du
classpath.
On indique bien à java l’endroit où se trouve l’endroit qui lui permet d’accéder aux classes, et pas
l’endroit où se trouve le fichier «.class». Les fichiers jars qui peuvent etre specifiés avec l option
-classpath sont des fichiers compressés. Les fichiers jars contiennent en fait une arborescence de
répertoires et sont donc une entrée valide du classpath.
NOTE : Dans le cas où les classes ne sont pas incluses dans un package, vous devez indiquez après
l’option -classpath, l’endroit exact où se trouve vos classes, c’est à dire le nom du répertoire qui
contient le fichier «.class».
2 java : L’interpreteur java de la SDK
java execute des classes (et non des fichiers «.class» ), ces classes doivent contenir une méthode
ayant la signature
public static void main(String[] args)
pour être éxécutée par la JVM.
Les options de java
Format general des lignes de commandes de javac :
java [options] <nom complet de la classe>
– -classpath <liste de répertoires et de fichiers jars>
Le caractere » : » (resp « ; ») sépare les differents éléments de la liste sur linux (resp windoz).
L’option classpath est sans doute la plus importante option de java, elle permet d’indiquer à la JVM
l’endroit où elle pourra trouver la classe a éxecuter et les classes dont elle dépend.
Ce qu’il est important de comprendre ici est l’association (mapping) entre répertoire et nom de
package de java. Supposons que l’on veuille éxecuter la classe titi.Toto (défine dans le fichier
Toto.java. Ce fichier ayant pour première ligne java : package titi. La classe Toto a une me
thode public static void main(String[] args) .)
Votre fichier Toto.class se trouve dans le répertoire titi, lequel se trouve dans le répertoire c :/temp.
Alors, java éxecutera la classe Toto avec la commande :
java -classpath C :/temp titi.Toto
java doit éxecuter la classe titi.Toto, il chercher donc un répertoire titi contenant le fichier Toto pour
ensuite l’éxecuter. Et le répertoire C :/temp contient bien un repertoire titi qui contient Toto.class
…
Il est très important de comprendre que le répertoire C :/temp/titi n’est pas une entrée valide du
classpath. On indique bien à java l’endroit où se trouve l’endroit qui lui permet d’accéder aux
classes, et pas l’endroit où se trouve le fichier «.class».
Les fichiers jars qui peuvent être spécifiés avec l’option -classpath sont des fichiers compressés.
Les fichiers jars contiennent en fait une arborescence de répertoires et sont donc une entrée valide
du classpath.