Diferença entre JVM e HotSpot?

147

O que exatamente é o HotSpot e como ele se relaciona com a JVM e o OpenJDK? É uma biblioteca? o que exatamente isto faz?

Além disso, qual é a diferença entre o OpenJDK e o HotSpot?

Justin
fonte

Respostas:

148

A definição do que exatamente é uma Java Virtual Machine é declarada na Especificação da Java Virtual Machine

A JVM é, por definição, uma máquina virtual , ou seja, uma máquina de software que simula o que uma máquina real faz. Como uma máquina real, possui um conjunto de instruções , uma arquitetura de computador virtual e um modelo de execução. Ele é capaz de executar código escrito com este conjunto de instruções virtual, como uma máquina real pode executar o código da máquina.

HotSpot é uma implementação do conceito de JVM. Foi originalmente desenvolvido pela Sun e agora pertence à Oracle. Existem outras implementações da especificação JVM, como JRockit , IBM J9 , entre muitas outras.

Consulte a lista de implementações da máquina virtual Java

O OpenJDK é um projeto no qual é desenvolvida uma implementação de código-fonte aberto do HotSpot (e muitas outras partes do JDK, por exemplo, compilador, APIs, ferramentas, etc.).

Edwin Dalorzo
fonte
25

O OpenJDK (Open Java Development Kit) é uma implementação gratuita e de código aberto da Java Platform, Standard Edition (Java SE) .O openjdk é um projeto iniciado pela Sun Microsystems, hoje em dia é o cuidado de muitas empresas e da comunidade para criar um Java Development Kit. absolutamente em código aberto. Conforme a documentação oficial .

O OpenJDK é uma implementação de código aberto das especificações da Java Platform, Standard Edition (Java SE). Em maio de 2007, a Sun lançou uma versão do Java Development Kit (JDK) totalmente compilável para o Java SE para a Comunidade OpenJDK como software livre sob a GNU General Public License versão dois (GPLv2). A Sun anunciou o Conselho Administrativo Interino da comunidade OpenJDK. A Sun também anunciou que implementações baseadas em OpenJDK podem usar o Java SE 6 Technical Compatibility Kit (JCK) para estabelecer compatibilidade com a especificação Java SE 6.

O projeto OpenJDK consiste em vários componentes - HotSpot (a máquina virtual) , a Java Class Library e o compilador javac Java. Para obter mais informações, visite o site .

A JVM atual fornecida pela Sun / Oracle é chamada HotSpot porque procura pontos de uso no código (locais onde o código é usado com mais intensidade) para otimização "just-in-time". Da wikipedia , o HotSpot, lançado como o "Java HotSpot Performance Engine", é uma máquina virtual Java para desktops e servidores, mantida e distribuída pela Oracle Corporation.

PATETA
fonte
Ouvi dizer que o OpenJDK também usa o HotSpot para executar código? Isso é verdade?
23713 Justin Justin
@TheNewIdiot, então você está dizendo que o HotSpot faz parte do OpenJDK? Ou existe também um HotSpot proprietário, como sugere a resposta acima?
Pacerier
@NINC, o Hotspot faz parte do OracleJDK e do OpenJDK? Ponto de acesso = JRockit = OracleJDK = OpenJDK?
Pacerier 28/07
12

Nota: AdoptOpenJDK mudou seu nome para Adoptium depois de se mudar para a Eclipse Foundation no final de 2020-06.


Diferença entre JVM e HotSpot?

Uma Java Virtual Machine (JVM) é um computador imaginário que nunca foi fisicamente construído como hardware. Uma JVM executa programas compilados em seu conjunto de instruções imaginários gravados no armazenamento como uma representação intermediária conhecida como bytecode .

No tempo de execução, o bytecode deve ser convertido do conjunto de instruções imaginárias para o conjunto de instruções real da CPU da máquina host. Isso pode ser feito on-the-fly por um intérprete. Ou o bytecode pode ser totalmente compilado e armazenado em cache, para executar mais rapidamente do que através do intérprete, em um processo conhecido como compilação Just-In-Time (JIT) .

Ao longo das décadas, houve muitas implementações da JVM . A maioria caiu.

HotSpot é uma implementação da tecnologia JIT que começa executando interpretada e observa o desempenho real do aplicativo. Partes do aplicativo são então selecionadas para serem totalmente compiladas como código nativo e armazenadas em cache, para uma execução muito mais rápida. O HotSpot foi desenvolvido na Sun como um produto comercial. Depois de adquirir a Sun, a Oracle evoluiu ainda mais o HotSpot, combinando partes importantes de seu produto concorrente, o JRockit . O HotSpot agora é de código aberto por meio doprojeto OpenJDK , disponível gratuitamente.

Outra implementação desse tipo no OpenJ9 , desenvolvida pela IBM, e agora de código aberto por meio da Eclipse Foundation e disponível gratuitamente. Algumas distribuições da JVM construídas no OpenJDK substituem o HotSpot pelo OpenJ9 enquanto ainda usam o restante do OpenJDK, como as bibliotecas de classes Java SE . Por exemplo, as distribuições pré-criadas disponíveis no AdoptOpenJDK oferecem sua opção de HotSpot ou OpenJ9 em alguns hardwares.

Diagrama mostrando o histórico da fusão do HotSpot e JRockit e o OpenJ9, ambos disponíveis no AdoptOpenJDK.

Diagrama mostrando o histórico da fusão do HotSpot e do JRockit e o OpenJ9, ambos disponíveis no AdoptOpenJDK

O que exatamente é o HotSpot e como ele se relaciona com a JVM e o OpenJDK? É uma biblioteca? o que exatamente isto faz?

  • HotSpot é uma implementação da parte de uma JVM que interpreta e / ou compila o bytecode Java a ser executado na CPU host.
  • OpenJ9 é uma alternativa.

O OpenJ9 é geralmente conhecido por uma inicialização muito mais rápida e um uso de memória muito menor inicialmente, enquanto o HotSpot pode ser executado de maneira mais eficiente no geral para aplicativos de longa execução. Ambos são bem vistos, bem usados ​​e estão disponíveis com distribuições do OpenJDK.

O OpenJDK é um projeto de código aberto que implementa completamente as especificações Java , JSR e JEP que definem a plataforma Java . Toda implementação de JVM que eu conheço hoje se baseia total ou principalmente na base de código do OpenJDKe usa a tecnologia HotSpot ou OpenJ9.

Além da JVM, o OpenJDK também fornece uma implementação no código-fonte para todas as classes exigidas pelas especificações do Java SE, como java.lang , java.util , java.time e outros pacotes.

Além disso, qual é a diferença entre o OpenJDK e o HotSpot?

O código fonte do HotSpot é alojado, mantido e desenvolvido como parte do projeto OpenJDK . A alternativa, OpenJ9 , é alojada, mantida e desenvolvida na Eclipse Foundation , enquanto substitui o HotSpot em algumas distribuições do OpenJDK.

Algumas distribuições da tecnologia Java optam por ser enviadas com o HotSpot. Algumas distribuições optam por substituir a parte da base de código do OpenJDK que é HotSpot pela alternativa, OpenJ9 .

Aqui está um gráfico de fluxograma para ajudá-lo a escolher um fornecedor para uma distribuição da plataforma Java.

Fluxograma orientando você na escolha de um fornecedor para uma implementação Java 11

Motivações na escolha de um fornecedor para Java

Basil Bourque
fonte
8

O HotSpot é, como mencionado acima, uma implementação de plataforma cruzada do conceito de Java Virtual Machine (JVM) e é distribuído com o OpenJDK (Java Developer Kit), sob a GNU General Public License. O HotSpot é escrito principalmente em C ++ e foi originalmente desenvolvido na Sun Microsystems. Atualmente, ele é desenvolvido no âmbito do Projeto OpenJDK, em www.java.net. O HotSpot JVM estava disponível como um complemento para Java 1.2 e, posteriormente, foi usado como o Sun JVM padrão no Java 1.3. Atualmente, a JVM está na Versão 7, Build b147, e possui uma comunidade de desenvolvimento ativa por trás disso.

Para mais informações, acesse: https://www.java.net/

Feliz codificação!


fonte
7

A JVM é uma máquina abstrata (especificações). HotSpot, OpenJDK e JRockit e, portanto, são implementações da JVM.

Implementações gratuitas e de código aberto

  • HotSpot , a principal implementação de Java VM de referência

  • OpenJDK - O Open Java Development Kit é uma implementação gratuita e de código aberto licenciada sob a GNU General Public License (GNU GPL) com uma exceção de vinculação.

Implementações proprietárias

  • JRockit (originalmente da Appeal Virtual Machines) adquirida pela Oracle para Linux, Windows e Solaris

para mais implementações, o
link explica as diferenças entre HotSpot e JRocket

Premraj
fonte
-25

O HotSpot é uma forma avançada de hacking em C ++. Para usá-lo, você deve construir contra ele para compilar até as coisas mais simples. A menos que você ajuste os compiladores e ou escreva-os do zero. O HotSpot é basicamente uma maneira de converter o código-fonte em código C ++ e compilá-lo em código nativo, assim, o termo jit compilado.

Dawg
fonte