HotSpot (máquina virtual) - HotSpot (virtual machine)
Autor (es) original (is) | Sun Microsystems |
---|---|
Desenvolvedor (s) | Oracle Corporation |
lançamento inicial | 27 de abril de 1999 |
Versão estável | 23,25-b01 / 1 ° de janeiro de 2016
|
Escrito em | C ++ , montagem |
Sistema operacional | Plataforma cruzada |
Modelo | Máquina Virtual JAVA |
Licença | Proprietário (versões anteriores), GNU General Public License (atual) |
Local na rede Internet | openjdk |
O HotSpot , lançado como Java HotSpot Performance Engine , é uma máquina virtual Java para desktops e servidores , mantida e distribuída pela Oracle Corporation . Ele apresenta desempenho aprimorado por meio de métodos como compilação just-in-time e otimização adaptativa .
História
O Java HotSpot Performance Engine foi lançado em 27 de abril de 1999, baseado em tecnologias de uma implementação da linguagem de programação Smalltalk chamada Strongtalk , originalmente desenvolvida pela Longview Technologies, que foi comercializada como Animorphic. A máquina virtual Longview foi baseada na máquina virtual Self , com um intérprete substituindo o primeiro compilador rápido e burro. Quando a Sun cancelou o projeto Self, duas pessoas-chave, Urs Hölzle e Lars Bak, deixaram a Sun para iniciar o Longview. Em 1997, a Sun Microsystems comprou a Animorphic.
Pouco depois de adquirir o Animorphic, a Sun decidiu escrever um novo compilador just-in-time (JIT) para a máquina virtual Java. Este novo compilador daria origem ao nome HotSpot , derivado do comportamento do software: ao executar bytecode Java , como no Self VM, o HotSpot analisa continuamente o desempenho do programa para hot spots que são executados com freqüência ou repetidas. Em seguida, eles são direcionados para otimização , levando à execução de alto desempenho com um mínimo de sobrecarga para código menos crítico de desempenho. Em um relatório, a JVM venceu alguns códigos C ++ ou C em alguns benchmarks.
Inicialmente disponível como um complemento para Java 1.2, o HotSpot tornou-se o Sun JVM padrão no Java 1.3.
Recursos
JRE (originalmente da Sun, agora da Oracle) apresenta duas máquinas virtuais, uma chamada Cliente e a outra Servidor . A versão do cliente é ajustada para carregamento rápido. Faz uso de interpretação. A versão do servidor carrega mais lentamente, colocando mais esforço na produção de compilações JIT altamente otimizadas para produzir um desempenho mais alto. Ambas as VMs compilam apenas métodos de execução frequente, usando um limite de contagem de invocação configurável para decidir quais métodos compilar.
A compilação em camadas, uma opção introduzida no Java 7, usa os compiladores do cliente e do servidor em conjunto para fornecer tempo de inicialização mais rápido do que o compilador do servidor, mas com desempenho de pico semelhante ou melhor. A partir do Java 8, a compilação em camadas é o padrão para a VM do servidor.
HotSpot é escrito em C ++ . Em 2007, a Sun estimou que abrangia aproximadamente 250.000 linhas de código-fonte. O ponto de acesso fornece:
- Um Java Classloader
- Um intérprete de bytecode Java
- Máquinas virtuais cliente e servidor , otimizadas para seus respectivos usos
- Vários coletores de lixo (incluindo um ZGC de tempo de pausa muito baixo)
- Um conjunto de bibliotecas de tempo de execução de suporte
Sinalizadores JVM
O HotSpot oferece suporte a muitos argumentos de linha de comando para opções de execução da máquina virtual. Alguns são padrão e devem ser encontrados em qualquer máquina virtual Java compatível ; outros são específicos do HotSpot e podem não ser encontrados em outros JVMs (as opções que começam com -X ou -XX não são padrão).
Licença
Em 13 de novembro de 2006, o HotSpot JVM e o Java Development Kit (JDK) foram licenciados sob a GNU General Public License (GPL) versão 2. Este é o código que se tornou parte do Java 7 .
Plataformas suportadas
Mantido pela Oracle
Tal como acontece com todo o Java Development Kit (JDK), o HotSpot é suportado pela Oracle Corporation no Windows , Linux , macOS e Solaris . As arquiteturas de conjunto de instruções (ISAs) com suporte são IA-32 , x86-64 , ARMv7 VFP, ARMv8 e SPARC (somente Solaris).
Portas de terceiros
As portas também estão disponíveis por terceiros para vários outros sistemas operacionais Unix . Várias arquiteturas de hardware diferentes são suportadas, incluindo x86, PowerPC e SPARC (somente Solaris).
A portabilidade do HotSpot é difícil porque o código, embora quase todo escrito em C ++ , contém muita linguagem assembly . Para remediar isso, o projeto IcedTea desenvolveu uma porta genérica do interpretador HotSpot chamada Hotspot zero-assembler (ou zero ), com quase nenhum código de montagem. Esta porta se destina a fácil adaptação do componente interpretador do HotSpot para qualquer arquitetura de processador Linux . O código do zero-assembler Hotspot é usado para todas as portas de arquitetura não x86 do HotSpot ( PowerPC , Itanium ( IA-64 ), S390 e ARM ) desde a versão 1.6.
Veja também
- Lista de máquinas virtuais Java
- Comparação de máquinas virtuais Java
- Desempenho Java
- OpenJDK
- Da Vinci Machine , um projeto para prototipar a extensão da JVM para adicionar suporte para linguagens de programação dinâmicas
Referências
links externos
- Website oficial
- Uma lista de HotSpot VMOptions
- A especificação da máquina virtual Java
- História da equipe Strongtalk-HotSpot original
- "A Sun anuncia a disponibilidade do Java Hotspot Performance Engine" . Arquivado do original em 18 de dezembro de 2006 . Recuperado em 27 de março de 2014 .CS1 maint: bot: status do URL original desconhecido ( link )
- Repositório de desenvolvimento de código-fonte HotSpot Mercurial (sistema de controle de versão) para JDK8