Java Classloader
El Java Class Loader és una part de l'entorn d'execució de Java que carrega dinàmicament classes de Java a la màquina virtual de Java.[1] Normalment les classes només es carreguen sota demanda. La màquina virtual només carregarà els fitxers de classe necessaris per executar el programa.[2] El sistema de temps d'execució de Java no necessita saber sobre fitxers i sistemes de fitxers, ja que això es delega al carregador de classes. Una biblioteca de programari és una col·lecció de codi objecte relacionat. En el llenguatge Java, les biblioteques solen empaquetar-se en fitxers JAR. Les biblioteques poden contenir objectes de diferents tipus. El tipus d'objecte més important contingut en un fitxer Jar és una classe Java. Una classe es pot considerar com una unitat de codi anomenada. El carregador de classes és responsable de localitzar les biblioteques, llegir-ne el contingut i carregar les classes contingudes a les biblioteques. Aquesta càrrega normalment es fa "a demanda", ja que no es produeix fins que el programa crida la classe. Una classe amb un nom donat només es pot carregar una vegada per un carregador de classes determinat. Quan s'inicia la JVM, s'utilitzen tres carregadors de classes: [3][4][2]
El carregador de classes d'arrencada carrega les biblioteques bàsiques de Java ubicades al directori El carregador de classes d'extensions carrega el codi als directoris d'extensions ( El carregador de classes del sistema carrega el codi que es troba a Carregadors de classes definits per l'usuariEl carregador de classes Java està escrit en Java. Per tant, és possible crear el vostre propi carregador de classes sense entendre els detalls més detallats de la màquina virtual de Java. A part del carregador de classes Bootstrap, cada carregador de classes Java té un carregador de classes pare.[6] El carregador de classes pare es defineix quan s'instancia un carregador de classes nou o s'estableix al carregador de classes predeterminat del sistema de la màquina virtual. Això fa possible (per exemple):
Carregadores de classe a Jakarta EEEls servidors d'aplicacions de Jakarta EE (abans Java EE i J2EE) solen carregar classes des d'un arxiu WAR o EAR desplegat mitjançant un arbre de carregadors de classes, aïllant l'aplicació d'altres aplicacions, però compartint classes entre mòduls desplegats. Els anomenats " contenidors de servlets " solen implementar-se en termes de carregadors de classes múltiples.[7][8] JAR infernJAR Hell és un terme similar a DLL Hell que s'utilitza per descriure totes les maneres en què el procés de càrrega de classes pot acabar sense funcionar.[9] Tres maneres en què l'infern JAR pot ocórrer són:
L'OSGi Alliance va especificar (començant com a JSR 8 el 1998) un marc de modularitat que té com a objectiu resoldre l'infern JAR per a les VM actuals i futures a ME, SE i EE que s'adopta àmpliament. Si utilitzen metadades al manifest JAR, els fitxers JAR (anomenats paquets) es connecten per paquet. Els paquets poden exportar paquets, importar paquets i mantenir paquets privats, proporcionant les construccions bàsiques de modularitat i gestió de dependències versionades. Referències
|
Portal di Ensiklopedia Dunia