Les paquetages, la compression de paquetages et la génération d'aide

        

 

1.  LES PAQUETAGES (Packages)

 

1.1    Définition

Un paquetage est un ensemble de classes regroupées par domaine d'utilisation.

Exemple : les paquetages java.io, java.awt, etc.

 

 

1.2   Création d'un paquetage

Deux solutions :

1ère solution :

@Créer un sous-répertoire dans un des répertoires définis dans CLASSPATH (par exemple, on pourra créer le sous-répertoire monpack dans E:\ClassesJava si E:\ClassesJava appartient au classpath).

@Créer les sources des classes en écrivant en tout début de programme la ligne package nomPackage; (exemple : package monpack;) et les placer dans le sous-répertoire créé (donc ici dans E:\ClassesJava\monpack).

@Compiler les sources, cela produit les .class du package dans le répertoire E:\ClassesJava\monpack .

 

Remarque : après la création du .class, les sources peuvent être placées ailleurs que dans le package.

 

2ème solution :

@Créer les sources des classes en écrivant en tout début de programme la ligne package nomPackage; (exemple : package monpack;) et les placer dans un répertoire à part (exemple : C:\SourcesJava).

@Compiler directement les sources sans créer préalablement le sous-répertoire associé au package par exemple, on lancera la commande :

javac  -d  E:\ClassesJava  C:\SourcesJava\nom_du_programme.java

pour créer le sous-répertoire monpack dans E:\ClassesJava (E:\ClassesJava doit figurer dans le CLASSPATH) et y créer le .class.

Remarque : si le répertoire monpack existe déjà, il y a uniquement création du .class.

 

Remarques :

Généralement un package contient plusieurs classes et est organisé de façon hiérarchique sur plusieurs sous-répertoires (voir TP).

Si le paquetage n'est pas spécifié, il y a un paquetage par défaut : c'est le répertoire courant et il est constitué de tous les .class y figurant.

Les classes des paquetages doivent être publiques.

 

 

1.3    Utilisation d'un paquetage

On peut utiliser les classes d'un paquetage en préfixant la classe du nom du paquetage ce qui n'est pas très pratique. Le mieux est d'importer le paquetage : pour cela, il faut placer la ligne import nomdupaquetage.*; en début de programme si on souhaite importer toutes les classes du paquetage ou bien importnomdupaquetage.NomClasse; si on souhaite importer une seule classe du paquetage.

Attention, si on a un paquetage sous_pack inclus dans pack, le fait d'inclure pack.* permettra uniquement l'accès aux classes figurant directement dans pack, il faudra importer pack.sous_pack.* pour avoir accès aux classes de sous_pack.

Les paquetages sont utilisés :

. lors de la pré-compilation des programmes les important,

. lors de l'exécution des programmes les important.

Attention : lors de la pré-compilation d'un programme important des paquetages, il faut être vigilant sur l'organisation des fichiers car Java sait compiler des fichiers sources "à la volée". Donc s'il  trouve en utilisant la variable CLASSPATH ou l'option -classpath de javac un fichier .java avant le fichier correspondant .class (le pré-compilateur peut très bien trouver un fichier .java dans le 2ème répertoire du CLASSPATH alors que le .class figure dans le 1er répertoire du CLASSPATH), il le recompilera, ce qui non seulement ralentira l'exécution, mais pourra même la faire échouer.
 

2.           LA COMPRESSION DES PAQUETAGES

2.1    Introduction

Les paquetages vont être compressés dans des fichiers d'extension jar.

Un "jar" peut contenir d'autres fichiers en plus des .class, on peut y inclure aussi notamment les manuels utilisateurs, la documentation technique des programmes et de l'application,

L'utilisation des jar est particulièrement pertinente avec les beans et même les applications. En fait, le format jar est le format de diffusion de composants java.

Un jar peut être signé ce qui permet d'assouplir et d'élargir le modèle de sécurité, notamment des applets qui ont des droits restreints par défaut.

Une archive jar contient un fichier manifest qui permet de préciser le contenu du jar et de fournir des informations sur celui-ci (classe principale, type de composants, signature...).


 

2.2    Création d'un jar

Création d'un jar contenant tous les fichiers du répertoire courant et des sous-répertoires

avec un fichier manifest créé automatiquement :

jar cf test.jar monpack

Si on reprend l'exemple précédent, on devra se placer dans le répertoire support de monpack donc ici dans E:\ClassesJava pour la création du jar et ensuite on supprimera le répertoire monpack.

Le nom du jar (précédé de son emplacement) doit être indiqué

Remarque : si on a un jar contenant toutes les classes au même niveau, il n'est pas nécessaire de placer les classes dans un paquetage. Il suffira de mettre le nom du jar dans le CLASSPATH.

Mais généralement, on organise les classes en paquetages et ensuite on compresse l'ensemble dans un jar.

On emploiera généralement la commande jar avec les options suivantes :

cf

Création d'un nouvelle archive

tf

Affiche le contenu de l'archive

xf

Extraction du contenu de l'archive

uf

Mise à jour ou ajout de fichiers à l'archive 

 

Autre exemple : lister le contenu d'un jar

jar tf test.jar

 

2.3 Utilisation d'un jar

Le jar est uniquement à préciser dans le CLASSPATH.


 

3.  GENERATION D'AIDE HTML A PARTIR D'UN PROGRAMME JAVA

Pour générer un document "d'aide Html" du style de l'API d'aide fournie par Sun, il faut insérer dans son programme java des commentaires interprétables par celui-ci, c'est à dire au format /** … **/ et utiliser l'utilitaire javadoc.

 

L'utilitaire javadoc peut s'utiliser :

. à partir d'une fenêtre de commandes :

javadoc nomduprogramme.java

OU

. à partir d'un éditeur (exemple avec UltraEdit) :

il faut créer un outil personnalisé :

image

Après l'utilisation de cette commande, un fichier html : nomduprog.html sera créé dans le répertoire courant.

 

L'utilisation de javadoc nécessite que les classes soient publiques.

 


Extrait de Factorielle2.java :

 

 

import java.io.*;

/**  Ma classe Factorielle2 **/

public class Factorielle2

{

            /**  Méthode main **/

            public static void main(String args[]) throws IOException

            {

                       

                       

La commande javadoc Factorielle2.java produit le fichier Factorielle2.html suivant :

 

image