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?

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.).


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.


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


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!


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


-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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.