Respostas:
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.).
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.
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.
O que exatamente é o HotSpot e como ele se relaciona com a JVM e o OpenJDK? É uma biblioteca? o que exatamente isto faz?
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.
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!
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
para mais implementações, o
link explica as diferenças entre HotSpot e JRocket
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.