EEEE
Capítulo4–LinguagemdeprogramaçãoJAVA
47
independência de plataforma em geral. Não será necessário mais a preocupação em saber qual
plataforma o software desenvolvido será implantado (DEITEL, 2010; HORSTMANN, 2009).
Note que a máquina virtual (JVM) é um conceito muito mais amplo que um simples
interpretador. Como o próprio nome diz, uma JVM é como um “computador imaginário”; tem
tudo que um computador tem (DEITEIL, 2010). Em outras palavras, ela será responsável por
gerenciar memória, threads, a pilha de execução entre outras particularidades de um
computador (HORSTMANN, 2008; HORSTMANN, 2009; ARNOLD et al., 2007).
Partindo dessa premissa, os softwares jamais estarão envolvidos diretamente com o
sistema operacional, sempre estará relacionado apenas com a JVM (DEITEIL, 2010).
Essa é uma característica interessante, pois, tudo que passa pela JVM poderá tirar
métricas, decidir onde é melhor alocar memória, entre outros. Uma aplicação isola totalmente
a aplicação do SO (DEITEIL, 2010). Se uma JVM terminar inesperadamente, somente as
aplicações que estavam rodando irão se finalizar, isso não implicará no término prematuro de
outras que estarão rodando no mesmo computador, nem tão pouco afetará o SO (DEITEIL,
2010; HORSTMANN, 2008; ARNOLD et al., 2007).
Nesta camada, a máquina virtual, não entende o código Java, ou seja, entende somente
um código de maquina específico. Esse código de máquina é gerado por um compilador Java,
o javac, e é conhecido como “bytecode”, o compilador gera esses bytecodes que, diferente
das linguagens sem máquina virtual, vai servir para diferentes arquiteturas, uma vez que é
traduzido pela JVM (HORSTMANN, 2008; HORSTMANN 2009; DEITEIL, 2010).
4.3 HotspoteJIT
Hotspot é a tecnologia que a JVM utiliza para detectar pontos quentes da sua aplicação,
código que é executado muito, provavelmente dentro de um ou mais loops (DEITEIL, 2010).
Quando uma JVM julgar necessário, vai compilar estes códigos para instruções realmente
nativas da plataforma, para que esta aproveite o máximo de recurso oferecido pelo SO, ou
seja, irá melhorar o desempenho da aplicação Java (DEITEL, 2010; HORSTMANN, 2009;
ARNOLD et al., 2007). Esse recurso se dá por mérito do compilador JIT que é o responsável
por essa técnica (HORSTMANN, 2008; HORSTMANN 2009).