Macchina virtuale Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Principio: Questa voce non parla del linguaggio Java +titolo migliore
Implementazioni: fix e aggiunte
Riga 71:
 
== Implementazioni ==
[[File:Eclipse Adoptium Logo.svg|thumb|[[Adoptium]] è un gruppo di lavoro della [[fondazione Eclipse]] che promuove l'uso delle [[piattaforma Java|tecnologie Java]]. Tra l'altro distribuisce versioni [[file eseguibile|pronte all'uso]] di varie implementazioni della JVM.]]
=== [[OpenJDK]] e HotSpot ===
Oltre a gestire le specifiche della macchina virtuale Java, Oracle fornisce una implementazione chiamata [[HotSpot]] che è gratuita ed in parte open source. La parte non distribuibile riguarda i font, l'audio, la sicurezza e la crittografia<ref>[https://openjdk.java.net/ OpenJDK]</ref><ref>[https://www.documentcloud.org/documents/1157205-13-1021-opinion-5-7-2014-1.html Oracle America vs Google], Corte d'Appello Federale, 9 maggio 2014</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 ZeroHotSpot ===
{{vedi anche|HotSpot}}
Per sostituire le parti di HotSpot che erano sotto licenza non open, è nato il progetto [[IcedTea]].<ref>Progetto [http://icedtea.classpath.org/wiki/Main_Page IcedTea] {{Webarchive|url=https://web.archive.org/web/20141006113838/http://icedtea.classpath.org/wiki/Main_Page |date=6 ottobre 2014 }}</ref> La macchina virtuale sviluppata in tale progetto si chiama HotSpot Zero Assembly, chiamata anche semplicemente Zero.<ref>{{Cita web |url=http://icedtea.classpath.org/wiki/ZeroSharkFaq |titolo=Zero and Shark FAQ |accesso=3 ottobre 2014 |dataarchivio=23 agosto 2009 |urlarchivio=https://web.archive.org/web/20090823042123/http://icedtea.classpath.org/wiki/ZeroSharkFaq |urlmorto=sì }}</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] {{webarchive|url=https://web.archive.org/web/20141006113630/https://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html |data=6 ottobre 2014 }}</ref>
[[File:OpenJDK_logo.svg|thumb|[[OpenJDK]] è la principale implementazione [[software libero|libera]] della [[piattaforma Java]]. Include un'implementazione di [[HotSpot]] per la componente JVM.]]
 
HotSpot, ufficialmente nota come ''Java HotSpot Performance Engine''<ref>{{cita web|url=http://www.thefreelibrary.com/Sun+Announces+Availability+of+the+Java+HotSpot+Performance+Engine%3B...-a054477747|urlarchivio=https://web.archive.org/web/20131101095145/http://www.thefreelibrary.com/Sun+Announces+Availability+of+the+Java+HotSpot+Performance+Engine%3B...-a054477747|titolo= Sun Announces Availability of the Java HotSpot Performance Engine|editore=Sun Microsystems|lingua=en}}</ref>
è l'[[implementazione di riferimento]] della JVM, realizzata originariamente da [[Sun Microsystems]] e successivamente gestita da [[Oracle Corporation]].
 
Dal 2006, con la creazione di [[OpenJDK]], HotSpot è [[software libero]].<ref>{{cita web|url=http://www.sun.com/2006-1113/feature/index.jsp|urlarchivio=https://web.archive.org/web/20070421151747/http://www.sun.com/2006-1113/feature/index.jsp|titolo=Sun Opens Java|data=2006-11-13|lingua=en}}</ref>
 
=== Zero ===
Per sostituire le parti di HotSpot[[OpenJDK]] che erano sotto licenza non open, è nato il progetto [[IcedTea]].<ref>Progetto [http://icedtea.classpath.org/wiki/Main_Page IcedTea] {{Webarchive|url=https://web.archive.org/web/20141006113838/http://icedtea.classpath.org/wiki/Main_Page |date=6 ottobre 2014 }}</ref> La macchina virtuale sviluppata in tale progetto si chiama HotSpot Zero Assembly, chiamata anche semplicemente Zero.<ref>{{Cita web |url=http://icedtea.classpath.org/wiki/ZeroSharkFaq |titolo=Zero and Shark FAQ |accesso=3 ottobre 2014 |dataarchivio=23 agosto 2009 |urlarchivio=https://web.archive.org/web/20090823042123/http://icedtea.classpath.org/wiki/ZeroSharkFaq |urlmorto=sì }}</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] {{webarchive|url=https://web.archive.org/web/20141006113630/https://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html |data=6 ottobre 2014 }}</ref>
 
=== OpenJ9 ===
Eclipse OpenJ9 (precedentemente conosciuta come IBM J9) è un'implementazione scalabile e ad alte performance della JVM, pienamente conforme alla ''Java Virtual Machine Specification''.<ref>{{cita web|url=https://medium.com/criciumadev/new-open-source-jvm-optimized-for-cloud-and-microservices-c75a41aa987d|autore=Leonardo Zanivan|titolo=New Open Source JVM optimized for Cloud and Microservices|data=2018-02-07|lingua=en}}</ref>
 
E' parte di varie distribuzioni di [[OpenJDK]], tra cui IBM Semeru.<ref>{{cita web|url=https://developer.ibm.com/blogs/introducing-the-ibm-semeru-runtimes/|titolo=Introducing the IBM Semeru Runtimes|data=2021-08-02|accesso=2024-05-03|lingua=en}}</ref>
 
Rispetto a [[#HotSpot|HotSpot]], OpenJ9 presenta prestazioni migliori in fase di avvio e un minore utilizzo di memoria a livelli di produttività simili.<ref>{{cita web|url=https://jaxenter.com/eclipse-openj9-145182.html|autore=Dan Heidinga|titolo=Eclipse OpenJ9; not just any Java Virtual Machine|data=2018-08-06|accesso=2024-05-03|lingua=en}}</ref>
 
=== Le altre implementazioni ===