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]
---------------------------------------------------------------------