HotSpot (máquina virtual) - HotSpot (virtual machine)

Máquina Virtual Java HotSpot
Autor (es) original (is) Sun Microsystems
Desenvolvedor (s) Oracle Corporation
lançamento inicial 27 de abril de 1999 ; 22 anos atras ( 27/04/1999 )
Versão estável
23,25-b01 / 1 ° de janeiro de 2016 ; 5 anos atrás ( 01/01/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 .java .net / groups / hotspot

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:

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

Referências

links externos