I linguaggi di programmazione sono divisi in:
- Compilati
- Semi-interpretati
- Interpretati
Linguaggi come il C, C++, sono linguaggi compilati
ossia il codice sorgente (il codice scritto con un editor di testo) viene “trasformato” (tramite il compilatore) in codice macchina, ovvero in un file eseguibile direttamente su quella macchina. Questo tipo di linguaggi hanno il vantaggio di avere prestazioni migliori.
Nei linguaggi interpretati, invece, le istruzioni del codice sorgente vengono eseguite direttamente, senza essere trasformate in un altro formato.
Un esempio su tutti è l’HTML, il cui codice viene eseguito direttamente dal browser. La potenza di questo genere di linguaggi è, di fatto, l’alta portabilità.
Java è un linguaggio semi-interpretato, ossia il codice sorgente viene “trasformato” (tramite un compilatore) in un formato intermedio (detto bytecode, riconoscibile dalla estensione file .class) che viene eseguito da un componente software installato sulla macchina in questione. Questo componente è detto Java Virtual Machine (JVM).
Quindi riassumendo, il codice sorgente, uguale per qualsiasi macchina, viene compilato tramite il compilatore (uguale anch’esso per tutte le macchine). Dal compilatore si ottiene il bytecode che viene eseguito dalla virtual machine, quest’ultima dipendente dal tipo di macchina (ossia una JVM di linux sarà diversa da una JVM di windows).