web-dev-qa-db-fra.com

Comment le Java Bootstrap Classloader est-il chargé?)

En Java, il est dit que toutes les classes sont chargées par des chargeurs de classe.

Donc tout d'abord, bootstrap classloader charge toutes les classes rt.jar.

Donc je suis toujours confus car Classloader est aussi une classe, alors qui va charger ce BootStrapClassloader.

Veuillez expliquer.

32
Sunny Gupta

Réponse : Lorsqu'une machine virtuelle Java démarre, un bloc spécial de code machine s'exécute et charge le chargeur de classe système. Ce code machine est connu sous le nom de Bootstrap / Primordial (ou parfois - Null ) chargeur de classe.

Ce n'est pas du tout une classe Java Java, comme tous les autres chargeurs de classe. Le chargeur de classe bootstrap est des instructions machine spécifiques à la plate-forme qui lancent tout le processus de chargement de classe).

Tous les chargeurs de classe, à l'exception du bootstrap classloader, sont implémentés en tant que Java. Quelque chose doit charger le tout premier Java classloader pour démarrer le processus. Charger le premier Java classloader pur est le travail du bootstrap classloader.

Le bootstrap classloader prend également en charge le chargement de tout le code nécessaire pour prendre en charge le Java Runtime Environment (JRE) de base, y compris les classes dans Java.util et les packages Java.lang.

Source: http://www.theserverside.com/tutorial/Classloaders-Demystified-Understanding-How-Java-Classes-Get-Loaded-in-Web-Applications

32
Raúl

Bootstrap Classloader, étant un chargeur de classe et tout, fait en fait partie du noyau JVM et il est écrit en code natif.

Les chargeurs de classe peuvent être des objets, ils ont également besoin d'une représentation. En fait, cela permet également la création de chargeurs de classe définis par l'utilisateur.

9
Fritz

Il y a un idiome en anglais: "Il s'est relevé par ses bootstraps." Les sangles de démarrage sont les petites poignées des côtés supérieurs des bottes et, bien sûr, c'est impossible.

http://en.wikipedia.org/wiki/Booting

L'article explique le processus de démarrage d'un ordinateur, qui est l'abréviation de bootstrapping.

Ce qui se passe avec chaque programme de chaque type, c'est qu'un chargeur quelconque copie certains octets en mémoire quelque part et commence l'exécution à un endroit prédéfini dans ces octets.

Pour Java, le chargeur de démarrage peut ou non être une classe Java. (Quelqu'un le sait probablement.) Mais c'est un programme quelconque qui charge les toutes premières classes en mémoire et provoque la JVM pour commencer à exécuter ces bits de code Java Java chargé. Peut-être qu'il charge le code JVM lui-même. Peut-être qu'il s'assure simplement qu'un bit de code précédent a chargé la JVM. avoir déjà été chargé et en cours d'exécution.

C'est juste une partie du processus.

4
Lee Meador