O Projeto Mono e a disputa Java × .NET

Márcio d'Ávila, 1º de julho de 2004. Revisão 1, 26 de fevereiro de 2005.
Categoria: Programação: Java

O lançamento do Mono 1.0 pela Novell em 30 de junho representa imensas possibilidades para a comunidade open source e ao mesmo tempo uma teórica ameaça a certos argumentos em favor da plataforma Java.

Para quem não sabe, o Mono é um projeto de implementação livre (open source) de uma plataforma de desenvolvimento baseada no .NET Framework, incluindo o runtime da infra-estrutura .NET (CLI), um compilador da linguagem C#, e um conjunto de classes implementando o Framework .NET 1.1. O projeto idealizado por Miguel de Icaza, criador do GNOME (mecanismo GUI para Linux), foi encampado pela poderosa Novell, que tem investido muito em projetos em torno de software livre e inclusive adquiriu a boa distribuição Linux SuSE.

O projeto Mono inclui também integração com a máquina virtual IKVM.NET, uma JVM livre implementada em .NET Framework e que vem facilitar a interação do Mono (.NET) com Java.

No debate quanto às plataformas .NET e Java, fala-se que apesar da alta produtividade oferecida pelo framework .NET — contando com a forte ajuda que representa o IDE Microsoft Visual Studio.NET —, uma grande fraqueza de .NET em relação a Java é estar atrelado ao sistema Windows, enquanto Java é suportado em múltiplas plataformas.

Com o surgimento do Mono e a expansão da tecnologia .NET no mundo open source, uma barreira conceitual é vencida e fica colocada à prova a provável grande fraqueza da vasta plataforma Java: a falta de um framework ou conjunto de frameworks padrão da plataforma que faça(m) frente à grande produtividade e facilidades do .NET Framework associado ao uso do Microsoft Visual Studio.

Não se deve porém esquecer que o projeto Mono é uma iniciativa independente e não tem o endosso nem apoio oficial da Microsoft. Tampouco há sequer pretensão de ampla e total compatibilidade com a plataforma .NET, uma vez que as implementações do projeto Mono são baseadas essencialmente em especificações submetidas à ECMA e não cobrem importantes tecnologias prorietárias do Windows agregadas ao .NET, como o Microsoft Passport.

Desta forma, é incorreto e exagerado dizer que, através do Mono, a tecnologia .NET tenha se tornado multi-plataforma. O concreto é que parte da plataforma .NET (a parte publicamente especificada) foi portada de forma independente para outras plataformas pelo projeto Mono. A maioria das aplicações escritas nativamente em .NET não deve ser prontamente compatível com Mono. Uma aplicação deve ser escrita especificamente considerando as limitações do Mono para que seja portável entre as duas plataformas.

Não se pode dizer que faltem bons frameworks à plataforma Java, como o super popular Struts do projeto Apache Jakarta para web, o XDoclet para EJB, o Hibernate para mapeamento objeto-relacional, e principalmente o recente e promissor padrão JavaServer Faces - JSF, citando apenas alguns de destaque. Porém, a profusão e diversidade de frameworks para Java, sem uma unidade e padronização, acaba por dividir esforços, deixa um pouco perdida a comunidade de desenvolvedores Java e atrasa uma evolução ágil e coesa da plataforma.

Minha opinião é que a plataforma Java tem uma abrangência e uma riqueza de arquitetura superiores a .NET, mas o mercado exige produtividade, resultados rápidos, e isso — convenhamos — .NET tem oferecido. Como entusiasta de Java, mas com os pés no chão e sem deixar de deitar um olhar atento sobre o “lado negro da força”, eu espero que a comunidade Java possa ver logo luz no fim do túnel (e que não seja uma locomotiva vindo para atropelar...). :-)

Referências


© 2003-2007, Márcio d'Ávila, mhavila.com.br, direitos reservados. O texto e código-fonte apresentados podem ser referenciados e utilizados, desde que expressamente citada esta fonte e o crédito do(s) autor(es). A informação aqui apresentada, apesar de todo o esforço para garantir sua precisão e correção, é oferecida "como está", sem quaisquer garantias explícitas ou implícitas decorrentes de sua utilização ou suas conseqüências diretas e indiretas.