Nous avons vu que Java préconisait l’écriture d’une classe par fichier comme "bonne habitude de programmation". Un projet complet pouvant être constitué d’un grand nombre de classes, il devient vite nécessaire de pouvoir les ranger, les trier, les structurer convenablement.
Ce problème est analogue à celui que l'on rencontre lorsque l'on veut classer un très grand nombre de fichiers sur un disque : on crée une structure de répertoires, afin de les classer. Java propose la même approche : ranger ses classes dans des répertoires. Simplement, plutôt que de parler de répertoire, on parle de paquet (
package
en anglais).
Les paquets permettent de ranger des classes Java dans une structure hiérarchique que l’on peut définir soi-même. Formellement, un paquet est un répertoire, défini sur le disque dur ou dans un fichier archive, par exemple de type zip. On peut bien sûr créer des sous-répertoires dans ce répertoire, sur autant de niveaux que l’on veut.
Lors du lancement d'une application, on informe la machine Java du, ou des répertoires racine dans lesquels se trouve cette structure. La machine Java est ensuite capable de scruter ces répertoires ou ces fichiers archives à la recherche de classes.