Il Class Manager
Il Class Manager è il modulo della Macchina Astratta che si interfaccia
con il "mondo esterno". Tale componente si preoccupa di caricare le
classi che formano il programma da eseguire all'interno della
Method Area, prelevandone le definizioni
da un insieme eterogeneo di sorgenti ( Hard Disk, LAN, Web, etc ...),
genericamente indicato con il termine Class Repository.
La prima di tali parti è il Class Loader, ed è quella
che realmente si occupa di ricercare le definizioni di classe nel Class Repository.
I dettagli di come avvenga questo processo di loading non vengono trattati:
in linea di principio si tratta di elaborare le informazioni contenute nel
file .class per ottenere una Class Structure
( cfr. Method Area ) per la classe o
l'interfaccia che si sta caricando. In tale trasformazione può essere
necessario risalire la gerarchia delle classi, ( in particolare per consentire la
creazione della Field Table all'interno della Class Structure,
usata nella creazione di nuovi oggetti ). Una volta caricata una classe, il Class Manager deve tenerne traccia, e per questo dispone di un'altra sotto-componente, indicata in figura come Class Table. Tramite questa tabella è possibile risalire, per ogni classe, alla Class Structure ad essa associata.
Ma il compito del Class Manager non è solo quello di creare la Class Structure
per le varie classi e interfacce; esso è anche preposto alla manipolazione di questa
struttura dati.
Il Class Manager è anche responsabile del linkage dinamico, e di
ogni eventuale ottimizzazione di questo processo: è tale componente che si
occupa di risolvere i link contenuti nella
|