Retour | Home | Contact |
---|
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 %JAVA_HOME%/lib/ 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 LaClasse.getClassLoader() .
Une classe utilisateur (provenant du CLASSPATH ou d'ailleurs)
retournera une instance de java.net.URLClassLoader (par défaut
sun.misc.AppLauncher$AppClassLoader ) , 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 http://
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 :
Retour | Home | Contact |
---|