Macchina virtuale Java

componente della piattaforma Java responsabile per l'esecuzione dei programmi in formato bytecode
Versione del 25 ott 2006 alle 16:18 di Moongateclimber (discussione | contributi) (eliminate alcune inesattezze e cose fuori posto (provo a spostarle nella voce sull'architettura))
Lo stesso argomento in dettaglio: Architettura della macchina virtuale Java.

La macchina virtuale Java, detta anche Java Virtual Machine o JVM, è la macchina virtuale che esegue i programmi in linguaggio bytecode, ovvero i prodotti della compilazione dei sorgenti Java. La JVM è formalmente una specifica, mantenuta da Sun Microsystems. Qualsiasi sistema che si comporti in modo coerente con tale specifica sarà quindi da considerarsi una particolare implementazione della JVM. Esistono implementazioni software per praticamente tutti i sistemi operativi moderni, sia gratuite che commerciali. Inoltre, esistono implementazioni speciali per particolari ambienti hardware/software (per esempio telefoni cellulari e palmari), e persino implementazioni hardware.

La disponibilità di implementazioni della macchina virtuale Java per diversi ambienti operativi è la chiave della portabilità di Java, proclamata nello slogan write once, run everywhere ("scrivi una volta, esegui dappertutto"). La macchina virtuale realizza infatti un ambiente di esecuzione omogeneo, che nasconde al software Java (e quindi al programmatore) qualsiasi specificità del sistema operativo sottostante:

Rappresentazione di una JVM.
Software applicativi Java
Java Virtual Machine
Sistema Operativo

Implementazioni

Oltre a gestire le specifiche della macchina virtuale Java, Sun Microsystems ne fornisce anche implementazioni free; le implementazioni Sun sono in genere viste come implementazioni di riferimento ma sono anche ampiamente utilizzate da utenti finali, aziende e istituzioni.

Numerose altre parti forniscono regolarmente implementazioni della macchina virtuale Java, in genere con l'intento di competere con l'implementazione Sun in quanto a prestazioni; in alcuni casi si tratta di implementazioni commerciali. Sono disponibili anche implementazioni open source; fra le più note si può citare Waba