Differenza tra JVM e HotSpot?


147

Che cos'è esattamente HotSpot e come si collega a JVM e OpenJDK? È una biblioteca? Che cosa fa esattamente?

Inoltre, qual è la differenza tra OpenJDK e HotSpot?

Risposte:


148

La definizione di cosa sia esattamente una Java Virtual Machine è indicata nelle Specifiche Java Virtual Machine

La JVM è per definizione una macchina virtuale , ovvero una macchina software che simula ciò che fa una macchina reale. Come una macchina reale, ha un set di istruzioni , un'architettura di computer virtuale e un modello di esecuzione. È in grado di eseguire codice scritto con questo set di istruzioni virtuale, più o meno come una macchina reale può eseguire codice macchina.

HotSpot è un'implementazione del concetto JVM. È stato originariamente sviluppato da Sun e ora è di proprietà di Oracle. Esistono altre implementazioni della specifica JVM, come JRockit , IBM J9 , tra molte altre.

Vedere Elenco delle implementazioni della macchina virtuale Java

L' OpenJDK è un progetto in base al quale viene sviluppato un'implementazione opensource di HotSpot (e molti altri pezzi del JDK esempio compilatore, le API, strumenti, ecc).


25

OpenJDK (Open Java Development Kit) è un'implementazione gratuita e open source della piattaforma Java, Standard Edition (Java SE). Openjdk è un progetto avviato da Sun Microsystems, attualmente curato da molte aziende e comunità per la creazione di un kit di sviluppo Java assolutamente in open source. Come da documentazione ufficiale .

OpenJDK è un'implementazione open source delle specifiche Java Platform, Standard Edition (Java SE). Nel maggio 2007, Sun ha rilasciato una versione completamente sviluppabile di Java Development Kit (JDK) per Java SE alla comunità OpenJDK come software gratuito in base alla GNU General Public License versione due (GPLv2). Sun ha annunciato il consiglio di amministrazione ad interim per la comunità OpenJDK. Sun ha inoltre annunciato che le implementazioni basate su OpenJDK possono utilizzare il Java SE 6 Technical Compatibility Kit (JCK) per stabilire la compatibilità con le specifiche Java SE 6.

Il progetto OpenJDK è costituito da una serie di componenti: HotSpot (la macchina virtuale) , la Java Class Library e il compilatore Java javac. Per ulteriori informazioni, visitare il suo sito .

L'attuale JVM fornita da Sun / Oracle si chiama HotSpot perché cerca punti di utilizzo nel codice (luoghi in cui il codice viene utilizzato più intensamente) per l'ottimizzazione "just-in-time". Da Wikipedia , HotSpot, rilasciato come "Java HotSpot Performance Engine" è una macchina virtuale Java per desktop e server, gestita e distribuita da Oracle Corporation.


Ho sentito che OpenJDK usa anche HotSpot per eseguire il codice? È vero?
Giustino,

@TheNewIdiot, quindi stai dicendo che HotSpot fa parte di OpenJDK? O c'è anche un HotSpot proprietario come suggerisce la risposta sopra?
Pacerier,

@NINC, quindi Hotspot fa parte di OracleJDK e OpenJDK? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier,

12

Nota: AdoptOpenJDK ha cambiato il suo nome in Adoptium dopo essersi trasferito alla Eclipse Foundation alla fine del 2020-06.


Differenza tra JVM e HotSpot?

Una Java Virtual Machine (JVM) è un computer immaginario che non è mai stato costruito fisicamente come hardware. Una JVM esegue programmi compilati nel suo set di istruzioni immaginarie scritto in memoria come rappresentazione intermedia nota come bytecode .

In fase di esecuzione, il bytecode deve essere tradotto dal set di istruzioni immaginario al set di istruzioni effettivo della CPU della macchina host. Questo può essere fatto al volo da un interprete. Oppure il bytecode può essere completamente compilato e memorizzato nella cache, per essere eseguito più rapidamente rispetto all'interprete, in un processo noto come compilazione Just-In-Time (JIT) .

Nel corso dei decenni, ci sono state molte implementazioni della JVM . La maggior parte è caduta.

HotSpot è un'implementazione della tecnologia JIT che inizia eseguendo interpretato e guarda le prestazioni effettive dell'app. Parti dell'app vengono quindi selezionate per essere completamente compilate come codice nativo e memorizzate nella cache, per un'esecuzione molto più rapida. HotSpot è stato sviluppato da Sun come prodotto commerciale. Dopo aver acquisito Sun, Oracle ha ulteriormente evoluto HotSpot combinando parti importanti del loro prodotto concorrente, JRockit . HotSpot è ora open-source attraverso ilprogetto OpenJDK , disponibile gratuitamente.

Un'altra implementazione di questo tipo in OpenJ9 , sviluppata da IBM, e ora di provenienza aperta tramite la Eclipse Foundation e disponibile gratuitamente. Alcune distribuzioni JVM basate su OpenJDK sostituiscono HotSpot con OpenJ9 mentre utilizzano ancora il resto di OpenJDK come le librerie di classi Java SE . Ad esempio, le distribuzioni predefinite disponibili su AdoptOpenJDK forniscono la tua scelta di HotSpot o OpenJ9 su alcuni hardware.

Diagramma che mostra la storia della fusione di HotSpot e JRockit e OpenJ9 entrambi disponibili in AdoptOpenJDK.

Diagramma che mostra la storia della fusione di HotSpot e JRockit e OpenJ9 entrambi disponibili in AdoptOpenJDK

Che cos'è esattamente HotSpot e come si collega a JVM e OpenJDK? È una biblioteca? Che cosa fa esattamente?

  • HotSpot è un'implementazione della parte di una JVM che interpreta e / o compila il bytecode Java da eseguire sulla CPU host.
  • OpenJ9 è un'alternativa.

OpenJ9 è generalmente noto per l'avvio molto più veloce e l'utilizzo di memoria molto più basso inizialmente, mentre HotSpot può funzionare in modo più efficiente nel complesso per le app di lunga durata. Entrambi sono apprezzati, ben indossati e disponibili con le distribuzioni di OpenJDK.

OpenJDK è un progetto open source che implementa completamente le specifiche Java , JSR e JEP che definiscono la piattaforma Java . Ogni implementazione JVM che conosco oggi si basa interamente o principalmente sulla base di codice OpenJDKe utilizza la tecnologia HotSpot o OpenJ9.

Oltre a JVM, OpenJDK fornisce anche un'implementazione nel codice sorgente per tutte le classi richieste dalle specifiche Java SE, come java.lang , java.util , java.time e altri pacchetti.

Inoltre, qual è la differenza tra OpenJDK e HotSpot?

Il codice sorgente per HotSpot è ospitato, gestito e ulteriormente sviluppato come parte del progetto OpenJDK . L'alternativa, OpenJ9 , è ospitata, mantenuta e ulteriormente sviluppata presso la Eclipse Foundation , mentre sostituisce HotSpot in alcune distribuzioni di OpenJDK.

Alcune distribuzioni di tecnologia Java scelgono di essere fornite con HotSpot. Alcune distribuzioni scelgono di sostituire la parte della base di codice OpenJDK che è HotSpot con l'alternativa, OpenJ9 .

Ecco un diagramma del diagramma di flusso che consente di scegliere un fornitore per una distribuzione della piattaforma Java.

Diagramma di flusso che guida l'utente nella scelta di un fornitore per un'implementazione di Java 11

Motivazioni nella scelta di un fornitore per Java


8

HotSpot è, come accennato in precedenza, un'implementazione multipiattaforma del concetto di Java Virtual Machine (JVM), ed è distribuito con OpenJDK (Java Developer Kit), sotto la GNU General Public License. HotSpot è scritto principalmente in C ++ ed è stato originariamente sviluppato sotto Sun Microsystems. Attualmente è sviluppato nell'ambito del progetto OpenJDK, su www.java.net. HotSpot JVM era disponibile come componente aggiuntivo per Java 1.2 e in seguito è stato utilizzato come Sun JVM predefinito in Java 1.3. La JVM è attualmente nella versione 7, Build b147, e ha una comunità di sviluppo attiva dietro di essa.

Per ulteriori informazioni, vai a: https://www.java.net/

Buona programmazione!


7

JVM è una macchina astratta (specifiche). HotSpot, OpenJDK e JRockit e così sono le implementazioni di JVM.

Implementazioni gratuite e open source

  • HotSpot , l'implementazione della VM Java di riferimento principale

  • OpenJDK - Open Java Development Kit è un'implementazione gratuita e open source concessa in licenza in base alla GNU General Public License (GNU GPL) con un'eccezione di collegamento.

Implementazioni proprietarie

  • JRockit (originariamente da Appeal Virtual Machines) acquisito da Oracle per Linux, Windows e Solaris

per ulteriori implementazioni il
collegamento spiega le differenze tra HotSpot e JRocket


-25

HotSpot è una forma avanzata di hacking C ++, per usarlo devi costruire contro di esso per compilare anche le cose più semplici. A meno che non modifichi compilatori e non li scriva da zero. HotSpot è fondamentalmente un modo per convertire il codice sorgente in codice C ++ e quindi compilarlo in codice nativo così il termine jit compilato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.