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/

A alvorada da Internet

Corria o ano de 1993, havia acabado de entrar na PUC-Rio e como todos os bolsistas tinhamos que lutar todos os dias para manter nossas médias acima de sete. Naquele ano aconteceu meu primeiro contato com a tal da Internet. Em 93 nem todos os lugares da PUC tinham ainda conexão com a Internet e um dia pediram, no laboratório em que trabalhava para ganhar uns trocados, que mandasse um e-mail para o pessoal do suporte do OS/2 para resolver um problema de instalação. Naqueles anos mandar um e-mail consistia em escrever a mensagem à mão, levar para a secretária, esperar a resposta vir e pegar a resposta impressa. Lembro até hoje com emoção o primeiro e-mail que mandei com esta tecnologia primitiva. Contei em casa orgulhoso que havia recebido um e-mail de Chicago!

Como aquele laboratório calotava nossos salários (até hoje nunca recebi um centavo do nosso chefe, conhecido como Mr Walrus) mudei de laboratório e fui fazer iniciação científica com um professor, de aparência peculiar, e tive a minha primeira conta de e-mail na internet.

Depois de torrar por semanas o administrador da rede, o todo poderoso administrador, a quem devíamos reverência, meu companheiro de trabalho Rafael e eu conseguimos nossas contas de e-mail e acesso a workstations Sun 2. Não havia nenhum browser de internet naquela época, nem o Mosaic estava disponível para nós, mas havia ftp, telnet e outros brinquedos interessantes.

A Sun SparcStation2, com seus 128MB Ram e 40Mhz era considerado um monstro computacional, várias pessoas estavam conectadas nela simultâneamente fazendo seus trabalhos e programas, até que descobrimos o fork.

O fork é uma função do C nos Unix, para quem ainda não foi apresentado a ele, que cria cópia de um processo. Aí pensamos, puxa e se fizermos um loop infinito de fork, o que vai acontecer?

Rodamos o seguinte programa (não faça isto em casa) :

void main () {
      while (1) {fork();}
}

Em poucos milisegundos travou tudo e saímos rapidamente do local antes que o administrador chegasse. Assim, após descobrir que podíamos rodar o programa remotamente travamos todas as workstations muitas e muitas vezes … Era a alvorada da Internet, como um bebê que descobre seus pés.

A segunda grande descoberta foi já depois de 96, de uma falha que havia no IIS 3.0 com o Windows NT 4 que escrevendo determinada url no navegador conseguia que toda a máquina caia e ganhava uma tela azul. As primeiras vítimas foram os colegas de laboratório, depois pensamos, será que funciona num destes sites de vendas de livros? Como não custava tentar, tentamos, e funcionou… A partir daí, até a Microsoft lançar o service pack que consertou o problema sempre havia um engraçadinho que fazia sua máquina crashar e para trabalhar era preciso tirar o cabo da rede.

Foram bons tempos aqueles. Se você também viveu esta alvorada da Internet conte sua história nos comentários.

Bom final de semana a todos.