Java: porque não usar!

A recente notícia de que a Oracle pretende processar o Google por quebra de patente pelo uso do Java nos aparelhos Android acendeu um alerta vermelho na comunidade de desenvolvedores.

No meu blog eu costumo descer a lenha no Java; na minha visão é uma linguagem que tem muito mais desvantagens que vantagens. Lerda na maior parte dos casos (a menos daqueles feitos para ficar com 98% da performance do C/C++ e que o cabra levou dez anos para otimizar), com tendência a portabilidade mas é um inferno para instalar em todas as plataformas, teoricamente aberta até certo ponto, etc.

Java foi o grande hype de linguagens no final dos anos 90 e início de 2000, muitos javaboys defendiam como se estivessem pregando o Evangelho as virtudes da linguagem, diziam que não tinha ponteiros, que era a linguaguem onde você escreve uma vez e roda em todos os sistemas operacionais, etc.

Aí daquele que ousasse dizer algo em contrário. Aí daquele que se sentisse confortável com ponteiros (coitado do Mel). Aí daquele que para fazer seu código compilar em várias plataformas usava C/C++ com alguns #ifdef. Aí daqueles que não criassem classes até para fazer um programa hello world.

E o Java foi dominando o mercado das linguagens, chegou a ter 28% do total de usuários segundo o indíce TIOBE.

Eu pessoalmente sempre detestei Java, talvez por preconceito, mas posso dizer que nunca escrevi uma linha de código em Java e nunca fiz questão de aprender.

Estabelecidas estas bases vamos agora ver o caso da Oracle+Sun x Google. Segundo o site ArsTecnica a Oracle diz que o Google violou de modo intencional as patentes que a Sun possuia e agora a Oracle possui.

A licença do Java é complexa e basicamente é um GPL com algumas exceções: a parte J2ME não é GPL e portanto todos os aparelhos móveis que usam J2ME tem que pagar royalties à Oracle. O Google evitou isto escrevendo uma máquina virtual Java desde o início e desta forma ele não estaria usando código GPL com a cláusula de pagamento de royalties em aparelhos mobile.

Escrever uma máquina virtual Java é algo perfeitamente lícito, existem outras máquinas virtuais como por exemplo o IBM J9 (que aliás parece ser melhor que a VM da Oracle), no entanto a Oracle/Sun proíbe qualquer máquina virtual que não cumpra todas as especificações do Java.

Até aí pode fazer sentido. Mas o galho é que ela proíbe também as que ampliam as especificações do Java e aí parece que pegou o Google.

Alguns podem argumentar: ela só está defendendo o direito dela. É verdade. Mas quando você se comporta com uma linguagem de programação supostamente aberta com cláusulas esquizofrênicas como estas, você está mandando um recado claro a comunidade de desenvolvedores para não por todos os seus ovos nesta cesta.

Resumo da ópera:

Falando em português utilizado no Maracanã: o pau vai comer. Vai ser briga de cachorro grande e em briga de cachorro grande melhor não se meter.

Minha dica para você: se não aprendeu Java não aprenda. Use C/C++, aprenda uma linguagem interpretada legal como Python, aprenda Lua (Lua foi desenvolvida no TeCGraf da PUC-Rio, onde trabalhei alguns saudosos anos) . Pode ficar tranquilo que se vive muito bem sem Java.

Off-topic: O Java está em franca queda no índice TIOBE e está sendo ultrapassado pelo lendário e ancião C.

Outro texto muito bom sobre o assunto em português foi publicado no MeioBit.

Java Sucks: http://www.java-sucks.com/

15 comentários em “Java: porque não usar!”