Clique aqui para ler esse artigo em PDF.![]()
A vida, o Universo e Tudo Mais
Liberdade com Dentes Afiados
A Luta pelo Java Livre
Com o Tiger solto, como está sendo tratada uma das questões mais controversas da tecnologia Java?
A nova versão de Java está na rua, o tão esperado Tiger chegou e trouxe tantas melhorias e novas funcionalidades, que muitos desenvolvedores ainda não conseguiram nem assimilar para que servem, quanto mais entendê-las e utilizá-las. Devido à extensão das mudanças, o Tiger ganhou nova pelagem, recebendo o nome oficial de Java 5 (ou J2SE 5.0), e vai chegando de mansinho a projetos de todo o mundo.
Entre as mais de 100 major features do Java 5, algumas acabam perdidas no mar de abreviações. As vantagens que não são representadas por novas bibliotecas ou recursos da linguagem valem atenção especial. A criação do J2SE 5.0 foi o maior esforço colaborativo da comunidade Java até hoje. Mais de 160 experts de diversas empresas e países (incluindo o Brasil) colaboraram em 15 JSRs diferentes – várias delas lideradas por outras empresas que não a Sun. Tal trabalho conjunto da indústria é a maior vantagem que o Tiger nos traz: não fosse esse empreendimento colaborativo, não teríamos tantas e tão importantes funcionalidades. E é isso que gera o ambiente padrão e compatível que precisamos para garantir nossa liberdade de escolha. Não há nada mais importante que liberdade e o Java 5 tem dentes afiados para lutar pela nossa.
O que nos leva a outra evolução fundamental trazida pelo Tiger, invisível para a maioria dos desenvolvedores: a licença da especificação. Mas por que dentre tantas funcionalidades você deveria se preocupar com um documento feito para advogados?
Padrão e compatibilidade
Como bem sabe o leitor, nossa liberdade de escolha na tecnologia Java é garantida pelo Java Community Process (JCP), organização que rege a criação e a evolução das especificações e exige que as diferentes implementações de Java e suas APIs sejam compatíveis. Várias implementações de Java existem, desde as fornecidas por gigantes como Sun, IBM, BEA e Apple, até as mantidas por ilustres desconhecidos como a americana Golden Code e a alemã InnoTek (que concorrem entre si com implementações do JDK para o OS/2). As implementações variam desde uma completa reescrita, como é o caso da JVM da IBM, até pequenas modificações no código original da Sun, caso da InnoTek.
O que garante que as implementações existentes sejam compatíveis são os conhecidos testes de compatibilidade, agrupados no JCK – Java Compatibility Kit. Nenhuma implementação pode ser chamada de "Java" até que passe nesses testes. E, buscando ampliar a compatibilidade, para o Tiger foram adicionados cerca de 13 mil testes de compatibilidade, chegando-se a mais de 45 mil. Essa sofisticação cada vez maior reflete o compromisso da tecnologia: garantir a compatibilidade e o foco multiplataforma.
Convergências e divergências
Com a crescente adoção de software livre por empresas e governos e a visão de liberdade que o movimento de software livre propõe, uma das questões sempre discutidas é a possível disponibilização da implementação Java da Sun como software livre.
Dado que as duas mais ativas comunidades no mercado de desenvolvimento atual são as de Java e software livre, a questão sobre implementações livres de Java é um debate importante. Tanto que neste ano foi assunto de destaque em eventos da comunidade Java (JavaOne nos EUA, JustJava em São Paulo) e da de software livre (como foi no Fórum Internacional Software Livre, em Porto Alegre, e no OSCON, em Portland, EUA).
É também um assunto controvertido. As divergências entre essas duas comunidades tão fortes (e de tantas formas parceiras), levou alguns – em especial líderes da comunidade de software livre – a apresentam-nas como rivais, ou mesmo completamente separadas. Foi o caso de Michael Tiemann, CTO da Red Hat, que disse que "unir as comunidades open source e Java é como misturar água e óleo". Mas é completamente injusto posicionar essas comunidades como tão diferentes, afinal, existe uma grande intersecção. A comunidade Java desenvolve cada vez mais software livre; a comunidade de software livre implementa os padrões e participa dos processos de padronização do JCP. É até difícil separar as duas em alguns momentos. O uso extenso de Java nos projetos da Apache Software Foundation, uma das mais importantes organizações open source, representa um esforço da comunidade Java ou da comunidade de software livre?
De fato, são dois grandes grupos de desenvolvedores que buscam o mesmo objetivo: a liberdade. A comunidade de software livre busca a liberdade através da disponibilização do código fonte – liberdade para o desenvolvedor. A comunidade Java busca a liberdade por meio de padronização e compatibilidade, que fornecem a almejada independência de plataformas e de fornecedores. São objetivos nem sempre compatíveis: como se compatibiliza a liberdade de o desenvolvedor modificar o código à vontade, com as restrições impostas pela compatibilidade? Essa é a grande discussão, e faz parte do processo de evolução do software aprendermos como harmonizar tais iniciativas.