Java Virtual Machine

La Java Virtual Machine (JVM) è un componente software astratto che esegue i programmi Java convertendo il bytecode in codice macchina comprensibile dal computer.

Funge da motore di runtime e permette a Java di essere un linguaggio indipendente dalla piattaforma, seguendo il famoso principio "Write Once, Run Anywhere" (Scrivi una volta, esegui ovunque).

Come funziona il processo Scrittura del codice

Lo sviluppatore scrive il codice sorgente in un file con estensione .java.

Il compilatore Java (javac) trasforma il codice sorgente in un formato intermedio chiamato bytecode (file .class).

La JVM installata sul sistema operativo specifico prende il bytecode, lo traduce e lo esegue sotto forma di codice macchina nativo.

I 3 componenti principali L'architettura interna della JVM si divide in tre macro-aree fondamentali: 

Class Loader: Carica i file .class nella memoria della JVM e ne verifica la correttezza formale.

JVM Memory: Area dedicata allo storage dei dati durante l'esecuzione. Si divide a sua volta in componenti come l'Heap (per memorizzare gli oggetti) e lo Stack (per le variabili locali e le chiamate ai metodi).

Execution Engine: Il motore effettivo che esegue le istruzioni del bytecode. Utilizza un interprete riga per riga e un compilatore JIT (Just-In-Time) che ottimizza le prestazioni compilando le parti di codice eseguite più frequentemente direttamente in codice macchina.

Il Garbage Collector. Una delle funzioni più importanti incluse nell'Execution Engine della JVM è il Garbage Collector.

Questo tool si occupa della gestione automatica della memoria, distruggendo gli oggetti che non vengono più utilizzati dall'applicazione per liberare spazio all'interno dell'Heap, prevenendo così i blocchi del sistema per esaurimento di memoria.