Le implementazioni Java utilizzano in genere un processo di compilazione in due fasi. Il codice sorgente Java è compilato al bytecode dal compilatore Java. Il bytecode viene eseguito da una Java Virtual Machine (JVM). Le moderne JVM usano una tecnica chiamata Just-in-Time (JIT) compilation per compilare il bytecode con istruzioni native comprese dalla CPU hardware al volo in fase di esecuzione.
Alcune implementazioni di JVM possono scegliere di interpretare il bytecode, invece di JIT compilarlo in codice macchina, ed eseguirlo direttamente. Anche se questo è ancora considerato un "interprete", è molto diverso dagli interpreti che leggono ed eseguono il codice sorgente di alto livello (in questo caso, il codice sorgente Java non viene interpretato direttamente, è il bytecode, l'output del compilatore Java.)
È tecnicamente possibile compilare Java in anticipo sul codice nativo ed eseguire il file binario risultante. È anche possibile interpretare direttamente il codice Java.
In sintesi, a seconda dell'ambiente di esecuzione, bytecode può essere:
- compilato in anticipo ed eseguito come codice nativo (simile alla maggior parte dei compilatori C++)
- compilato just in time ed eseguito
- interpretato
- direttamente eseguito da un processore supportato (bytecode è l'insieme di istruzioni nativo di alcune CPU)
fonte
2009-08-25 04:41:14
C++ potrebbe essere interpretato. Ci sono alcuni interpreti C là fuori. –