Esperando o Java HotSpot VM 
Desenvolvedor aponta as atuais vantagens da linguagem Java e comenta sobre o
funcionamento do HotSpot, o novo compilador din�mico da Sun, que promete
fazer Java mais r�pida que C++, o seu maior concorrente.

Nas �ltimas semanas boas not�cias relativas � linguagem Java chegaram pelo
meu browser. Uma delas me deixou arrepiado: "Teste de performance mostra que
Java � t�o r�pido quanto C++". E a mais promissora: "O lan�amento do
HotSpot, uma nova gera��o de Virtual Machine". 

O artigo de Carmine Mangione, publicado pela JavaWorld, mostra que as novas
vers�es da JVM (Java Virtual Machine) s�o realmente r�pidas e podem
concorrer com outras linguagens, at� mesmo C++, apesar da desconfian�a que
isto levanta em todos nos desenvolvedores. 

Comparar Java com linguagens como C++ � como um Jipe competir com uma
Ferrari. Com certeza a Ferrari ser� mais r�pida nas boas pistas, mas n�o �
apropriada para todo tipo de terreno. Em alguns casos o Jip�o ir� deixar a
Ferrari literalmente comendo poeira. 

A mesma situa��o ocorre com a Java - que apesar de ser um pouco mais lenta
na execu��o, traz grandes vantagens para os desenvolvedores, principalmente
para quem trabalha para o ambiente corporativo. 

Podemos citar numa vis�o macro algumas das virtudes da Java: 

Redu��o do tamanho do arquivo execut�vel

Os arquivos "execut�veis" da Java (.class) s�o menores que os arquivos .exe
de C++. Assim os recursos da rede s�o economizados, melhorando o tempo de
transmiss�o de arquivos e consequentemente melhorando a performance da
aplica��o. S�o arquivos menores porque as classes necess�rias para o
funcionamento da applet est�o embutidos no seu browser, ao contr�rio de C++,
que precisa incluir todas as bibliotecas necess�rias em seu c�digo bin�rio.
A Java possui ainda suporte nativo a arquivos compactados, como imagens
(gif, jpg) e sons(au), o que reduz ainda mais o tamanho dos arquivos.

Disponibilidade de bibliotecas consistentes e robustas para a maioria dos
sistemas operacionais 

A linguagem Java cont�m uma grande quantidade de classes que fazem quase
tudo para os desenvolvedores. Dificilmente vamos precisar implementar uma
classe a partir do zero. Uma outra vantagem � o fato destas classes estarem
dispon�veis em uma grande variedade de plataformas, funcionando em todas
elas.

Garbage Collector 

Quando o desenvolvedor cria objetos em C++, precisa tomar um cuidado
especial com a desaloca��o destes objetos na mem�ria. Este processo � um dos
maiores respons�veis pelos bugs nos programas em C++, pois em grandes
aplica��es fica extremamente dif�cil controlar todos estes objetos. 

A Java implementa o Garbage Collector, um coletor de lixo que varre a
mem�ria e desaloca os objetos que n�o s�o mais necess�rios � aplica��o. Com
isso temos uma melhoria na ger�ncia de mem�ria e tamb�m maior facilidade no
desenvolvimento.

Multithreads 

Java cont�m implementa��o de Multithread (programa��o multilinha) nativa.
Podemos fazer com que o processador trabalhe com dois processos
simultaneamente (multiprograma��o), melhorando com isso a performance da
aplica��o. Infelizmente em C++ � um pouco complicado trabalharmos com
multithreads. 

Tratamento de Exce��es

Um dos maiores avan�os da linguagem Java em rela��o �s outras linguagens � o
tratamento de exce��es em tempo de execu��o. Toda vez que o runtime de Java
percebe algum tipo de erro (uma divis�o por zero ou uma URL que n�o existe,
por exemplo) ele p�ra a execucao daquele fragmento de c�digo e procura por
um tratamento especificado pelo desenvolvedor, ou simplesmente trata por si
s� aquela linha de c�digo. Com este recurso, o desenvolvedor pode facilmente
privar sua aplica��o de uma grande variedade de erros e prevenir seu sistema
dos comuns "travamentos". 

Sendo assim, talvez atualmente Java n�o seja mais r�pida que C++, mas a
rela��o Recursos vs Performance compensa. Digo atualmente porque a Sun esta
euf�rica com o lan�amento da tecnologia HotSpot, que promete fazer com que
uma applet ou aplica��o Java execute mais r�pido do que um programa
compilado em C++, preservando ainda assim a sua portabilidade. 

O poderio do HotSpot prometido pela Sun � de deixar qualquer desenvolvedor e
usu�rio empolgado com as possibilidades de melhoria na performance. 

O HotSpot � um compilador din�mico que combina JVM (Java Virtual Machine) e
o JIT (Just-in-time). Mas o que faz a JVM e o que faz o JIT? Esta foi uma
pergunta que me levou, h� um certo tempo, a uma discuss�o de horas.
Simplificando: a JVM � o interpretador Java que faz a interface entre o
bytecode gerado pelo compilador (javac) e a plataforma local (Win95, Unix,
Macintosh). 

Esta t�cnica tem mais de 20 anos. A JVM fica em um loop cont�nuo durante a
execu��o da applet interpretando sempre os bytecodes, j� que n�o existe um
arquivo compilado em c�digo de m�quina. Este � um dos maiores respons�veis
pela baixa performance da Java, por�m ao mesmo tempo garante a portabilidade
da linguagem. Para resolver o problema da baixa performance durante a
interpreta��o dos bytecodes, os cientistas da computa��o desenvolveram o
JIT. 

Ele faz a convers�o do resultado da JVM para um c�digo bin�rio na mem�ria .
Somente em casos particulares o bytecode ser� interpretado novamente, pois
grande parte da applet foi convertida em c�digo de m�quina. 

O JIT melhora em at� 50 vezes o tempo de execu��o de um programa Java - mas
ainda assim a Java continua lenta.

HotSpot

A estrat�gia do HotSpot � atacar dois pontos que consomem cerca de 39% do
tempo de execu��o de uma aplica��o Java, o Garbage Collector e a
Sincroniza��o. 

Apesar dos benef�cios que os dois pontos trazem para o desenvolvedor, o
tempo de execu��o ainda � grande. Al�m disso, cerca de 60% do tempo de
execu��o de uma applet � usado no processo de interpreta��o do bytecode. 

O HotSpot utiliza um novo algoritmo chamado Generational Garbage Collection,
que divide o processo de limpeza da mem�ria em fatias de tempo. Ao inv�s de
varrer toda a mem�ria � procura de objetos para limpar, o que causa um
grande retardo na execu��o, ele varre pequenos espa�os de cada vez. Na
verdade este processo demora poucos milissegundos e com isso ganha-se
performance. Em grande parte das situa��es � prefer�vel um aumento de
velocidade de execu��o que toda a mem�ria limpa. 

Para melhorar a sincroniza��o, o HotSpot transforma o que eram linhas
m�ltiplas de c�digo de sincroniza��o numa �nica instru��o. A Sun ainda n�o
divulgou como isso est� sendo implementado. 

Talvez o mais sensacional no HotSpot seja o seu funcionamento durante a
interpreta��o e compila��o. Enquanto o HotSpot interpreta os bytecodes,
analisa tamb�m como cada programa Java executa e imediatamente usa esta
informa��o para aperfei�oar os m�todos cr�ticos que consomem mais tempo. Uma
grande vantagem � que ele tem todas as informa��es de tempo de execu��o �
sua disposi��o, o que � imposs�vel para um compilador est�tico. 

Depois de otimizar, o compilador gera uma vers�o em c�digo de m�quina deste
m�todo, que � ent�o armazenada num buffer de mem�ria na m�quina nativa. A
cada nova interpreta��o ele otimiza outros m�todos, at� que seu programa
Java esteja rodando a 220 Km/h e deixando C++ literalmente comendo poeira. 

A velocidade da Java foi desde o inicio o maior alvo de cr�ticas �
linguagem. Mas o HotSpot vem com a promessa de fazer da Java a linguagem
mais completa da atualidade. 

Uma linguagem que... 

        

*       Voc� escreve uma vez e roda em qualquer lugar 

        

        

*       Que tem pacotes completos para um grande n�mero de necessidades 

        

        

*       Que est� em constante evolu��o 

        

        

*       Que tem apoio de grandes empresas como IBM, Novell, Corel, Sony e
tantas outras 

        

        

*       Que pode ser utilizada na Internet, em PalmTops, SmartCards, TVs
interativas, torradeiras, Network Computers e agora conta com seu novo
atributo, a Super Velocidade. 

        

O �nico problema � que a Sun prometeu o lan�amento do HotSpot para o final
de 1997, depois adiou seu lan�amento para a JavaOne 98 e agora diz que far�
sua apari��o no primeiro quadrimestre deste ano. Mas estamos esperando por
ele e quando chegar, tomara que eu j� esteja em outro artigo, falando sobre
outros assuntos com uma outra x�cara de caf�.....

 

Andr� Zimowski Perevalo 
Associa��o Comercial do Paran� 
Dep. de Inform�tica - Desenvolvimento 
[EMAIL PROTECTED] 


 

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a