V.
Les paquetages en Java
V.1
Notion de paquetage
Un paquetage (package en anglais) est
ensemble de classes, de classes abstraites, et d'interfaces.
Chacun
de ces 3 éléments est stocké sur disque dur dans un fichier .class .
Le paquetage est un répertoire sur disque
dur, et par convention, est toujours
intégralement en minuscules.
Exemple :
Dans java, on trouve un paquetage awt
qui regroupe toutes les classes permettant de créer des interfaces utilisateurs
graphiques.
De
même qu'il existe des sous-répertoires, il existe des sous-paquetages.
Exemples :
awt est en fait un sous-paquetage du
paquetage de 1er niveau java ;
swing est un sous-paquetage du paquetage de 1er
niveau javax ;
event est un sous-paquetage de awt .
V.2
Accès
En l'absence de directives particulières, on
ne peut utiliser que les classes qui sont dans le même paquetage que la classe
que l'on est en train de définir.
Mais il est possible de spécifier quelles
classes d'autres packages on souhaite
utiliser par l'instruction import .
Exemple :
import javax.swing.JButton;
donne le droit d'utiliser la classe dont le
fichier compilé se trouve dans javax/swing/JButton.class .
Une
exception le paquetage java.lang .
Il est importé par défaut car il contient
des éléments essentiels du langage java, tels que les classes enveloppes ou les
classes Math et String.
NE
PAS UTILISER LA FORME import xxx.yyy.*;
V.3
Paquetage courant (anonyme ou nommé)
Lorsque nous définissons les classes Rectangle,
Cercle, et Vehicule, comment se fait-il que, dans la classe Vehicule,
nous ayons accès aux classes Rectangle et Cercle sans avoir
besoin de les importer ?
Tout simplement parce-qu'elles sont toutes
dans le même répertoire, ce qui reproduit la structure d'un paquetage, même si
celui-ci n'a pas de nom particulier puisque c'est le "répertoire
courant"; on dit que c'est le package anonyme.
Si on veut qu'il porte le nom nomPackage,
il faut débuter chaque fichier .java par la ligne package nomPackage;
V.4
Paquetages standard
Un des atouts majeurs de java est de fournir un grand nombre de classes et de méthodes prêtes à l'emploi; grand nombre veut dire ici plusieurs milliers de classes et plusieurs dizaines de milliers de méthodes.
On ne pourrait pas s'y retrouver sans d'un
part la structure hiérarchisée permise par la notion de paquetage, et d'autre
part la javadoc générée automatiquement à partir des sources.
Il
y a d'abord 3 paquetages de 1er niveau (3 racines d'arborescences) :
-
java (paquetages "proches" du
langage)
-
javax (eXtensions de java)
-
org (paquetages fournis par d'autres
organisations que Sun)
mais
on peut en ajouter d’autres (non fournis avec le JDK).
Lorsqu'on
descend d'un niveau, on ne peut déjà plus être exhaustif.
Il est quand même fortement conseillé de
parcourir la documentation Sun
http//java.sun.com/javase/6/docs/api/index.html
pour
se rendre compte des possibilités offertes par cet environnement.
Les
paragraphes suivants peuvent être considérés comme un « guide de
visite ».
V.4.1
Paquetages java
- awt
(Abstract Windowing Toolkit), déjà évoqué,
et notamment la classe Frame
- awt.event,
pour pouvoir gérer les évènements souris notamment
- io
(Input/Output), pour les entrées/sorties écran, clavier, et fichiers
- lang
(LANGage), déjà évoqué
et notamment les classes enveloppes, Object,
Math, String, System
- text,
pour pouvoir manipuler du texte avec des attributs et formater des valeurs
(voir notamment la classe NumberFormat)
- util
(UTILitaires) pour gérer des collections de données, des informations du
calendrier, la localisation, les nombres aléatoires, ...
- en
vrac, également des paquetages pour gérer les applettes, les calculs
mathématiques de grande précision, les réseaux, les applications distribuées,
les bases de données, la sécurité, ...
V.4.2
Paquetages javax
-
imageio, pour la lecture/l'écriture/la conversion des images
-
sound, pour la manipulation des sons (midi ou échantillonnés)
- swing,
pour créer des interfaces utlisateurs graphiques avec un niveau d'abstraction
supérieur et le choix du "look-and-feel", et notamment les classes JApplet,
JButton, JFrame, JMenu
- en
vrac, également des paquetages pour gérer la cryptographie, XML, l'impression,
et des compléments sur les réseaux, la sécurité, les bases de données, ...
V.4.3
Paquetages org
Chaque organisme propose un sous-paquetage contenant lui-même en général plusieurs sous-paquetages.
Exemples d'organismes :
- IETF (The Internet Engineering Task Force)
- OMG (Object Management Group)
- W3C (The World Wide Web Consortium)