|
La programmation Java
consiste à créer des classes. Or, étant
donné qu'un programme est généralement
développé par une équipe de programmeurs,
c'est-à-dire plusieurs personnes, le fait de concaténer
(mettre bout à bout) des classes dans un fichier est
loin d'être satisfaisant. C'est pour cette raison que
Java propose l'utilisation de packages (comparables
aux bibliothèques du langage
C++/C)
Ainsi, un package est
une unité (un fichier) regroupant des classes. Pour
créer un tel package, il suffit de commencer le fichier
source contenant les classes à regrouper par l'instruction
package suivi du nom que l'on désire donner
au package. dès lors, toutes les classes contenues
dans le fichier feront partie du package...
Les packages sont organisés
sous forme de hiérarchie, c'est-à-dire qu'il
est possible de les imbriquer, pour cela Java impose que l'emplacement
des fichiers sources (donc des packages) correspondent à
la hiérarchie des packages, c'est pour cela qu'un package
portant le nom MonPackage doit être stocké dans
un répertoire du même nom. De plus, pour que
le compilateur puisse trouver le package, il est essentiel
qu'il "connaisse" l'emplacement du package. Pour cela Java
utilise une variable d'environnement (dans le même ordre
d'idée que la variable d'environnement PATH)
appelée classpath donnant la liste des chemins
d'accès aux classes.
Par défaut le compilateur (ainsi que la machine virtuelle)
recherchent les classes dans le répertoire courant
et le répertoire des classes standards.
Pour définir la variable
d'environnement classpath
- sous Linux, il faut utiliser
la commande suivante:
export CLASSPATH = <repertoire>:<repertoire>;...
par exemple:
export CLASSPATH = /home/jeff/java:/usr/lib/jdkx.x.x/lib/classes.zip:...
- sous Windows, il faut utiliser
la commande suivante:
SET CLASSPATH = <repertoire>;<repertoire>;...
par exemple:
SET CLASSPATH = c:\java;c:\jdkx.x.x\lib\classes.zip;...
Pour pouvoir accèder
aux classes d'un package à partir d'une classe ne faisant
pas partie du package, il suffit de donner le chemin d'accès
relatif à la classe lorsque vous faîtes appel
à elle. Ainsi, pour faire appel à la classe
MaClasse du package MonPackage, il suffit d'écrire:
MonPackage.MaClasse
Toutefois il s'avére
vite embarrassant d'avoir à écrire constamment
le chemin d'une classe, ainsi il est généralement
pratique d'utiliser l'instruction import, suivie du
chemin de la classe:
import MonPackage.MaClasse;
Il est également possible d'importer
toutes les classes d'un package par la syntaxe:
import MonPackage.*;
Voilà ce à quoi ressemble
une application Java utilisant des packages (c'est-à-dire
tous ou presque car vous aurez à utiliser des packages
fournis avec le JDK):
import java.awt.Button; // On importe la classe Button
import java.rmi.*; // On importe toutes les classes RMI
class Exemple {
static void main(String argv[]){
Rect MonRect =new Rectangle();
...
}
}
|
Contrairement à ce que l'on
pourrait croire, l'instruction import MonPackage.*; permet
de rendre accessible uniquement les classes contenues
dans le package MonPackage et non à l'ensemble
des packages dont le nom commence par MonPackage, c'est-à-dire
que la classe MonPackage.pack1.MaClasse ne sera pas accessible...
|
Etant donné la structure
hiérarchique des packages et le nombre considérables
de packages créés par des développeurs
du monde entier, il est essentiel d'éviter de donner
le même nom à des packages différents.
Ainsi Java propose une dénomination standard des packages.
Cette appellation standard consiste à donner un nom
au package et de "l'allonger" par le nom de la société,
ou du concepteur des classes qu'il contient. Ainsi, un package
soundstuffs développé par CCM aurait
pour dénomination net.commentcamarche.soundstuffs.
L'accessibilité
des données membres et des méthodes d'une classe
existe aussi au travers des packages. Ainsi, une classe n'est
par défaut visible qu'à partir des classes faisant
partie du même package. Or l'intérêt d'un
package est justement de pouvoir être utilisé
à partir de classes déclarées dans un
autre fichier, c'est la raison pour laquelle les classes d'un
package destinées à être exportées
doivent impérativement être déclarées
publiques...
Java définit
deux packages par défaut, c'est-à-dire un ensemble
de classes auxquel il est possible de faire référence
sans spécifier le chemin d'accès (que ce soit
avec une instruction import ou en faisant précéder
le nom par la hiérarchie de packages). Ces packages
sont:
- Le package par défaut:
il s'agit de toutes les classes ne faisant pas partie explicitement
d'un package et situées dans les répertoires
accessibles (par défaut ou dans la variable classpath)
- Le package java.lang contenant
les classes standards telles que System ou Math
Avec la croissance
des réseaux, les applications sont vouées à
voyager, il faut donc s'assurer:
- qu'elles restent intactes
- que tous les éléments (packages)
de l'application sont présents
- de rendre l'application la moins gourmande
en espace
Ainsi, Java propose l'utilitaire jar
dans le JDK, un utilitaire permettant
de rassembler les différentes classes (fichiers .class)
d'une application au sein d'une archive compressée, appelé
package, afin d'en assurer l'intégrité et la taille.
Grâce à cet
utilitaire, il est possible d'appeler à partir d'une
page Web l'ensemble des classes d'une applet en faisant uniquement
référence à l'archive (dont l'extension
est .jar).
La syntaxe de jar
est proche de celle de tar sous Unix:
|
- Lorsque vous utilisez une archive
Jar sur Internet, toutes les classes de celle-ci seront
téléchargées en même temps,
veillez donc à y inclure uniquement les classes
nécessaires pour une application donnée
- L'utilitaire MoaJar
permet de manipuler les archives Jar à
l'aide d'une interface graphique
|
 
|