Page de garde Outils du JDK Novembre 2000
Page de garde Outils du JDK Novembre 2000 Yannis. BRES@cma. inria. fr
Présentation du JDK Le JDK Java Development Kit, fourni gratuitement par Sun Microsystems : Une machine virtuelle Java (JVM) Des outils Compilateur, déboggeur, profileur, générateur de documentation, … Des classes Organisées en packages, documentées et avec les sources Pour Windows 9 x, Windows NT 4, Sun. Solaris, ~Linux, OS/2…
javac, le compilateur Compile des sources Java en bytecode Java, assembleur pour une machine virtuelle Java Une seule compilation pour toutes les architectures possédant une JVM Chaque fichier. java est compilé en un ou plusieurs fichier. class L'arborescence (packages) des fichiers est respectée Un nom du fichier doit correspondre au nom de la seule classe publique qu'il peut contenir Un chemin d'accès relatif à un fichier doit correspondre au package spécifié dans ce fichier
javac, le compilateur Compilation simple : javac classe 1. java … Possibilité d'indiquer la liste des sources dans un fichier texte : javac @Liste. Des. Sources. txt Modification des chemins de recherche des classes référencées : –classpathlist Modification du répertoire de recherche des fichiers sources : –sourcepathlist Spécification du répertoire cible des classes compilées : –d targetdirectory
javac, le compilateur [Re-]compilation récursive des classes référencées : -Xdepend Génération d'informations de débogage complètes ou limitées : -g, –g{[source], [lines], [vars]} Activation des optimisations de compilation : -O Détails sur l'utilisation ou la spécialisation de classes et méthodes obsolètes –deprecation Cross-compilation : –target 1. 2 ou -target 1. 1 (par défaut : 1. 1) Mode verbeux, désactivation des avertissements : –verbose, –nowarn
java, la Java Virtual Machine Interprète le bytecode en simulant une machine virtuelle Java (processeur, mémoire, …) A l'aide de Just-In-Time (JIT) Compilers, le code peut être traduit à la volée en code natif La classe spécifiée doit contenir une méthode statique main : public static void main( String[] ) Toutes les classes doivent être accessible à partir du classpath Les classes peuvent être réunies dans une archive Java (. jar)
java, la Java Virtual Machine Exécution de la main-class Main : java Main Modification des chemins de recherche des classes référencées : java –classpathlist ou –cp classpathlist Exécution à partir d'une archive Java (main-class spécifiée dans le Manifest) : java –jar projet. jar Activation du débogger ou du profiler : –Xdebug, -Xrunhprof Mode verbeux : –verbose, –verbose: [class|gc|jni] Affichage de la version du JDK : –version
jar jar, l’archiveur Réunit toutes les fichiers d'un projet en une seule archive. jar Réduction de la taille des fichiers (compression Zip) Téléchargement en une seule transaction HTTP Signature électronique des classes (RSA, DSA, PGP, …) Archivage arborescent Possibilité d'extraire des fichiers du. jar à l'éxécution (images, …), cf java. util. jar Exécution par la JVM sans extraction préalable
jar jar, l’archiveur Syntaxe proche de la commande tar : Archivage simple de fichiers : jar cf Projet. jar fichier 1 … Archivage récursif de répertoires : jar cf Projet. jar répertoire 1 … Liste des fichiers de l'archive : jar tf Projet. jar Extraction des fichiers de l'archive : jar xf Projet. jar Extraction de certains fichiers de l'archive : jar xf Projet. jar file 1 …
jar Le fichier Manifest Un exemplaire par archive : META-INF/MANIFEST. MF Peut indiquer : La classe de démarrage de l’application Pour des classes : La signature numérique (cryptage RSA, DSA, PGP, …) Différents attributs des classes Pour des packages : Des informations de version Si le package est scellé, … jar crée automatiquement un fichier Manifest minimal par défaut
jar Le fichier Manifest Le fichier manifest-addition. txt contenant simplement : Main-Class: projet. Main Création du. jar par : jar cmf Projet. jar manifest-addition. txt fichier 1 … Exécution directe : java -jar Projet. jar
La documentation du JDK "Avec" le JDK sont fournies un ensemble de pages Web (plus de 80 Mo !) contenant : La documentation des outils du JDK Le résumé des principales fonctionnalités standards de Java La documentation des classes du JDK, produite à partir des sources de ces classes De nombreux liens vers divers sites
La documentation des classes du JDK Sous le répertoire api, index. html met en place les différentes frames : Les packages Les classes Le package ou la classe
javadoc, le générateur de documentation Génère la documentation d’un projet de manière similaire à celle des classes du JDK Utilise le compilateur Java pour énumérer dans chaque fichier source : Les classes Les attributs Les constructeurs et les méthodes Et leur associe le commentaire javadoc correspondant Reconstruit l’arborescence des packages Reconstruit l’arborescence des classes Génère un index de tous les packages, classes, attributs, méthodes, … Utilise des doclets personnalisables pour générer les fichiers Le doclet standard produit de l’HTML
javadoc Format des commentaires Javadoc Pour chaque package, un fichier package. html, le texte étant encadré par les tags : <BODY> et </BODY> Avant chaque classe, attribut, constructeur, méthode, … un commentaire de la forme : /** Le nombre d’objets stockés. */ private int i. Item. Count= 0; Ou /** * Renvoie l’élément dont l’index est spécifié. * L’accès s’effectue en temps linéaire. */ public int get. Item. Count() Les commentaires courts (première forme) sont essentiellement utilisés pour les attributs. Le format court ne contient que la première "phrase", terminée par un point suivi d’un blanc, une tabulation, une fin de ligne ou un tag Javadoc.
javadoc Format des commentaires Javadoc Le texte des commentaires doit être au format HTML (de préférence 3. 2 compliant) : Possibilité d’utiliser des tags comme : <B> et </B> pour délimiter le gras <I> et </I> pour délimiter l’italique <P> pour les paragraphes <CODE> et </CODE> pour utiliser une fonte à chasse fixe … Les entités HTML devraient être utilisées : < et > pour < et >, …
javadoc Les tags Javadoc Les commentaires peuvent contenir des tags (préfixés par @), analysés par le générateur : @author name @deprecated text @exception|@throws class description @param name description @return description @see "string" @see HTML_hyperlink @see package. class#member label @since version @version {@link name label} …
javadoc Exemple de commentaire de classe Extrait de …javalangString. Buffer. java : /** * A string buffer implements a mutable sequence of characters. * A string buffer is like a {@link String}, but can be modified. [. . . ] * String buffers are used by the compiler to implement the binary * string concatenation operator <code>+</code>. For example, the * code: * <p><blockquote><pre> * x = "a" + 4 + "c" * </pre></blockquote><p> [. . . ] * @author Arthur van Hoff * @version 1. 45, 10/27/98 * @see java. io. Byte. Array. Output. Stream * @see java. lang. String * @since JDK 1. 0 */ public final class String. Buffer
javadoc Exemple de commentaire de classe Extrait de la documentation générée pour le package java. lang :
javadoc Exemple de commentaire de classe Extrait de la documentation générée pour la classe java. lang. String. Buffer :
javadoc Exemple de commentaire d'attribut Extrait de …javalangLong. java : /** The largest value of type <code>long</code>. */ public static final long MAX_VALUE = 0 x 7 ffffffff. L;
javadoc Exemple de commentaire d'attribut Extrait de la documentation générée pour la classe java. lang. Long :
javadoc Exemple de commentaire de méthode Extrait de …javalangString. java : /** * Returns the character at the specified index. An index ranges * from <code>0</code> to <code>length() - 1</code>. The first * character of the sequence is at index <code>0</code>, the next * at index <code>1</code>, and so on, as for array indexing. * * @param index the index of the character. * @return the character at the specified index of this string. * The first character is at index <code>0</code>. * @exception Index. Out. Of. Bounds. Exception if the <code>index</code> * argument is negative or not less than the length of * this string. */ public char. At( int index )
javadoc Exemple de commentaire de méthode Extrait de la documentation générée pour la classe java. lang. String :
javadoc Utilisation de javadoc Documentation d’une liste de classes : javadoc classe 1. java … Documentation d’une liste de packages (préférable) : javadoc package 1 … Possibilité d'indiquer la liste des classes/packages dans un fichier texte : javadoc @Liste. Des. Sources. txt Limitation des membres pris en compte en fonction de leur visibilité : -public, -protected, -package, -private Modification des chemins de recherche des classes référencées : –classpathlist Spécification des chemins de recherche des sources : -sourcepathlist
javadoc Utilisation du doclet standard Spécification du répertoire cible des fichiers produits : –d targetdirectory Enumération de toutes les utilisations de chaque classe et package : -use Spécification du titre de la fenêtre, du document : -windowtitle, -doctitle htmldoctitle Spécification de l’en-tête et des bas de page : -header htmlheader, -footer htmlfooter, -bottom htmlbottom Liaison avec d’autre pages javadoc (par ex. le site de Sun sur l’API du JDK) : -link http: //java. sun. com/products/jdk/1. 2/docs/api -linkoffline doc. URL packagelist. URL …
- Slides: 26