Chargeur de classes.
Charger en mémoire des classes Java compilées.
Les ClassLoaders permet à une plate-forme Java de définir des classes en mémoire. Eux seuls déterminent l'origine du code d'une classe et les permissions qui lui sont associées, en fonction de cette origine et de la politique de sécurité en vigueur.
La règle de chargement d'une classe est : toute classe B nécessaire à une classe A est chargée par le ClassLoader de A.
Les ClassLoaders définissent une classe en mémoire à partir d'un ensemble d'octets, pouvant provenir d'un fichier de
classe (.class
) local, du réseau, ou de tout autre source capable de fournir des octets (y compris la
mémoire).
ClassLoader | Version | 1 | Commentaire | |||||
---|---|---|---|---|---|---|---|---|
Domaine | Technologie | Release | 1 | 2 | 3 | 4 | 5 | |
Type | système | Chargement de l'ensemble des classes (système ou non) accessibles depuis le CLASSPATH
|
Chargement des classes de la plate-forme Java (Core API), c'est-à-dire provenant
des fichiers situés dans et %JAVA_HOME%/jre/lib/ext/ |
Privilégié dans la mesure où il n'est pas un ClassLoader à proprement parler (il est en grande partie écrit en
code natif, charge les classes d'une manière spécifique à la plate-forme, n'hérite pas de java.lang.ClassLoader,
et n'est pas accessible par le développeur). On peut identifier les classes chargées par ce ClassLoader en
examinant la valeur retournée par <i>LaClasse</i>.getClassLoader() . Une classe utilisateur (provenant
du CLASSPATH ou d'ailleurs) retournera une instance de java.net.URLClassLoader (par défaut
) ,
tandis qu'une classe système retournera null , ce qui désigne le chargeur de classe système. Les
chargeurs de classes sont également responsables du chargement d'autres ClassLoaders, ce qui implique une
définition circulaire. C'est pourquoi on appelle le chargeur système le primordial class loader (on trouve
également les termes de internal class loader, bootstrap class loader ou default class loader,
cette dernière appelation étant trompeuse dans la mesure où le chargement d'une classe par défaut ne passe plus
dans Java 2 par ce chargeur mais par un véritable ClassLoader).
|
||||
RMI | Oui | Comme le chargeur de classes système, ce chargeur n'est pas un ClassLoader à proprement parler (il n'hérite pas
de java.lang.ClassLoader ).
|
||||||
Sécurisé | Non | java. security. SecureClassLoader |
Spécialisation de de ClassLoader prenant en compte les domaines de protection (origine du code : URL + certificats). | |||||
URL | Non | java. net. URLClassLoader |
Spécialisation du SecureClassLoader ancètre des ClassLoaders chargeant des classes non-système.
permet de charger une classe référencée par une URL (de type https:// ou file:// ),
située dans un fichier (.class ou .jar ) où à partir d'une liste d'URL par ordre de
préférence. Par défaut, les classes chargées depuis un tel ClassLoader sécurisé ne pourront accéder qu'aux classes
provenant d'une des URL spécifiées dans l'invocation de ce ClassLoader.
|
|||||
Applet | Oui | Oui, sécurisé (hérite de java. security. SecureClassLoader ) |
Les chargeurs d'applets, bien que non standards (issus de packages propriétaires de Microsoft, Netscape ou Sun),
sont généralement inspirés du chargeur privé sun.applet.AppletClassLoader , utilisé dans l'outil
appletviewer . ClassLoader par délégation.
|
int
). Le ClassLoader d'un tableau est le ClassLoader correspondant au type des
éléments de ce tableau.Des exemples de ClassLoader sont :