Paquetages

Pour faciliter la modularité, Java fournit le mécanisme de paquetage.

Utilisation d'un paquetage

Pour pouvoir utiliser une classe dans un code n'appartenant au même paquetage, on peut soit faire précéder le nom de cette classe du nom du paquetage, soit importer la classe à l'aide du mot clé import.  Cette deuxième solution est généralement celle utilisée. Par exemple, si vous souhaitez utiliser la classe Vector du paquetage java.util, vous devez au début de votre fichier (derrière l'éventuelle déclaration package <nom>;) rajouter :
import java.util.Vector;
Si plusieurs classes de ce paquetage sont utilisées, vous pouvez utiliser un seul import :
import java.util.*;
Bien sûr, il faut également que les contrôles d'accès sur la classe importée permette son utilisation.
Attention, le * ne permet le chargement que des classes appartenant directement au paquetage et non celles appartenant à un éventuel sous-paquetage.

Création d'un paquetage

Le paquetage d'une classe est défini par la déclaration package <nom>; située au tout début du fichier. Le nom du paquetage peut être formé d'un ou plusieurs mots qui sont alors séparés par des points. Ces mots sont en minuscule.

Découpage

Un bon découpage en paquetages et sous-paquetages est un problème de conception modulaire, ce qui nécessite une bonne maîtrise de la programmation en général et de la programmation par les objets en particulier !

Compilation et exécution

Si vous utilisez les paquetages, vous devrez faire particulièrement attention à l'organisation de vos fichiers. En effet, Java est capable de 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, il le recompilera, ce qui non seulement ralentira l'exécution, mais pourra même la faire échouer.
Il est donc indispensable de bien séparer les fichiers objets des fichiers sources.
D'autre part, Java créera pour chaque mot du nom du paquetage (séparés par des points) un sous-répertoire. Ainsi, si vous compilez le fichier Devise.java du paquetage gestion.devise, le chemin d'accès au fichier compilé se terminera par gestion/devise/Devise.class. Le répértoire gestion sera lui même dans le répértoire précisé par l'option -d de javac, ou dans le répertoire courant si -d n'est pas utilisée.