Licence Professionnelle Technologie des
Applications Internet
TD de Programmation Orientée Objet
n°1
Introduction aux outils du Java SDK
1.4.2
par Philippe.Genoud@imag.fr.
Un programme Java peut prendre deux formes distinctes, chacune étant adaptée
à un contexte d'invocation et d'exécution différent.
- la première (applications java) permet de créer des applications au sens
classique du terme, c'est à dire des programmes s'exécutant de manière autonome
à l'aide d'un interpréteur Java.
- la deuxième (applets Java) est destinée à des programmes invoqués depuis
des document HTML (HyperText Markup Language) diffusés sur le World Wide Web
(WWW) et exécutés à l'intérieur d'un navigateur (Netscape, Microsoft Internet
Explorer) équipé d'un interpréteur Java ou d'un visualiseur d'applets (par
exemple l'application appletviewer
du SDK).
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 SDK :
- le compilateur (javac),
- l'interpréteur Java (java) pour les applications "stand-alone",
- appletviewer pour l'exécution d'applets
- jar pour créer
des archives de fichiers de byte-code et de ressources
- javadoc
pour générer de la documentation html à partir
des commentaires documentants se trouvant dans le code source des classes.
exercice 0 : vérifier la présence de java
- ouvrir une fenêtre de commandes
- fenêtre Xterm sous Unix,
- fenêtre d'invite de commandes sous Windows (menu Démarrer->Exécuter->cmd)
(Attention ! pas command.com
qui est du vrai MS-DOS pur jus : pas de rappel des commandes (doskey),
noms limités à 8 caractères...)
- dans cette fenêtre de commande taper :
- java -version la réponse doit être
java version "1.4.2" ou un numéro de version supérieur.
- javac la réponse doit être Usage:
javac <options> <source files> ...
Si vous n'obtenez pas les réponses attendues, il faut configurer votre
environnement avant de pouvoir travailler :
exercice 1 : consulter la documention en ligne du SDK
La documentation
du SDK 1.4.2 est disponible dans le placard électronique PLACARD->DESSCCI->PL2->java->jdk1.4.2->docs.
Ce premier exercice a pour but de vous faire parcourir un peu cette documentation
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.
A titre d'exercice retrouver :
- la documentation de la classe Math
de l'API java, classe définie dans le package java.lang.
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
?
..........................................................................................................................................................................................................
- la documentation de la classe Vector.
A quel package appartient cette classe ? ..............................................................................
- la documentation de l'interpréteur java.
Que signifie l'option -showversion
de l'interpréteur java
? Quelle est la différence avec l'option -version
?
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
- le guide sur les fonctionnalités (features) du langage et en particulier
la rubrique concernant les fichiers jar (jar files). Qu'est-ce qu'un fichier
jar ? Que signifie l'acronyme jar
? .................................................................................................................................................
.................................................................................................................................................
- le chapitre consacré aux collections dans le Java Tutorial.
- Quelle est l'URL du Java Tutorial ? ....................................................................
- Quelle est l'URL du chapitre sur les collections ? ................................................
exercice 2 : compiler et exécuter une application java
pour en savoir plus sur : le compilateur javac
et l'interpréteur java
|
Afin d'organiser correctements vos fichiers, nous vous recommandons de respecter
la règle suivante lors des TP de programmation : pour chaque TP créez
un répertoire TPi où i est le numero du TP. Si le TP comporte
plusieurs exercices indépendants, créer pour chaque exercice un
sous répertoire dans lequel vous rangerez les programmes associés
à cet exercice. Les commandes de manipulation des répertoires
dans la fenêtre de commandes windows sont identiques à celles utilisées
dans un shell Unix : mkdir pour
créer un répertoire, cd
pour changer de répertoire courant, rmdir
pour supprimer un répertoire)
- Sauvegardez dans le répertoire adéquat (par exemple EPO/TP1/exercice2)
le programme source HelloWorld.java (pour
sauvegarder le texte de ce programme dans un fichier cliquez sur le lien en
maintenant le bouton droit de la souris enfoncé et sélectionnez
l'option Enregistrez la cible sous (Save As) du menu qui apparaît),
- Compilez l'application HelloWorld.java.
- Quelle commande avez-vous utilisée ?
..........................................................................................................................
- Quel est le nom du fichier créé par cette commande de compilation
?
.............................................................................
...........................................
- Que contient-il ? (Affichez son contenu sur la console, commande type
sous Windows, more ou less
sous Unix)
.........................................................................................................................
- Invoquez la commande javap -c HelloWorld. Quel est l'effet de celle-ci
?.
.........................................................................................................................
- Exécutez l'application HelloWorld.
- Quelle commande avez-vous utilisée ?
................................... ........................................................................................
- Modifiez ce programme de manière à ce qu'il provoque l'affichage
suivant :
BONJOUR
CECI EST MON
PREMIER PROGRAMME JAVA
ou tout autre texte de votre choix.....
- Sauvegardez dans votre répertoire de travail le programme Hello2.java.
- Compilez ce programme et executez le successivement avec les commandes :
- java Hello2
- java Hello2 Marie
- 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 ?
........................................................................................................................................
........................................................................................................................................
exercice 3 : compiler et exécuter une applet java
pour en savoir plus sur : le visualiseur d'applets appletviewer |
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)
- sauvegardez sur votre compte NervousText.java
le source JAVA de cette applet,
- sauvegardez sur votre compte essaiapplet.htm
un exemple de fichier HTML qui incorpore cette applet,
- compilez la classe NervousText.java que vous avez sauvegardée
sur votre compte.
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 ?
.......................................................................................................................................................................
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 ? Par quelles méthodes
devraient-elles être remplacées (ce que nous ne ferons
pas ici) ?
..........................................................................................................................................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
.........................................................................................................................................................................
- 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é)
- en lançant depuis la ligne de commande la commande appletviewer
essaiapplet.htm
- Quel fichier devez vous modifier (NervousText.java et/ou essaiapplet.htm)
afin d'afficher le texte suivant : "VIVEMENT QUE NOUS PARTIONS AU SKI
!" (ou tout autre texte de votre choix) ?
.............................................................................................................................................................
- Faites ces modifications et testez les.
exercice 4 : Compilation, exécution, documentation d'une
application simple.
pour en savoir plus sur :
- le générateur de documentation javadoc
- le class
path : pour définir les règles de recherche des byte-codes
des classes java.
- la construction de fichiers jar
(fichiers Java ARchives)
|
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 on aura 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 doc
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 :
- VisageRond qui décrit
des objets modélisant un Visage animé.
- Dessin qui décrit
l'objet chargé de la gestion et l'affichage des différents objets
Visages qu'il contient
- AppliVisage1 le programe
principal qui crée les Visages, les place dans la zône de dessin
et lance l'animation.
a) compilation de l'application
- Créer un repertoire Visages avec trois sous répertoires
src , doc
et classes (commande mkdir
sous MS-DOS)
- Sauvegardez dans le répertoire src les fichiers sources
des différentes classes de l'application : VisageRond.java,
Dessin.java et AppliVisage1.java
- Placez vous dans le répertoire src (commande cd)
et compilez l'application AppliVisage1 en utilisant la commande
javac -d ../classes AppliVisage1.java
- Quel est le rôle de l'option -d
utilisée dans la commande
javac ?
......................................................................................................
- Quel aurait été l'effet de la commande javac
AppliVisage1.java ?
......................................................................................................
- Quels ont été les fichiers créés par la commande
de compilation de la classe AppliVisage1
?
......................................................................................................
- Qu'en déduisez-vous ? ...............................
.............................................................................................................................................................................................................
.............................................................................................................................................................................................................
b) exécution de l'application
- Placez-vous dans le répertoire classes
(commande cd) et exécutez
l'application AppliVisage1.
Faire CTRL C sur la
ligne de commandes pour arrêter l'application.
- Quelle est la commande utilisée pour lancer cette exécution
?
.............................................................
- Placez vous maintenant dans le répertoire Visages et retappez
la commande utilisée précédemment pour l'exécution
de l'application exécutez AppliVisage1.
- Quel message est affiché ?
.....................................................................
Que signifie-t'il ?
.....................................................................
- L'option -classpath (ou -cp) de la commande java
permet d'indiquer à l'interpréteur Java où trouver les
classes à charger (voir
la doc).
- En utilisant cette option quelle est la commande à utiliser pour
lancer l'application depuis le répertoire Visages ?
.....................................................................................................
- Déplacer le fichier AppliVisage1.class du répertoire
classes vers le répertoire
Visages (commande move
sous MS-DOS).
- Toujours en restant positionné dans le répertoire Visages
essayez d'éxecuter l'application AppliVisage1 par la commande
java AppliVisage1.
Que constatez-vous ?
..................................................................................................................................
Quelle explication pouvez-vous donner ?
.....................................................................................................................................
- Essayez ensuite d'éxecuter l'application AppliVisage1
par la commande utilisée à la question 3 de cet exercice.
Que constatez vous à nouveau ? Qu'en déduisez vous ? ........................................................................
- Quelle valeur faut-il donner à l'option -classpath pour
pouvoir lancer correctement l'exécution depuis le répertoire
Visages (avec dans ce repertoire
le fichier AppliVisage1.class,
et les fichier Dessin.class
et VisageRond.class situés
dans le répertoire classes)
?
.......................................................................................
c) construction et utilisation de fichiers jar
- 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 , fichier contenant le byte-code des classes
Dessin et VisageRond.
- En vous aidant de la documentation
de la commande jar , construisez un fichier JAR (Java Archive) de nom
visages.jar contenant ces deux fichiers.
- Quelle est la commande à utiliser ?
.........................................................................................................................................................................
- Si vous ne l'avez pas fait, ajoutez l'option v à la commande
utilisée ? Quel est son rôle ?
............................................................................................
- Que fait la ommande jar tvf Déplacez le fichier jar dans le répertoire
Visages.
- 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.
- Quelle est la commande à utiliser pour lancer cette exécution
? ..............................................................................................
- 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)
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
d) génération automatique de la documentation
Pour comprendre le fonctionnement et le rôle des différentes
classes de l'application Visages vous allez générez la documentation
de celles-ci à l'aide de l'outil javadoc.
- Si il n'existe pas encore, créez un répertoire docs
dans le répertoire Visages
- Placez vous dans le répertoire src et lancez la commande
javadoc -d ../docs *.java.
- Quels fichiers cette commande a-t-elle créés (et où
se trouvent-ils) ? .................................................................................
.......................................................................................................................................................................................
- Le point d'entrée de la documentation générée
est le fichier index.html.
- Ouvrez ce fichier depuis votre navigateur et parcourez cette documentation.
- 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.
- En comparant la documentation générée et le code
sources des différents classes Java, pouvez déduire quels
ont été les élements des fichiers sources ayant permis
de produire cette documentation ?
...................................................... ......................................................................................................
.............................................................................................................................................................
- Les méthodes setDy et getDy de la classe VisageRond ne sont pas documentées.
- Modifiez le source de la classe VisageRond afin de documenter ces méthodes.
- Regénérez la documentation.
- Vérifiez que vos modifications ont correctement été
prises en compte.
e) Modification d'une classe de l'application
pour en savoir plus sur :
|
- 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
- Recompilez cette classe (en prenant bien soin de placer le fichier bytecode
dans le répertoire classes).
- Quelle commande avez vous utilisée ? ................................................................................
- Quelles ont été les classes recompilées ? ............................................................................
- Vérifiez que votre modification fonctionne en réexécutant
l'application AppliVisage1.
- Quelle commande avez vous utilisée pour cette exécution
? ...............................................................................
f) Erreurs de compilation
- Sauvegardez dans le répertoire src le fichier : AppliVisage2.java
- Placez vous dans le répertoire src et compilez AppliVisage2
avec la commande javac -classpath ../classes -d ../classes AppliVisage2.java.
- Quels sont les erreurs de compilation et les corrections que vous proposez
?
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
- Après avoir effectué ces modifications, recompilez et exécuter
l'application AppliVisage2.
g) Erreurs d'exécution
- Sauvegardez dans le répertoire src le fichier : AppliVisage3.java
- Placez vous dans le répertoire src et compilez AppliVisage3
avec la commande javac -classpath ../classes -d ../classes AppliVisage3.java
- Exécutez l'application AppliVisage3.
- Que se passe-til ? ..........................................................................................
- A l'aide du message d'erreur produit, localisez et corrigez l'erreur. Quelle
correction avez vous effectuée ?
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
- Recompilez et réexecutez cette application.
Si vous voulez voir d'autres démonstrations de programmes et d'applets
Java : http://java.sun.com/j2se/1.4.2/docs/relnotes/demos.html