Macchina virtuale Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Alfio (discussione | contributi)
Nessun oggetto della modifica
Riga 3:
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 [[compilatore|compilazione]] dei [[codice sorgente|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 [[sistema operativo|sistemi operativi]] moderni, sia gratuite che commerciali. Inoltre, esistono implementazioni che operano in contesti [[hardware]]/[[software]] particolari, per esempio [[telefono cellulare|telefoni cellulari]], e persino implementazioni hardware.
 
Le specifiche della JVM vengono dettate dalla [[Sun Microsystems]] in quanto iniziatore del progetto, di cui per fortuna ècuiè ancora il felice mantenitore, ma vengono purtroppo puntualmentespesso disattese dalla stragrande maggioranza delle implementazioni non-sun di JVM che sono in circolazione. Di conseguenza, le diverse JVM non sono totalmente compatibili ed occorre fare attenzione nello scrivere i programmi, se si vuole che essi funzionino su ogni JVM.
 
Le ultime JVM Sun, e alcune altre implementazioni che sono reperibili, hanno metodi efficaci per ridurre il consumo di [[CPU]], tra i quali l'HotSpot <sup>(trademarktm)</sup>, un metodo di precompilazione del [[bytecode]] in maniera tale da avere alcune parti già tradotte in linguaggio macchina, pronte per essere eseguite quando necessario.
 
La [[JVM]] ufficiale Sun implementa due tipi di HotSpot, che si differenziano essenzialmente per la quantità di [[bytecode]] già tradotto e per il momento in cui avviene la traduzione: la modalità Server HotSpot compila la maggior parte del codice al momento dell'avvio, e imposta il [[Garbage collection|Garbage Collector]] per un comportamento "aggressivo", mentre la modalità Client HotSpot (quella usata di standard dalla JVM Sun), interpreta da subito il [[bytecode]] e ne compila in seguito alcune porzioni di frequente uso.