Velocidade
é tudo o que um programador quer. Desde os primórdios da programação
a palavra chave é eficiência. De que adiante se conseguir resolver
um problema se essa resposta dura anos para ser alcançada?`
Tudo
bem que é o algoritmo que detém boa parte da velocidade da execução,
mas a linguagem em que ele foi escrito também influi - principalmente
se este foi escrito em nossa velha e conhecida Java.
Os
engenheiros da Sun tiveram um sonho: portabilidade. A possibilidade
de compilar uma só vez o código e rodá-lo em qualquer lugar: Linux,
Windows, Solaris, Mac, onde der na telha. O sonho virou Java - uma
gíria para "café", nosso companheiro de todas as horas.
Java
é um projeto ambicioso já que "compile once, run everywhere"
é um esforço heróico num mundo de diversos sistemas de características
diferentes, seja na maneira de exibir os dados, seja na maneira
de tratar o lixo na memória. Mas até que foi bem sucedida. No Linux
e no Windows ela executa redondo o mesmo código compilado no Solaris,
por exemplo (exceto à parte de Swing, que no Linux tem-se uma perda
performance monstro, como pude presenciar). Esse sucesso se dá a
Java fazer-se uso de uma máquina virtual (esta sim, tem que ser
compilada para cada sistema) que vai interpretando o código gerado
pelo compilador Java (o bytecode) em tempo real.
Mas
isso todo mundo já sabe. E sabe também que essa portabilidade tem
seu preço: desempenho.
Todo
mundo conhece Java pela sua lerdeza. O pobre do computador chega
a suar quando executa algum programa complexo feito nessa linguagem.
Além de precisar de toneladas de memória para rodar suave.
Mas
ainda tem outro problema: como enviar aquele programinha interessante
de 200 k que você fez pra seu amigo dar o aval de sua utilidade,
se ele não possui o Java Runtime Enviroment instalado em seu computador?
Ou como se livrar da incômoda necessidade de digitar "java
<o nome da classe principal sem a extensão>" para ver
seu "bebê" rodando?
Bem,
Java não é como C ou Pascal que é só clicar duas vezes no arquivo
que ele executa, mas a saída pra esse problema é simples: um negocinho
interessante chamado script. Se você estiver no Windows, só é fazer
um arquivo ASCII ".bat" com o que você sempre teria que
digitar para executar o programa e depois criar um atalho para esse
arquivo. Já no Linux, o processo é semelhante - só que duvido muito
que o pessoal do sistema do pingüim vá criar um ícone, eles já são
adeptos à linha de comando mesmo e um "java" a mais ou
a menos não faria diferença.
Porém
o descrito acima só dá certo quando já possuímos a JVM (Java Virtual
Machine) instalada no computador. O que fazer então quando nem isso
dispomos?
As
saídas são várias - e esse problema deve render um bom dinheiro,
visto a quantidade de ferramentas existentes para sanar essa pequena
deficiência de Java.
Uma
dessas ferramentas é o JET, da Excelsior. Ele é tipo um faz tudo
em matéria de distribuição de seu programa em javanês. Ele empacota,
otimiza e até inclui uma máquina virtual em seu programa, para rodá-lo
em qualquer lugar que não se tenha instalado a JRE. Ou seja, faz
justamente os engenheiros da Sun menos queriam: gera código nativo
- e ainda com uma interface amigável!
Não
precisa ser um imbecil do tipo especial para usar o programa. Qualquer
imbecil consegue seguir o assistente e fazer um programinha que
tem até (un)instalador com aparência profissional, com direito a
colocar licença de uso e outras perfumarias.
Outra
ferramenta de semelhante função é o InstallAnywhere, da ZeroG Software,
que por sua vez é bem mais famoso que o primeiro, tanto que é o
programa utilizado na instalação do JBuilder, da Borland. Este se
resume a um gerador de um instalador para seu software em Java.
Assim
como o JET, o InstallAnywhere faz atalhos, ícones, unistalador,
etc. Mas esse respeita a integridade do código da API de Java, já
que o JET, na hora de sua instalação, resolve recompilar toda sua
J2SDK para efeitos de otimização. O que você acha de compilar os
2000 mil arquivos da API padrão de Java?
Pronto,
depois de saber o que usar para fazer com que seu programinha de
200 k rode no computador de seu amigo sem que este tenha que baixar
os cerca de 10 mega da JRE, você resolve enviá-lo e ainda mais com
instalador "profissional", licença de uso e o pacote completo
de perfumaria, incluindo também a "pequena" JVM...
...e
acaba tendo uma bela surpresa: seu programinha de 200 k, depois
de passar pelo JET/InstallAnywhere, virou um monstro de 30 megabytes...
Quer
saber? Das duas, uma:
Ou
você espera seu paciente amigo fazer o download de 10 mega a altíssima
taxa 1,3 kB/seg ou você espera todos os sistemas operacionais incluírem
uma máquina virtual de Java em seu interior. Ah! O que nos leva
a mais uma batalha judicial com a Microsoft...
|