Julho 2003
   

Java? É pra já!
“Compile once, install the virtual machine everywhere”

 

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

 

Por Guilherme Germoglio
 
Designer by
Danilo de Sousa