Académique Documents
Professionnel Documents
Culture Documents
Un programme Java peut prendre deux formes distinctes, chacune étant adaptée à un contexte
d'invocation et d'exécution différent.
Les exercices qui vous sont proposés ici ont pour but de vous faire expérimenter ces deux types
de programmes Java et de vous faire utiliser les outils de base du JDK (compilateur, machine
virtuelle, documentation....).
Si vous n'obtenez pas les réponses attendues, il faut configurer votre environnement avant de
pouvoir travailler :
Ce premier exercice a pour but de vous faire parcourir la documentation de Java SE mise
en ligne par Oracle afin de vous familiariser avec son organisation. NE LE NEGLIGEZ
PAS ! Pour pouvoir travailler efficacement avec java, il est essentiel de savoir vous
servir de cette documentation et de situer rapidement les éléments qui pourraient vous être
utiles.
Plusieurs versions de JavaSE sont disponibles, la dernière en date étant la version 7. Lorsque
vous utiliser les documentations du JDK, il vaut mieux vous référer à celle correspondant à la
version installée sur votre machine (voir exercice 0) :
La documentation de Java SE version 6 est disponible à l'URL
La documentation de Java SE version 7 est disponible à l'URL
Combien de programmes d'apprentissage (trails) couvrant les bases du langage Java sont-
ils proposés ? 7
Dans le programme d'apprentissage Getting Started effectuez le cours The "Hello World
!" Application (attention de prendre le cours correspondant à votre plateforme : Windows
ou Unix).
1. Compilation de l'application HelloWorldApp.java.
Quelle commande avez-vous utilisée ?
javac
Quel est le nom du fichier créé par cette commande de compilation ?
HelloWorldApp.class
Que contient-il ? (Affichez son contenu sur la console, commande type
sous Windows, more ou less sous Unix)
class HelloWorldApp
{
public static void main(String[] args)
System.out.println("BONJOUR");
Quel est le nom et la signature de la méthode qui permet de transformer une valeur
exprimée en radians en une valeur exprimée en degrés ?
Nom : toDegrees
Signature : public static double toDegrees (double angrad)
Retrouvez la documentation du package java.net. Que propose ce package ?
il Propose les class pour implémenter les applications réseaux.
Quelle est le nom de la classe de ce package qui permet de représenter sous forme d'un
objet java un cookie http ?
HttpCookie.
Retrouvez la documentation de la classe String.
A quel package appartient cette classe ? java.lang
A quoi sert cette classe ? elle permet de gérer les chaines de caractères
Que fait la méthode toUpperCase de cette classe ?
Mettre une chaine en majuscule.
pour en savoir plus sur : le compilateur javac (JDK 6 windows unix, JDK 7 windows unix) et
l'interpréteur java (JDK 6 windows unix, JDK 7 windows unix )
Modifiez le programme HelloWorld.java que vous avez écrit dans l'exercice 1 de manière
à ce qu'il provoque l'affichage suivant :
BONJOUR
CECI EST MON
PREMIER PROGRAMME JAVA
ou tout autre texte de votre choix.....
Récompilez le ET exécutez le.
Sauvegardez dans votre répertoire de travail le programme que vous pouvez télécharger
en cliquant sur le lien suivant Hello2.java.
Compilez ce programme et exécutez-le successivement avec les commandes :
o java Hello2
o java Hello2 Marie
o java Hello2 Pierre Paul Jacques
Constatez. En observant le source du programme Hello2.java, que pouvez-vous en
déduire sur le rôle du paramètre args de la méthode main ?
Passer les arguments à la fonction
pour en savoir plus sur : le visualiser d'applets appletviewer (JDK 6 windows unix, JDK 7
windows unix )
L'affichage du texte ci-dessous dont les lettres se déplacent de façon aléatoire est en fait géré par
une applet JAVA (écrite par Daniel Wyszynski, Branché JAVA, A.van Hoff,S. Shaio, O. Starbuck,
Ed. International Thomsom Publishing France 1996)
La compilation de cette classe vous indique que certaines méthodes utilisées par ce programme
sont dépréciées. Présentes dans les premières versions de la plateforme java, ces méthodes ont
depuis été remplacées par de nouvelles méthodes introduites dans les versions successives de la
plate-forme java. Toutefois les messages de "dépréciation" sont simplement des avertissements
(warnings), le code compilé est exécutable. Ces messages sont là pour signifier au programmeur
l'utilisation de méthodes dépréciées qui peuvent s'avérer dangereuses ou risquent de ne plus être
supportées dans de future versions de java et qu'il serait préférable de remplacer par de nouvelles
fonctionnalités de la plate-forme java.
Quelle option du compilateur java permet de voir le détail des méthodes dépréciées ?
javac -deprecation NervousText.java
Recompilez la classe NervousText avec cette option. Quelles sont les méthodes dépréciées
utilisées dans NervousText ? Dans quelles classes sont elles définies ? Que dit la documentation
à leur sujet ?
Méthodes dépréciées utilisées : resume() et suspend() de la classe java.lang.Thread.
Ces méthodes peuvent provoquer un bloquage (deadlock) du système
1. en chargeant le fichier essaiapplet.htm dans votre navigateur Web si celui ci-est équipé
d'une machine virtuelle java (ou si le Java Pluggin a été installé)
2. en lançant depuis la ligne de commande la commande appletviewer essaiapplet.htm
Lorsque l'on développe une application constituée de plusieurs fichiers il est important de bien
organiser ceux-ci sur son espace disque. Ainsi une organisation classique est de séparer dans
différents répertoires les fichiers selon leur nature. Ainsi pour un projet de développement en
JAVA on pourra choisir l'organisation suivante : dans un répertoire correspondant au projet
définir 3 sous repertoires :
un répertoire src (sources) contenant les code source des classes JAVA
un répertoire classes contenant le code compilé (byte-code) des classes JAVA
un répertoire docs contenant la documentation des différentes classes JAVA
Dans l'exercice qui suit vous allez expérimenter cette organisation avec l'application vue en cours
qui permet l'animation de visages sur l'écran. Cette application est constituée de 3 classes Java :
a) compilation de l'application
1. Créez un repertoire Visages avec trois sous répertoires src , docs et classes
(commande mkdir sous MS-DOS)
2. Sauvegardez dans le répertoire src les fichiers sources des différentes classes de
l'application : VisageRond.java, Dessin.java et AppliVisage1.java
3. Placez vous dans le répertoire src (commande cd) et compilez l'application
AppliVisage1 en utilisant la commande
javac -d ../classes AppliVisage1.java
o Quel est le rôle de l'option -d utilisée dans la commande javac ?
l'option -d indique le répertoire où seront rangés les fichier
compilés (fichiers de bytecode avec l'extension .class)
o Quels ont été les fichiers créés par la commande de compilation de la classe
AppliVisage1 ?
AppliVisage1.class, VisageRond.class et Dessin.class
o Qu'en déduisez-vous ? ...............................
Que le compilateur java est suffisament "intelligent" pour voir les dépendances entre
fichiers (à l'image de make). Ici comme Applivisage1 utilise les classes
VisageRond et Dessin, la compilation d'AppliVisage1 entraine
aussi la compilation de VisageRond et Dessin.
b) exécution de l'application
1. Replacez vous dans le répertoire classes. Normalement si vous avez respecté les étapes
précédentes, ce répertoire ne doit contenir plus que les fichiers Dessin.class et
VisageRond.class , fichiers contenant le byte-code des classes Dessin et VisageRond.
2. En vous aidant de la documentation de la commande jar (JDK 6 windows unix, JDK 7
windows unix ) , construisez dans le répertoire classes un fichier JAR (Java Archive) de
nom visages.jar contenant ces deux fichiers.
o Quelle est la commande à utiliser ?
jar -cvf visages.jar *.class
o Si vous ne l'avez pas fait, ajoutez l'option v à la commande utilisée ? Quel est son
rôle ?
v est l'option qui permet d'avoir des commandes "bavardes"
(verbose). Dans le cas de la création d'un fichier archive
elle permet de voir les noms, tailles, taux de compression
de chacun des fichiers ajoutés à l'archive.
3. Que fait la commande jar tvf appliquée au fichier jar que vous venez de créer ?
d'afficher sur la console le nom et la taille des fichier contenus dans l'archive.
4. Déplacez le fichier jar dans le répertoire Visages.
5. Replacez vous dans le répertoire Visages et lancez à nouveau l'exécution en utilisant ce
fichier jar dans l'option -classpath de la commande java.
o Quelle est la commande à utiliser pour lancer cette exécution ?
java -cp .;visages.jar Applivisage1 sous Windows
le classpath permet de spécifier pour la recherche des
classes le répertoire courant (. ) nécessaire pour trouver
AppliVisage1.class et le fichier
visages.jar nécessaire pour touver Dessin.class et
VisageRond.class
6. D'après vous quel est l'interêt des fichiers jars ? (Des éléments de réponse sont dans la
documentation de la commande jar)
(Des éléments de réponse sont dans la documentation de la commande jar) Entre autres, les
fichiers jar permettent de compacter une application java dans un seul fichier, ce qui facilite la
distribution de l'applicationd) génération automatique de la documentation
1. S’il n'existe pas encore, créez un répertoire docs dans le répertoire Visages
2. Placez vous dans le répertoire src et lancez la commande javadoc -d ../docs
*.java.
o Quels fichiers cette commande a-t-elle créés (et où se trouvent-ils) ?
Les fichiers créés sont les fichiers html correspondant à la documentation des classes
AppliVisage1, Dessin et VisageRond. ils se trouvent dans le
répertoire docs
3. Le point d'entrée de la documentation générée est le fichier index.html.
o Ouvrez ce fichier depuis votre navigateur et parcourez cette documentation.
o La documentation de la classe VisageRond référence un image que vous trouverez
ici : figurevisage.gif. Pour que la documentation soit complète recopiez cette
image dans le répertoire docs.
o En comparant la documentation générée et le code source des différents classes
Java, pouvez-vous déduire quels ont été les élements des fichiers sources ayant
permis de produire cette documentation ?
Les commentaires spéciaux /** ... */ qui précèdent la
définition de la classe, de chacun de ses attributs et de
chacune de ses méthodes. Ces commentaires sont des
commentaires documentants, exploités pas l'outil
javadoc au contraire des commentaires "classiques" /* ... */
ou // .
4. Les méthodes setDy et getDy de la classe VisageRond ne sont pas documentées.
o Modifiez le source de la classe VisageRond afin de documenter ces méthodes.
o Regénérez la documentation.
o Vérifiez que vos modifications ont correctement été prises en compte.
1. Modifiez le source de classe VisageRond afin que la taille par défaut d'un visage soit de
100x100 pixels au lieu de 50x50 pixels
2. Recompilez cette classe (en prenant bien soin de placer le fichier bytecode dans le
répertoire classes).
o Quelle commande avez vous utilisée ?
Dans le répertoire src :
javac -d ../classes/ VisageRond.java
o Quelles ont été les classes recompilées ?
La classe Dessin a été recompilée aussi car elle utilise
VisageRond.
3. Vérifiez que votre modification fonctionne en réexécutant l'application AppliVisage1.
o Quelle commande avez vous utilisée pour cette exécution ? Dans le répertoire
Visages:
java -cp classes/ AppliVisage1
f) Erreurs de compilation
g) Erreurs d'exécution