next up previous
Next: Sicurezza Up: Il linguaggio Java Previous: Il linguaggio Java


Java: interpretato e dinamico

Il compilatore Java produce codice in forma di bytecode, che viene interpretato ed eseguito sulla Java Virtual Machine (JVM), inclusa nel sistema runtime di Java: in questo modo, i programmi Java possono essere eseguiti su un qualsiasi calcolatore per cui la JVM sia stata resa disponibile.

La compilazione non prevede una fase di ``linking'' di librerie: questo lavoro, che di fatto consiste nel caricamento di nuove classi, viene svolto dal Class Loader, con un processo dinamico ed incrementale: le classi vengono caricate quando sono necessarie, e possono provenire dall'ambiente locale o dalla rete; prima di essere passato all'interprete per essere eseguito, il nuovo codice viene controllato per verificarne la correttezza.

Il sistema di compilazione di Java risolve uno dei più annosi problemi del C++, consistente nel fatto che ogni volta che il codice sorgente di una classe viene alterato, tutte le sottoclassi devono essere ricompilate, in un procedimento a catena. Il compilatore Java, invece, non trasforma i riferimenti alle classi in valori numerici, e passa all'interprete i riferimenti in forma simbolica, che vengono risolti solo in fase di esecuzione del codice, dinamicamente. In questo modo, nuove versioni di classi possono essere caricate senza che il programma che le utilizza debba essere ricompilato.

Anche l'allocazione degli oggetti è dinamica: il compilatore non decide quale spazio di memoria vada assegnato ad ogni oggetto, demandando questo compito al sistema runtime.


next up previous
Next: Sicurezza Up: Il linguaggio Java Previous: Il linguaggio Java
Marco Delaurenti
1999-06-25