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/

Comments on this entry are closed.

  • Leandro

    Como voce pode dizer que Java é uma linguagem lenta e pobre sem ao menos ter tentado aprender?
    Java é uma linguagem complexa que se leva de 2 a 4 anos para ter um dominio dela. Como alguém tão inexperiente assim pode dizer um absurdo desses?
    Acho que seria melhor voce se informar melhor antes de escrever essas bizarrices.

  • Rafael Kuba

    @Leandro não precisa aprender Java para saber que é ágil como um hipopótamo.

    4 anos para aprender Java só se o cara é mongol

  • Pedro Paulo

    Leandro,

    Na engenharia de computação há umas matérias de linguagem de programação. Com as ferramentas que você aprende ali é possível conhecer os pontos fortes e fracos de uma linguagem sem nunca ter escrito código nela.

    Com relação a inexperiência que você menciona acho que não é o caso pois programo desde o ano longínquo de 1985 quando era um moleque de 10 anos e achava Basic o máximo. Já vão aí 25 anos de código. E acho que faz tempo passei de 1 milhão de linhas de código.

  • Era

    Vc pode me dizer a fonte original que diz que a Oracle tá processando o Google por usar a plataforma Java? O que tenho lido em sites gringos é que o processo envolve um algoritimo que o google tem usado que não pertence a eles. Não importa qual linguagem/plataforma o Google usar, ele poderia estar usando uma VM para C# que ia tomar processo igual.
    O que importa é, um algoritimo da VM deles “copiou” algum da JVM.

  • Pedro Paulo

    Era,

    Na verdade no caso da Microsoft o que ela exige é que você implemente pelo menos todas as features do CSharp na sua VM. Se você criar um superset não tem galho.

    No caso do JAVA você tem que criar uma VM com exatamente as mesmas specs da JVM, nem mais, nem menos.

    Eu li aqui: http://www.computerworld.com/s/article/9180678/Update_Oracle_sues_Google_over_Java_use_in_Android?taxonomyId=13

  • Era

    “Dulaney said Oracle’s case could be “hard to prove” and that a legal battle could take a long time. “What they’ll have to argue about is whether Google did a purely clean-room Java or if they have someone with inside knowledge of the code,” he said.”

    Mas eles não estão rodando java, e o trecho que citei(pelo que entendi) diz o que eu falei antes, o problema não é adicionar, remover ou usar o Java/JVM, o problema é ter algum algoritimo da Sun/Oracle.

    Esse detalhe de “criar” uma JVM igual eu só vi no meioBit, e aquele site não é nem um pouco confiavel.

    Sobre “java estar caindo”, já esteve antes, caiu muito mais e se recuperou. Mas também prefiro python a Java….

  • Era

    Desculpa o flood, mas achei o que queria:

    “On the 12th of August 2010, Oracle, owner of Java since it acquired Sun Microsystems in April of 2009, sued Google over claimed infringement of copyrights and patents. The lawsuit claims that, “In developing Android, Google knowingly, directly and repeatedly infringed Oracle’s Java-related intellectual property.”[12] Oracle has named Boies, Schiller & Flexner as part of its legal team.[13]

    Specifically the patent infringement claim references 7 patents including United States Patent No. 5,966,702, entitled “Method And Apparatus For Preprocessing And Packaging Class Files”, and United States Patent No. 6,910,205, entitled “Interpreting Functions Utilizing A Hybrid Of Virtual And Native Machine Instructions”.[14]It also references United States Patent No. RE38,104, (“the ‘104 patent”) entitled “Method And Apparatus For Resolving Data References In Generated Code” authored by James Gosling best known as the father of the Java programming language.[15]”
    fonte: wikipedia: (http://en.wikipedia.org/wiki/Dalvik_%28software%29 )

  • O que me preocupa nisso tudo é que tem Java pra tudo quanto é lado… Não entendo de programação, nem de direito, mas o pior de tudo é que isso mais parece ganância da Oracle do que qualquer coisa!
    Não dá a impressão de que eles esperaram o Android se popularizar, para depois tentar o processo?

  • Mais um ótimo post.

    Não tiro uma vírgula dele. Só adiciono Ruby à sua lista de linguagens legais =)

    Aproveitando para colaborar respondendo alguma perguntas:

    Fabiano, a Oracle não esperou o suceso do Android, porque ela passou a ser dona do Java (por ter comprado a Sun, antiga dona) recentemente. Eles são os caras mais oportunistas do universo. Se tiver um motivo para eles processarem alguém, o farão. Muitos dizem que a compra da Sun foi mais para poder ter controle de tecnologias livres largamente utilizadas (Netbeans, Java, MySQL, VirtualBox, …) e fazer um “auê” com elas.

    Era, entre as várias patentes quebradas, está sim uma que envolve algum algoritmo (que não deveria poder ser patentenado, mas aí já estamos em outra discussão) que a Oracle tomou posse na compra da Sun. Mas tem várias outras coisas, algumas delas citadas pelo PPJ e pelo MeioBit (tem mais patentes aí, e eu também não foi ficar tentando traduzir legalês pra explicar xD). O que o Google infringiu, o porque infringiu, não importa muito para a discussão IMHO: o que interessa é o novo posicionamento de quem detêm os direitos do Java. O que a comunidade em torno dela fará? Ou ainda pior: o que pode fazer? Talvez nada. E esse é o principal ponto =(

  • Tander

    Achei o texto muito parcial e tendencioso, não dá levar isso tudo tão a sério.

  • Zé do Côco

    Pra falar de uma tecnologia, precisa conhecê-la primeiro. E está claro que o Sr. Pedro Paulo não conhece nada de Java.
    Pelo visto, nunca nem instalou a JDK, pois morre de medo de não dar conta. Acha um “inferno para instalar em todas as plataformas”, que até o cachorro de minhã mãe sabe fazer, sem nunca ter feito, só de me assistir.

    Com certeza Java não será a plataforma para o resto da vida, mas independente da Oracle, ainda vai durar muitos anos, pois ainda é a mais usada no mundo.

    Para finalizar, na minha opinião, para alguém postar em seu blog sobre uma tecnologia sem que tenha usado pelo menos uma vez, só pode estar querendo queimar seu filme.

    Boa sorte.

  • Pedro Paulo

    Puxa Zé do Côco, coloquei acento no o certo acho, o cachorro da sua mãe instala jdk, interessante.

    Como já expliquei antes para analisar uma linguagem não precisa programar nela.

    Seu comentário não adicionou nada, só procurou atacar o articulista…

  • João Bernardo

    O problema é que algumas faculdades (incluindo a minha) chamam o curso de Java de “Programação Avançada”… Faz as pessoas acharem que vale a pena aprender

  • É óbvio que uma tecnologia X ou Y não é a melhor para todos os problemas. Tem pessoas que adotam uma tecnologia por pura questão de mercado, ou cliente, ou outros motivos.

    Assim como existe pessoas que tem preconceito. Fazer o que né, as pessoas são assim!

    Aprendi com investimentos na bolsa de valores que não se pode colocar todos os ovos na mesma cesta, nesse ponto concordo contigo.
    Mas antes de falar algo de alguma tecnologia ou qualquer outra coisa, tente aprender sobre ela, os motivos pelo qual as pessoas à utilizam e outras características do ambiente antes de sair pregando de forma fervorosa que uma tecnologia X ou Y ou outra coisa qualquer é uma “merda”.