Macchina virtuale Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Vitalij zad (discussione | contributi)
Aggiungo la bibliografia
Vitalij zad (discussione | contributi)
Implementazioni: Confronto tra HotSpot e Zero
Riga 20:
|}
 
== Implementazioni ==
=== OpenJDK e HotSpot ===
Oltre a gestire le specifiche della macchina virtuale Java, Oracle ne fornisce ancheuna implementazioniimplementazione gratuitechiamata eHotSpot parzialmenteche è gratuita ed in parte open source. La parte non distribuibile riguarda i font, l'audio, la sicurezza e la crittografia<ref>[http://openjdk.java.net/ OpenJDK]</ref><ref>[https://www.documentcloud.org/documents/1157205-13-1021-opinion-5-7-2014-1.html Oracle America vs Google]</ref>; le implementazioni Oracle sono in genere viste come [[implementazione di riferimento|implementazioni di riferimento]] ma sono anche ampiamente utilizzate da utenti finali, aziende e istituzioni.
 
=== IcedTea e Zero ===
Numerose altre parti forniscono regolarmente implementazioni della macchina virtuale Java, in genere con l'intento di competere con l'implementazione Oracle in quanto a prestazioni; in alcuni casi si tratta di implementazioni commerciali. Sono disponibili anche altre implementazioni ''[[open source]]''; fra le più note si può citare [[Waba]]<ref>[http://waba.sourceforge.net/php/waba/waba.php Waba]</ref>.
Per sostituire le parti di HotSpot che erano sotto licenza non open, è nato il progetto IcedTea.<ref>[http://icedtea.classpath.org/wiki/Main_Page IcedTea]</ref> La macchina virtuale sviluppata in tale progetto si chiama HotSpot Zero Assembly, chiamata anche semplicemente Zero.<ref>[http://icedtea.classpath.org/wiki/ZeroSharkFaq Zero and Shark FAQ]</ref> Il progetto ha anche lo scopo di supportare un numero maggiore di famiglie di processori rispetto alla macchina virtuale di Oracle. Per fare ciò, tutto il codice assembly presente in HotSpot è stato riscritto in C++, in modo da poter essere compilato su più architetture.<ref>[https://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html Zero and Shark: a Zero-Assembly Port of OpenJDK]</ref>
 
=== Le altre implementazioni ===
Numerose altre parti forniscono regolarmente implementazioni della macchina virtuale Java, in genere con l'intento di competere con l'implementazione Oracle in quanto a prestazioni; in alcuni casi si tratta di implementazioni commerciali. Sono disponibili anche altre implementazioni ''[[open source]]''; fra le più note si può citare [[Waba]]<ref>[http://waba.sourceforge.net/php/waba/waba.php Waba]</ref>.
Le specifiche della JVM vengono dettate e aggiornate dalla Oracle in quanto iniziatore e mantenitore del progetto, ma vengono spesso disattese da molte delle implementazioni ''non-Oracle'' di JVM che sono in circolazione, soprattutto per quanto riguarda il [[framework]] che ogni JVM include. Di conseguenza, le diverse JVM non sono totalmente compatibili tra loro ed occorre fare attenzione nello scrivere i programmi, se si vuole che essi funzionino su ogni JVM. La cosa migliore da fare a tale scopo sarebbe non usare le ultime caratteristiche del linguaggio introdotte dalla Oracle nelle JVM più recenti e usare delle [[Application programming interface|API]] "stabili", che cioè siano presenti nella JVM Oracle da varie versioni.