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

https://docs.oracle.com/javase/specs/jls/se7/html/jls-7.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)