.NET Framework, ASP.NET MVC, ASP.NET Web Forms, C#, Evento, Java x .NET, Microsoft, Visual Studio, WF, WPF

Minha palestra sobre educação e certificação na Plataforma .NET no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra de fechamento dia dia 1 de 2 no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Na palestra, eu abordei uma série de recursos disponíveis para estudo da plataforma .NET, principalmente recursos fornecidos pela Microsoft Brasil, gratuitos e em idioma portugês brasileiro. Também são apresentadas as novas certificações disponíveis atualmente e voltadas para a plataforma .NET 4 e para o Visual Studio 2010.

Os seguintes tópicos foram apresentados:

  • Introdução à Plataforma Microsoft
  • Capacitação gratuita
  • Aprendizado para iniciantes
  • Videocasts
  • Biblioteca MSDN
  • Centro de avaliação de software
  • Eventos e Webcasts
  • Fóruns MSDN
  • Channel 9 Brasil
  • Galeria de códigos (em inglês)
  • CodePlex (em inglês)
  • Galeria do Visual Studio
  • MSDN Media Center
  • MSDN Newslettter
  • MSDN Blogs
  • MSDN Magazine
  • DevLabs (time dos EUA)
  • MSDN no mundo
  • eBooks gratuitos
  • Microsoft Learning
  • Revistas e grupos de usuários
  • Microsoft Developer Network
  • MCTS em .NET 4 e Visual Studio 2010
  • MCPD em .NET 4 e Visual Studio 2010
  • Atualização do .NET 3.5 e VS 2008
  • Materiais de estudo recomendados
  • Exame relacionado de TFS 2010

Os slides da apresentação estão disponibilizados abaixo.

C#, Evento, Java x .NET, Microsoft

Minha palestra sobre a linguagem C# 4 e 5 no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra sobre a Linguagem de programação C# no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Inicialmente, a minha ideia era abordar as capacidades atuais da linguagem C# 4 e comentar sobre uma novidade proposta publicamente pelo time de desenvolvimento do C# na Microsoft para a versão 5.

Devido ao perfil heterogêneo do público do evento, composto também por desenvolvedores da plataforma Java, eu resolvi apresentar a evolução da linguagem C# desde a versão 1.0 até a proposta de evolução da próxima versão, ou seja, a linguagem C# 5.

Em resumo, eu apresentei algumas das principais características incorporadas à linguagem C# desde a versão 1.0. A evolução da linguagem foi apresentada como descrita a seguir.

  • C# 1.0 (Fev 2002):
    Código gerenciado, linguagem de POO, suporte nativo a propriedades e eventos, documentação XML, exceções, segurança de tipos, delegates, sobrecarga de operadores, dentre outros recursos.
  • C# 2.0 (Nov 2005):
    Generics, Iterators, tipos parciais, tipos anuláveis, métodos anônimos, qualificador de apelidos de namespace, classes estáticas, níveis de acesso distintos nos acessores de uma propriedade, covariância e contravariância em delegates, dentre outros recursos.
  • C# 3.0 (Nov 2007):
    Propriedades implementadas automaticamente, iniciadores de objetos, iniciadores de coleções, variáveis locais e arrays com tipos deduzidos implicitamente, métodos de extensão, expressões lambda, árvores de expressão, tipos anônimos, expressões de consulta, métodos parciais, LINQ (Language INtegrated Query), dentre outros recursos.
  • C# 4 (Abr 2010):
    Objetos tipados dinamicamente, parâmetros opcionais e nomeados, melhorias na interoperabilidade com COM, covariância e contravariância em tipos genéricos, dentre outros recursos.
  • C# 5 (provavelmente final de 2012 ou início de 2013):
    Compilador como um serviço, dentre outros recursos.

Abaixo, seguem os slides da palestra apresentada no evento.

Durante a apresentação, eu fiz uma demontração do zero de como usar os conhecimentos de SQL para criar consultas com LINQ (Language INtegrated Query) na linguagem C# 3.0 ou superior. Eu consultei um conjunto de arquivos numa pasta fazendo operações de projeção, filtragem, ordenação, agrupamento e agregação. Foi usado o LINQ to Objects que permite consultar uma sequência enumerável de objetos.

Abaixo, segue o projeto da aplicação Console do Visual Studio 2010 exatamente como foi realizado durante o evento.

DemoLinq.zip

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET, Linguagem Java, Plataforma Java

Minha palestra sobre Linguagem Java 6, 7 e 8 no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra sobre a Linguagem de programação Java no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Inicialmente, a minha ideia era abordar as capacidades atuais da linguagem Java 6 e focar nas novidades propostas pela Oracle para as duas próximas versões: 7 e 8.

Devido ao perfil heterogêneo do público do evento, composto também por desenvolvedores da plataforma .NET, eu resolvi apresentar a evolução da linguagem Java desde a versão 1.0 até o plano "B", que tinha sido recém anunciado pela Oracle, para as versões 7 e 8.

Em resumo, eu apresentei algumas das principais características incorporadas à linguagem Java desde a versão 1.0. A evolução da linguagem foi apresentada como descrita a seguir.

  • Java 1.0 (Jan 1996):
    Introdução da linguagem de programação orientada a objetos projetada para ter o mínimo de dependência de implementação.
  • Java 1.1 (Fev 1997):
    Suporte a classes internas (classes aninhadas)
  • Java 1.1 (Fev 1997):
    Suporte a classes internas (classes aninhadas).
  • Java 1.2 (Dez 1998):
    Acréscimo da palavra-chave strictfp para garantir a portabilidade em cálculos com ponto flutuante.
  • Java 1.4 (Fev 2002):
    A evolução da linguagem Java passou a ser governada pelo Java Community Process (JCP) no JSR 901 e acréscimo da palavra-chave assert.
  • Java 5.0 (Set 2004):
    Maior evolução da linguagem desde a sua criação: generics, anotações (metadados), autoboxing/unboxing, enumerações, varargs, laço for avançado e static import.
  • Java 7 (prevista para o meio de 2011):
    Suporte a linguagens tipadas dinamicamente, strings em switch, try-with-resources, inferência melhorada na criação de instâncias genéricas (diamond), invocação simplificada com varargs, literais binários e sublinhado para literais inteiros e multi-catch, dentre outros recursos.
  • Java 8 (prevista para o final de 2012):
    Modularidade (superpacotes), projeto Lambda (tipos funções e expressões Lambda), extensão da sintaxe de anotações, expressões literais para listas, conjuntos e mapas, acesso com sintaxe de índices para listas e mapas.

Seguem, abaixo, os slides da palestra apresentada no evento.

No slide 32, é interessante observar o descontraído diálogo que eu tive pelo Twitter com um dos engenheiros da Oracle sobre o título do anúncio que ele fez no blog dele sobre a parceria da Oracle com a IBM na evolução do OpenJDK.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET, Microsoft, Plataforma Java

Minha palestra de abertura no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra de abertura no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Todo dinheiro arrecadado com as inscrições foi doado para a Associação de Pais e Amigos da Criança com Câncer e Hemopatias (APACC).

A palestra de abertura do evento abordou os seguintes tópicos:

  • Descrição do evento
  • O trabalho da APACC
  • Inscrições como doações para a APACC
  • Apoio técnico
  • Apoio na organização
  • Apoio com infraestrutura
  • Apoio na divulgação
  • Agradecimentos pessoais e especiais
  • Mudança do nome do evento
  • Boas-vindas

Os slides da palestra de abertura estão disponíveis abaixo.

Evento, Java x .NET, Microsoft, Plataforma Java

Evento “Plataforma Java x Plataforma .NET – Edição SP 2010”

Quinta edição do evento e pela primeira vez em São Paulo

O evento Plataforma Java x Plataforma .NET será realizado em São Paulo-SP pela primeira vez, uma vez que as quatro edições anteriores foram realizadas no Distrito Federal.

O que NÃO É o evento?
Uma disputa para demonstrar qual é a melhor das plataformas: Java ou .NET.

O que É o evento?
Um conjunto de palestras técnicas de Java e .NET, apresentadas por especialistas nos temas abordados, seguidas por debates motivados por perguntas dos participantes.

Vejam informações detalhadas sobre o evento no site: http://www.javaversusdotnet.com.br/sp2010/.

Temas do evento Plataforma Java x Plataforma .NET - Edição SP 2010
Informações detalhadas da programação: http://www.javaversusdotnet.com.br/sp2010/Programacao.aspx.

Inscrições

O evento tem caráter técnico e beneficente, sendo que todas as inscrições são realizadas como doações para a APACC (Associação de Pais e Amigos da Criança com Câncer e Hemopatias): http://www.apacc-sp.org.br/.

Mais informações

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET

Evento Plataforma Java x Plataforma .NET – Edição DF 2009

O evento Plataforma Java x Plataforma .NET – Edição DF 2009 conta com palestrantes de alto nível técnico para representarem tanto a plataforma Java quanto a plataforma .NET (http://www.javaversusdotnet.com.br/df2009/Palestrantes.aspx). A idéia do evento é promover um debate técnico abordando diversos temas.

Edições anteriores do evento já contaram com a participação da BEA Systems (adquirida pela Oracle), da Borland (adquirida pela Micro Focus), da IBM, do INdT (Instituto Nokia de Tecnologia), da Microsoft, da Oracle e da Sun Microsystems (adquirida pela Oracle), dentre outras empresas multinacionais de TI.

A edição DF 2009 do evento comta com a participação das seguintes empresas de TI: Borland, Embarcadero, Micro Focus, Microsoft e Red Hat, dentre várias outras.

Informações detalhadas sobre o evento podem ser encontradas no site: http://www.javaversusdotnet.com.br/df2009.

Abaixo, eu destaco algumas páginas do site com informações importantes sobre  o evento.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET

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

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

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

Parte 2

Seguem mais algumas afirmações reais sobre as plataformas Java e .NET sem fundamentação e os meus comentários técnicos. As afirmações podem ter sido feitas em artigos, em comentários de artigos ou em debates de grupos de discussão.

AFIRMAÇÃO 4 (retirada de um artigo)

"Além disto, nada na Microsoft é open source."

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

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

A Microsoft não somente tem diversos projetos open source, como criou um Web Site para hospedar projetos open source denominado CodePlex. O site pode ser acessado no seguinte endereço: http://www.codeplex.com. Inclusive, diversos dos projetos open source hospedados no CodePlex têm participação do time de desenvolvimento da Microsoft. Seguem exemplos de alguns projetos open source importantes hospedados no CodePlex: ASP.NET MVC, AJAX Control Toolkit, Silverlight Toolkit, DotNetNuke, SQL Server 2008 Sample Databases e DotNetZip, isto somente para citar alguns.

AFIRMAÇÃO 5 (retirada de um artigo)

"A grande diferença entre o J2EE e o .NET é que desde que o .NET suporta apenas Win32, um número maior de máquinas se faz necessário, comparando ao J2EE, devido às limitações dos processadores."

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

A afirmação 5 foi feita no mesmo artigo de onde foram retiradas as afirmações 1 a 4.

A afirmação de que a plataforma .NET somente suporta Win32 (arquitetura 32-bit) é completamente errada.

Atualmente, a plataforma .NET está na versão 3.5 SP1.

O Microsoft .NET Framework 3.5 Service Pack 1 (SP1) suporta as seguintes arquiteturas de processador:

  • x86
  • x64
  • ia64 (64-bit Intel Itanium architecture) (somente suportada com o Windows Server 2008)

O Microsoft .NET Framework 3.5 Service Pack 1 (SP1) suporta os seguintes sistemas operacionais:

  • Microsoft Windows XP
  • Microsoft Windows Server 2003
  • Windows Vista
  • Windows Server 2008
  • Windows 7

Informações mais detalhadas podem ser encontradas no documento Microsoft .NET Framework 3.5 Service Pack 1 (SP1) Readme, disponível no seguinte endereço: http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/dotNet35SP1Readme.htm.

AFIRMAÇÃO 6 (retirada de um artigo)

"Em um fator de extrema importância, como velocidade de desenvolvimento, o .NET leva grande vantagem. A sua IDE proprietária, o Visual Studio, é baseado em RAD (Rapid Application Development), aumentando a agilidade na construção de aplicações. O Visual Studio .NET inclui várias ferramentas interessantes em termos de produtividade, como por exemplo o Web Forms. Estima-se que um projeto criado do zero, leve-se de 10% a 20% menos tempo para entrar em produção quando desenvolvido em .NET."

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

A afirmação 6 foi feita no mesmo artigo de onde foram retiradas as afirmações 1 a 5.

Este trecho corresponde a uma opinião pessoal do autor sem nenhuma base técnica.

A questão de o Visual Studio ser mais produtivo que os IDEs de Java é bastante discutível. Na realidade, a discussão está bem longe de ser simples como sugere o autor. Qualquer estimativa que não leve em consideração as características do projeto de software a ser desenvolvido será uma mera especulação sem a menor credibilidade. Além disto, em comparações de produtividade entre IDEs deve-se isolar e comparar recursos equivalentes individualmente.

Somente para citar um recurso, a última versão do IDE NetBeans (6.7) tem um suporte muito maior a refactoring que a última versão do Visual Studio (2008 SP1). E a última versão do IDE do Eclipse (3.5.0 – Galileo) ainda supera o NetBeans 6.7 neste quesito. Certamente, refactoring é um recurso essencial para aumentar a produtividade em projetos corporativos com arquiteturas complexas. Além disto, os refactorings do Eclipse são projetados para sugerir melhores práticas de programação orientada a objetos, superando o Visual Studio em alguns refactorings individuais.

Observe que seria um absurdo eu concluir que os IDEs NetBeans 6.7 e Eclipse 3.5.0 são mais produtivos que o IDE Visual Studio 2008 SP1 pelo simples fato de terem um suporte muito superior ao recurso de refactoring. Assim como é mais absurdo ainda o autor concluir que o Visual Studio é mais produtivo, sem nem mesmo citar com que IDEs Java está comparando e nem as versões usadas na análise dele. Pior ainda, o autor ainda é capaz de deduzir uma redução de 10% a 20% no tempo gasto para um sistema entrar em produção quando desenvolvido em .NET, em relação à Java, sem nem sequer contextualizar o projeto a ser desenvolvido e nem os IDEs Java a serem utilizados. Ou seja, esta afirmação é completamente desprovida de significado técnico.

AFIRMAÇÃO 7 (retirada de um fórum)

"Se você considerar só a IDE realmente é de 10% a 20% a menos. Se considerar que no Java usam-se 300 frameworks para fazer uma coisa, e que cada vez que você contrata um desenvolvedor precisa ensinar ele a usar o framework que você utiliza, já perde mais uns 10%. Colocando outras possibilidades, como delegates, enums (que o Java só recebeu recentemente), LINQ, etc, vai mais uns 10%. Ou seja, dá uma produtividade de até 40% a mais… Ainda bem que desenvolvedor é barato, e que o caro é máquina, não é? Ops, acho que é o contrário…"

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

A afirmação 7 foi feita num fórum e corresponde a uma resposta à afirmação 6.

Na afirmação 6, o autor do artigo tirou uma conclusão sem o menor fundamento técnico e sem contextualização, chutando uma porcentagem de 10% a 20% no tempo gasto a menos para um sistema entrar em produção quando desenvolvido em .NET.

Porém, o comentário da afirmação 7 pode ser considerado até mesmo mais absurdo que o escrito na afirmação 6. Este tipo de comentário da afirmação 7 exemplifica, de forma bem clara, a idéia destacada no parágrafo abaixo.

Na maioria das vezes, estes debates deixam a parte técnica de lado e passam a conter disputas de ego. Neste cenário, a precisão técnica da informação passa a ser secundária, pois o mais importante é tentar convencer que uma das plataformas é superior à outra independente de contexto. Em geral, estes debates são carregados de ironias que não acrescentam nada, além de conter diversas informações erradas.

O parágrafo destacado acima foi retirado da introdução desta série de artigos.

Na afirmação 7, as porcentagens são chutadas exatamente como fez o autor do artigo original. Somente para destacar uma parte: "Colocando outras possibilidades, como delegates, enums (que o Java só recebeu recentemente), LINQ, etc, vai mais uns 10%.".

O radicalismo da afirmação 7 também fica claro na declaração de que muitas opções de frameworks para fazer a mesma coisa é prejudicial para a produtividade. Observem aqui uma inversão de valores, uma vez que ter muitas opções passou a ser uma desvantagem. Curiosamente, a própria plataforma .NET já tem diversos frameworks para fazer as mesmas coisas. Principalmente em projetos de frameworks open source com recursos similares aos fornecidos pela Microsoft no .NET Framework. Porém, o autor da afirmação 7 somente consegue enxergar este problema na plataforma Java.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

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

Evento, Java x .NET

Comentários técnicos de comparações entre as plataformas Java e .NET – Introdução

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

Introdução

Comparações entre as plataformas Java e .NET costumam ser polêmicas e gerar intensos debates. Na maioria das vezes, estes debates deixam a parte técnica de lado e passam a conter disputas de ego. Neste cenário, a precisão técnica da informação passa a ser secundária, pois o mais importante é tentar convencer que uma das plataformas é superior à outra independente de contexto. Em geral, estes debates são carregados de ironias que não acrescentam nada, além de conter diversas informações erradas. É comum encontrar pessoas que se apresentam como especialistas em uma das plataformas e escrevem absurdos sobre a outra plataforma com objetivo de denegri-la. Curiosamente, estas pessoas cometem equívocos até mesmo sobre a plataforma que estão defendendo e na qual se julgam especialistas.

O que leva alguém a ler um texto de comparação entre as plataformas Java e .NET? Em alguns casos, a pessoa precisa de informações para decidir sobre qual das plataformas, Java ou .NET, adotar no desenvolvimento de um sistema num dado contexto. Em outros casos, a pessoa quer direcionar seus estudos na plataforma que ela apostar ser a mais promissora. Porém, estes são apenas dois entre vários outros motivos possíveis. Mas, independente da motivação, uma coisa é certa: as informações de comparação entre as plataforma Java e .NET somente têm algum valor se houver uma base técnica de sustentação consistente.

É possível encontrar muitos artigos que se propõem a comparar as plataformas Java e .NET na Internet. Porém, na grande maioria dos casos, as informações são tendenciosas, incompletas e escritas por pessoas despreparadas. Para não escrever um texto inútil, o autor de um artigo de comparação entre Java e .NET precisa ter conhecimento e experiência nas duas plataformas e tentar fazer uma análise o mais imparcial possível. É importante ressaltar que: NÃO EXISTE UMA RESPOSTA ABSOLUTA sobre qual é a melhor plataforma. Uma plataforma pode ser mais indicada que a outra num dado contexto e menos em outro.

Quando se deve e quando não se deve confiar em informações apresentadas num artigo ou num debate de comparação entre as plataformas Java e .NET? É preciso analisar a fundamentação técnica das informações apresentadas para justificar uma determinada conclusão. Conclusões baseadas em preferências pessoais, em empirismo ou em mitos sem fundamentação técnica devem ser descartadas.

O objetivo desta série de artigos não é comparar as plataformas Java e .NET, porque seria necessário escrever um enorme livro e, ainda assim, somente seria possível contextualizar alguns casos particulares. A idéia é fornecer conhecimento técnico para derrubar mitos e equívocos que sempre surgem nestes debates. Cada artigo da série será composto por afirmações reais que foram feitas sobre as plataformas Java e .NET, tenham estas sido feitas em artigos, em comentários de artigos ou em debates de grupos de discussão, seguidas pelos meus comentários técnicos relacionados. Os autores das afirmações não serão identificados, uma vez que o propósito da série é esclarecer e não difamar.

É importante ressaltar que todas as informações técnicas apresentadas nos comentários desta série de artigos terão embasamento teórico. Em geral, os comentários técnicos de uma determinada tecnologia apresentarão links para fontes de informação confiáveis. Muitas vezes, as informações mais confiáveis são aquelas fornecidas pelas organizações responsáveis pelo desenvolvimento da tecnologia que está sendo comentada. A idéia é auxiliar o leitor a estudar os recursos de cada plataforma e tirar suas próprias conclusões.

Para uma localização temporal das informações apresentadas nos comentários técnicos, todos os artigos serão precedidos pela data em que foram escritos. Constantemente as versões das tecnologias das plataformas Java e .NET serão informadas de forma explícita nos comentários. O objetivo é permitir a identificação das versões das tecnologias que estão sendo comentadas, uma vez que ambas as plataformas estão em constante evolução. Além disto, ainda será informado de maneira explícita se uma determinada tecnologia, especificação ou ferramenta já está disponível em versão final ou se ainda está em fase de desenvolvimento. Por exemplo, na plataforma .NET é comum a Microsoft disponibilizar versões prévias denominadas CTP (Community Tecnology Preview), Beta ou RC (Release Candidate) e a versão final denominada Final Release. E na plataforma Java, dentro do JCP (Java Community Process), as JSRs (Java Specification Requests) podem passar por diversos estágios, como: JSR Review Ballot, Early Drafty Review, Public Review, Public Review Ballot, Proposed Final Draft, Final Approval Ballot e Final Release.

Rogério Moraes de Carvalho
Twitter: @rogeriomc