3.1 IL SOTTOSISTEMA CLASS LOADER

 

La parte della JVM che recupera e carica i tipi è il sottosistema class loader. La JVM contiene due tipi di class loader : un class loader di bootstrap che è parte dell'implementazione della JVM e class loaders user-defined che sono parte dell'applicazione Java in esecuzione. Le classi caricate da differenti class loader sono piazzati in differenti namespaces all'interno dalla JVM.

Il sottosistema class loader coinvolge molte altre parti della JVM e diverse classi della libreria java.lang. Ad esempio, class loader user-defined sono normali oggetti Java le cui classi derivano dal java.lang.ClassLoader. I metodi della classe ClassLoader permettono alle applicazioni Java di accedere al meccanismo di class loading della JVM. O anche, per ogni tipo che la JVM carica, essa crea un'istanza della classe java.lang.Class per rappresentare quel tipo. Come tutti gli oggetti, i class loader user-defined e le istanze della classe Class risiedono sullo heap.  I dati per i tipi caricati risiedono nell'area  metodo.

 

 

 

                        

                                                 

          Figura 3.  Il sottosistema Class-loader

 

Il sottosistema class loader oltre che localizzare ed importare i dati binari per le classi. Esso deve realizzare ulteriori operazioni nel seguente specifico ordine:

 

1.      Caricamento:  recuperare ed importare i dati binari per un tipo

2.      Linkaggio: relizzare la verifica, preparazione e (opzionalmente) risoluzione

                                         Verifica: assicura la correttezza dei tipi importati

                                         Preparazione: alloca la memoria per le classi ed la inizializza coi valori di default

                                         Risoluzione: trasformazione dei riferimenti simbolici in riferimenti diretti.

3.      Inizializzazione: invocare il codice Java che inizializza le classi coi valori di partenza.