O Java é realmente lento?


De uma vez por todas, o Java não é lento, hoje isso é mito, é lenda. Em muitos casos é mais rápido do que C em compilação nativa. Mas como? Em C eu compilo minha aplicação nativamente, o código em teoria fica “otimizado” para a plataforma para o qual foi compilado e é executado diretamente pelo sistema operacional e Java é compilado em bytecodes para então ser interpretado e executado por uma máquina virtual (Java Virtual Machine ou somente JVM) para só então dar retorno ao usuário. Em Java eu tenho uma “camada” a mais na hora da execução e como ele pode ser mais rápido?

É simples, Java é mais inteligente!

Se você se contentou com a resposta acima pode parar de ler e ir estudar Java, mas se você quer um exemplo prático para entender mais como funciona essa “inteligência” veja o caso abaixo:

Vamos dar um exemplo prático e simples, faça um laço do tipo for iterando 10.000.000 vezes e dentro do laço não coloque nada, isso mesmo, deixe em branco, nem uma linha de comentário.

Compile em C e execute.

Cerca de 1 mês depois compile o mesmo em Java e execute.

Cerca 5 segundos depois analise os resultados.

Por que uma diferença tão brutal? Por que em C a aplicação passa 10.000.000 dentro de um laço for vazio demorando cerca de 1 mês e Java faz o mesmo em cerca de 5 segundos?

Para começo de conversa, o C é honesto e como você mandou ele passar 10.000.000 no laço for ele vai passar, mesmo que isso for de certa forma inútil para a execução da aplicação. Já o tal do Java é esperto e engana você desenvolvedor, ele analisa a aplicação e “entende” que passar 10.000.000 em um laço for que não irá agregar nada, é inútil e simplesmente não faz a instrução, essa é a inteligência de Java que o permite ser mais rápido do que linguagens compiladas nativamente.

Citei o exemplo com C, pois C é a linguagem hoje mais otimizada, mas pode ser comparado com Delphi, Pascal e qual outra quiser.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.