Rechercher
 

Compilation et exécution d'un programme Java

Votre première application Les types entiers



Accès rapide :
   La vidéo
   Compilation en mode "ligne de commande"
   Lancement en mode "ligne de commande"
   La même chose via l'atelier Eclipse

La vidéo

Cette vidéo vous présente le format de fichier .class : un type de fichier contenant du code machine pour le processeur Java. Elle montre aussi comment produire un .class avec le compilateur Java. La portabilité, multi-plates-formes, de ces fichiers est aussi introduite.


Compilation et portabilité de vos codes Java

Compilation en mode "lignes de commandes"

L'environnement Java SE fournit tous les outils nécessaires. Mais faut t'il que votre système d'exploitation soit correctement configuré pour accéder à ces outils. Si ce n'est pas le cas, il vous faudra mettre à jour la variable d'environnement PATH de votre système pour qu'elle référence en plus le répertoire %JAVA_HOME%\bin (ou JAVA_HOME représente le répertoire d'installation de votre environnement Java SE). Une fois l'opération réalisée, prenez soin d'invoquer la commande suivante pour valider la bonne configuration de votre système.

$> java -version
java version "1.6.0_10-ea"
Java(TM) SE Runtime Environment (build 1.6.0_10-ea-b09)
Java HotSpot(TM) Client VM (build 11.0-b09, mixed mode, sharing)

$>

Pour compiler un programme Java, il faut utiliser la commande javac (Java Compiler). Celle-ci peut être invoquée sur un fichier ou bien sur un ensemble de fichiers Java (l'utilisation des jokers est autorisée sur les noms des fichiers à compiler). Les deux lignes proposées ci-dessous sont donc correctes.

$> javac HelloWorld.java

$> javac *.java

$>

Après compilation, un fichier "HelloWorld.class" a été généré. Ce fichier est, en simplifiant les choses, constitué de deux parties. Une première partie qui contient de métadonnées (des données descriptives) et un seconde qui contient le code compilé en langage machine pour le processeur virtuel Java.

Si vous êtes développeur C ou développeur C++, notez qu'un .class est en fait comparable à un .o (ou .obj). Il n'y a pas de phase explicite d'édition des liens en Java. En fait l'édition des liens est bien réalisée. Ce qui change, c'est que c'est la JVM qui le fait au runtime (au chargement de la classe, plus précisément). Il faut donc bien que la table des symboles soit présente dans le fichier .class généré et c'est très exactement ce qui est fait (dans la première partie du fichier - les métadonnées). Il résulte de ce point qu'il est très facile de décompiler du code Java, étant donné que cette table des symboles est obligatoire pour le chargement de la classe. Ce point ennui certaines sociétés qui ne veulent pas voir leur code être réutilisé.

Lancement en mode "ligne de commande"

Donc, la compilation a produit votre fichier .class qui contient du code en langage machine pour le processeur virtuel Java. Vous ne pouvez donc pas directement l'exécuter su votre processeur. Vous allez donc lancer l'émulateur : la fameuse JVM (Java Virtual Machine). Il est a noter une chose importante : un programme Java digne de ce nom est normalement constitué de plusieurs classes. Chacune d'entre elles peut porter une méthode main. Vous pouvez normalement démarrer votre programme à partir d'une quelconque méthode main. C'est pour cela que la JVM attend en paramètre le nom de la classe de démarrage. Voici comment démarrer votre programme : Si tout ce passe bien le message "Hello World" devrait être produit sur la console.

 
$> javac HelloWorld.java

$> java HelloWorld
HelloWorld
$>

ATTENTION : toutes les commandes d'un Java SE, qui travaillent sur les fichiers .class (et notamment la commande java) ne tolèrent pas la présence de l'extension de fichier. Si vous saisissez java HelloWorld.class, la JVM recherchera le fichier HelloWorld.class.class et, ne le trouvant pas, génèrera une erreur.

La même chose via l'atelier Eclipse

Eclipse est là pour vous assister et de vous faire gagner un maximum de temps, lors des phases de développement de votre logiciel. Une caractéristique très intéressante à ce niveau est le mode de construction automatique : s'il est activé, vous n'avez pas besoin de demander de compiler vos fichiers de code Java : la compilation sera automatiquement réalisée à la sauvegarder de vos fichiers sources. Vous pouvez, qui plus est, simplement sauvegarder le fichier en cours d'édition en lançant la séquence de touche CTRL + S : à chaque fois que vous l'utiliserez, votre programme sera recompilé. Et ce mécanisme va très loin, si le fichier modifié nécessite (à cause de dépendances) la recompilation de x autres fichiers, cela sera bien entendu fait automatiquement. Vous pouvez pleinement faire confiance à cette fonctionnalité d'Eclipse qui est activée par défaut. La capture d'écran suivante vous montre comment modifier cette fonctionnalité.

Pour lancer l'exécution de votre programme, Eclipse propose différentes techniques (en fonction des habitudes de chacun) : en voici une. La première fois que vous souhaitez démarrer votre programme sur une classe donnée, cliquez avec le bouton droit de la souris sur cette dernière. Ensuite, sélectionnez "Run as" puis "Java Application", comme le montre la capture d'écran ci-dessous.

Ensuite, l'atelier se souviendra de la dernière classe démarrée. Il suffira de cliquer sur l'icône . Si tout ce passe bien, vous pourrez voir le résultat de votre programme dans la console Eclipse, en bas de l'atelier, comme le montre la capture d'écran suivante.