Evento, Java x .NET

Comentários técnicos de comparações entre as plataformas Java e .NET – Parte 1

Autor: Rogério Moraes de Carvalho
Data da publicação: 05/07/2009

Artigos da série Comentários técnicos de comparações entre as plataformas Java e .NET

Parte 1

Seguem algumas afirmações de comparações entre as plataformas Java e .NET sem fundamentação e os meus comentários técnicos.

AFIRMAÇÃO 1 (retirada de um artigo)

"Prosseguindo com a sequência de colunas sobre as comparações entre linguagens de programação, neste artigo vamos comparar o Java ao .NET."

COMENTÁRIOS TÉCNICOS DA AFIRMAÇÃO 1

Como se pode observar, a afirmação acima está considerando Java e .NET como linguagens de programação.

A afirmação não pode ser considerada incorreta por considerar Java uma linguagem de programação. A tecnologia Java tanto é uma linguagem de programação quanto uma plataforma. Portanto, o sentido da palavra "Java" dependerá do contexto em que ela está sendo utilizada. Se o contexto deixar dúvidas com relação ao significado da palavra "Java", então se deve escrever de forma explícita: "Linguagem Java", "Linguagem de programação Java" ou "Plataforma Java", por exemplo. É importante ressaltar que a linguagem Java faz parte da plataforma Java.

Porém, a afirmação está completamente errada quanto a considerar .NET uma linguagem. Afinal de contas, .NET não é uma linguagem de programação, mas sim uma plataforma desenvolvida pela Microsoft. Portanto, a comparação não poderia ser entre Java e .NET, mas sim entre Java e C# ou Java e Visual Basic para .NET, isto para comparar uma linguagem da plataforma Java com uma linguagem da plataforma .NET. E para o artigo ser preciso, ainda deveria informar as versões das linguagens de programação usadas na comparação. Por exemplo, a linguagem Java teve acréscimos significativos na versão 5.0 (Java 5.0). Assim, como a linguagem C# teve acréscimos significativos nas versões 2.0 (C# 2.0) e 3.0 (C# 3.0). O mesmo aconteceu com a linguagem Visual Basic .NET, atualmente denominada simplesmente Visual Basic, que já teve sucessivas versões voltadas para a plataforma .NET: Visual Basic .NET (versão 7.0), Visual Basic .NET 2003 (versão 7.1), Visual Basic 2005 (versão 8.0) e Visual Basic 2008 (versão 9.0).

É importante observar que a plataforma .NET foi desenvolvida desde o início para suportar múltiplas linguagens de programação. Além das linguagens de programação C# e Visual Basic, atualmente a plataforma .NET também suporta diversas outras, como: Managed Extensions for C++, F#, IronRuby e IronPhyton, dentre outras. As extensões gerenciadas para programação C++ (Managed Extensions for C++ programming) foram criadas para estender a linguagem de programação C++, permitindo o uso do .NET Framework e compilação voltada para o CLR (Common Language Runtime) sem a necessidade de desenvolvedores C++ terem que aprender uma nova linguagem (http://msdn.microsoft.com/en-us/library/aa712574(VS.71).aspx). A linguagem de programação F# foi criada num projeto de pesquisa no Microsoft Research, em Cabridge (http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/). IronRuby é uma implementação da linguagem de programação Ruby para a plataforma .NET (http://ironruby.net). IronPhython é uma implementação da linguagem de programação Phython para as plataformas .NET e Silverlight (http://www.codeplex.com/IronPython).

Inicialmente, a plataforma Java foi projetada para suportar somente a linguagem de programação Java. Mas, apesar de não ter sido projetada para suportar múltiplas linguagens de programação, atualmente a plataforma Java suporta diversas outras linguagens, como: Groovy, JRuby, Jython e Clojure, dentre outras. Um destaque especial pode ser dado à linguagem de programação Groovy, que corresponde a uma linguagem dinâmica voltada para a máquina virtual Java (JVM – Java Virtual Machine). A linguagem de programação Groovy inclui características encontradas nas linguagens Python, Ruby e Smalltalk, mas utiliza uma sintaxe similar à linguagem de programação Java. Atualmente, ela é considerada de tal importância para a plataforma Java que até foi criada uma requisição de especificação Java (JSR – Java Specification Request) para padronização da linguagem de programação Groovy no JCP (Java Community Process): JSR 241: The Groovy Programming Language (http://www.jcp.org/en/jsr/detail?id=241). JRuby é uma implementação da linguagem de programação Ruby voltada para a plataforma Java (http://www.jruby.org). Jython é uma implementação da linguagem de programação Python para a plataforma Java (http://www.jython.org), sendo sucessora da implementação JPhython. Clojure é um dialeto da linguagem de programação Lisp e corresponde a uma linguagem de programação dinâmica voltada para a máquina virtual Java (http://clojure.org).

AFIRMAÇÃO 2 (retirada de um artigo)

"Antes que sigam as críticas, cabe esclarecer que o .NET não é uma linguagem, e sim uma plataforma da Microsoft que permite a utilização de diversas linguagens, como C#, Visual Basic, J# e ASP."

COMENTÁRIOS TÉCNICOS DA AFIRMAÇÃO 2

A afirmação 2 foi feita no mesmo artigo de onde foi retirada a afirmação 1. Interessante observar que apesar do autor saber que .NET é uma plataforma da Microsoft ainda insiste em chamá-la de linguagem. Segue o comentário de um grande equívoco cometido nesta afirmação.

Na realidade, o ASP (Active Server Pages) não é uma linguagem de programação, mas sim uma tecnologia para desenvolvimento de conteúdo Web dinâmico. Inicialmente, páginas ASP eram escritas com linguagens de script como VBScript ou JScript. Com o lançamento da primeira versão final da plataforma .NET, em fevereiro de 2002, o ASP evoluiu para o ASP.NET. Atualmente, o ASP.NET corresponde a um modelo unificado de programação que inclui serviços necessários para construir aplicações Web corporativas com um mínimo de codificação.O ASP.NET é parte do .NET Framework e na codificação de aplicações ASP.NET é possível acessar classes do .NET Framework. A codificação de aplicações Web com ASP.NET pode ser feita com qualquer linguagem compatível com o ambiente de execução (CLR – Common Language Runtime), incluindo C#, F#, Visual Basic e outras linguagens. Maiores informações sobre ASP.NET podem ser encontradas no site ASP.net, mantido pela Microsoft, no seguinte endereço: http://www.asp.net/get-started.

É importante ressaltar que a Microsoft retirou a linguagem de programação J# da versão final mais atual do Visual Studio: o Visual Studio 2008 (com ou sem o Service Pack 1). A linguagem J# foi disponibilizada pela Microsoft até o lançamento do .NET Framework 2.0 e do Visual Studio 2005, em novembro de 2005. Devido ao declínio no uso da linguagem J#, a Microsoft anunciou a retirada da linguagem e da ferramenta Java Language Conversion Assistant (JLCA) das versões posteriores ao Visual Studio 2005. Apesar disto, a Microsoft continuará fornecendo suporte para os clientes do Visual Studio 2005 até 2015. Sendo assim, na grande maioria dos casos, é extremamente desaconselhável investimentos na linguagem J# para desenvolvimentos voltados para a plataforma .NET. A linguagem de programação J# permite a desenvolvedores usarem a sintaxe da linguagem de programação Java para construir aplicações e serviços voltados para a plataforma .NET. Maiores informações podem ser encontradas no site da Microsoft no seguinte endereço: http://msdn.microsoft.com/en-us/vjsharp/.

AFIRMAÇÃO 3 (retirada de um artigo)

"Vamos focar então a comparação na construção de aplicações web, utilizando J2EE e o framework ASP NET da Microsoft, que é onde as duas linguagens mais competem."

COMENTÁRIOS TÉCNICOS DA AFIRMAÇÃO 3

A afirmação 3 foi feita no mesmo artigo de onde foram retiradas as afirmações 1 e 2.

Neste ponto, o autor deixa claro que não deseja comparar linguagens de programação, mas sim frameworks para desenvolvimento Web nas plataformas Java e .NET. Mesmo assim, ainda comete a seguinte imprecisão: "que é onde as duas linguagens mais competem". O correto seria dizer: que é onde as duas plataformas mais competem.

É importante ressaltar que o nome J2EE foi utilizado na plataforma Java até a versão 1.4. A partir da versão 5 (versão final atual), o nome foi modificado para Java EE, que significa Java Platform, Enterprise Edition. O Java EE 5 corresponde a uma requisição de especificação Java (JSR – Java Specification Request) publicada no JCP (Java Community Process) no seguinte endereço: http://jcp.org/en/jsr/detail?id=244.

A plataforma Java EE não deve ser comparada diretamente com a tecnologia ASP.NET. Isto porque Java EE é uma especificação Java, composta por diversas outras especificações Java, que engloba diversas funcionalidades que, na plataforma .NET, são fornecidas em outras APIs (fora do ASP.NET) dentro do .NET Framework. Por exemplo, atualmente, o desenvolvimento de uma arquitetura orientada a serviços (SOA – Service-Oriented Architecture) em .NET utiliza uma API denominada WCF (Windows Communication Foundation). Porém, a plataforma Java EE já inclui uma série de APIs que podem ser usadas para este mesmo propósito, como: JAX-WS 2.0, EJB 3.0 e JBI.

Neste caso, o autor poderia comparar recursos de um subconjunto do Java EE com o ASP.NET. Por exemplo, comparar Java Servlets, JSP e JSF com recursos similares no ASP.NET. É importante ressaltar que a comparação deveria apresentar as versões das tecnologias que estão sendo comparadas. Por exemplo, Java Servlet 2.5, JavaServer Pages 2.1 e JavaServer Faces 1.2 versus ASP.NET 3.5 SP1.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

2 comentários sobre “Comentários técnicos de comparações entre as plataformas Java e .NET – Parte 1

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s