Login Registre-se

Home > Notícias >

Java vs .NET      

Publicado há 249 dias atrás por daltoncamargo - 8.790 visitas

Escrito por Paulo Krieser:

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

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. 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.

Comecemos pela questão das licenças de uso, que influenciam diretamente no TCO (para referência aos fatores sendo comparados, consultar na minha coluna Fatores para Escolha da Linguagem de Programação). Apesar da Sun deter a marca Java, a mesma tornou a linguagem open source, permitindo aos usuários efetuar alterações convenientes. Para a plataforma .NET, existem algumas iniciativas free, como os projetos Mono e DotGNU. Porém, para se aproveitar todo o potencial da plataforma, é praticamente necessário se adquirir o servidor Microsoft juntamente com o ambiente de desenvolvimento Visual Studio. Sem estas ferramentas, além de não se aproveitar tudo o que se tem, a velocidade de desenvolvimento fica fortemente prejudicada. Além disto, nada na Microsoft é open source.

No item escalabilidade, as implementações das duas plataformas provêem mecanismos de balanceamento de carga, permitindo habilitar um cluster de máquinas para servir às cargas dos usuários que forem aumentando ao longo do tempo. 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.

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.

O Microsoft .NET oferece independência de linguagem, permitindo os componentes serem escritos em VB.NET, C# e J#, por exemplo. Para fazer isto funcionar, o código-fonte nestas diferentes linguagens é traduzido para um código intermediário (análogo aos bytecodes do Java) chamado Microsoft Intermediate Language, abreviado IL. O Common Language Runtime (CLR), análogo ao JRE (Java Runtime Enviroment) do Java, interpreta o IL e traduz em código de máquina.

Com um conjunto de linguagens rodando sobre a plataforma .NET, os desenvolvedores diminuem a habilidade de compartilhar as melhores práticas, diminuindo a assertividade do compartilhamento de informações. Assim, especula-se que um conjunto de linguagens rodando em CLR pode levar a uma combinação de código espaguete que fica difícil de manter. Com a liberdade para se utilizar diversas linguagens, a aplicação torna-se mais complexa, necessitando de experts em diferentes linguagens, o que também faz aumentar o TCO e a entropia do sistema.

As duas tecnologias apresentam uma curva de aprendizado parecida, com a diferença de que o Java possui mais material para aprendizado na internet do que o .NET, que é proprietário e a principal fonte de conteúdo é o MSDN.

Analisando o último quesito, portabilidade, praticamente não há o que comparar. Como já dito na coluna anterior, o Java segue o princípio write once, run anywhere, permitindo executar as aplicações na virtual machine em praticamente qualquer ambiente. O .NET roda apenas no Windows, no seu hardware suportado, e no ambiente .NET. Há algumas implementações adicionais do .NET que rodam em outras plataformas, porém que não permitem o uso de todo o potencial do framework.

Concluindo a análise, a plataforma J2EE, possuindo uma interoperabilidade melhor, permite mais facilmente integrações com o legado através de web services e JCA (Java Connector Architecture) e uma maior facilidade de portabilidade, podendo rodar em qualquer sistema operacional. A grande vantagem do .NET é a sua incrível ferramenta de desenvolvimento, que incrementa bastante a velocidade na construção de aplicações. Porém, esta vantagem apresenta o custo das licenças de uso e de se ter uma plataforma proprietária e fechada, seguindo a iniciativa monopolística da Microsoft.

Para a escolha de qual tecnologia utilizar, deve-se analisar o que já se tem de legado e os skills da equipe que irá trabalhar no projeto, aproveitando os conhecimentos já existentes nas linguagens.

Não perca a próxima coluna, onde vamos comparar Ruby on Rails com PHP (vamos deixar o Java um pouco de lado).



Link: http://www.baguete.com.br/colunasDetalhes.php?id=3070


Comentários (31)

Back to top

enviado há 249 dias atrás por marcosdell

Ih Dalton, ainda não li tudo, mas já posso afirmar que você se precipitou em um ponto: "Além disto, nada na Microsoft é open source".

Essa cultura mudou radicalmente nos últimos dois ou três anos. O framework ASP.NET MVC, por exemplo, está aqui: http://www.codeplex.com/aspnet ... se isso não for open source, não sei o que é.

Esse artigo vai render alguns comentários ainda. Hehe.

Abraços

Marcos Dell Antonio
www.marcosdellantonio.net

Back to top

enviado há 249 dias atrás por marcosdell

Corrigindo, o autor do artigo é o Paulo Krieser (pelo que consegui garimpar no site baguete), então quem se precipitou foi ele e não o Dalton.

T+

Back to top

enviado há 249 dias atrás por U_Criador

Dalton,

Parabéns pelo artigo, achei um pouco tendencioso as observações apesar de não concordar com a Microsoft, e antes de começar as comparações com PHP e Ruby On Rails por favor compare PHP + Algum Framework já que On Rails é um framework do Ruby, agora se for comparar PHP vs Ruby ai sim vá em frente!

Back to top

enviado há 249 dias atrás por U_Criador

E eu achei que tinha sido o Dalton!

Back to top

enviado há 249 dias atrás por daltoncamargo

Gostei bastante também do artigo, parabéns ao Paulo Krieser !

Abraço,

Dalton Camargo

Back to top

enviado há 249 dias atrás por isaiasa

outra observação.

J# foi uma cópia barata e sem vergonha, onde a microsft copiou o JDK 1.3 e inseriu novas funcionalidades, indo contra o contrato de uso da própria Sun.

Os tempos são outros. Agora com a Oracle encabeçando, a microsoft vai tomar uns bons relhaços.

Back to top

enviado há 249 dias atrás por major505

Interessante as comparações sobre as plataformas, mas tenho algumas ressalvas. Tenham em mente que é tudo questão de experiencias que tive com as duas linguagens, então a opnião pode variar.

Realmente o .NET permite virar uma zona, com esses esquemas de várias linguagens, mas como você mesmo disse, normalmente são "compartilhadas as melhores práticas". Empresas normalmente tem uma cultura, então dificilmente, eu pelo menos nunca vi, empresas que misturem linguagens de programação, pelo menos nos mesmos projetos.

Tudo é questão de combinar antes, assim como aplicações JAVA podem virar um samba de criolo doido, pois todos os locais onde trabalhei com Java era cada um por si. Ler um código fonte era tão agradável quanto ser atropelado por um caminhão, rsrs.

O Visual Studio, por sua vez, é realmente meio salgado, mas acredito que assim como o pacote Office é um software que se paga.

Outra coisa que acho uma vantagem, pelo menos em projetos menores, o ASP.NET me parece ter um desempenho melhor que o Java, o que é compreensivel, visto que o Java é feito para ser indepemdente de plataforma.

Hoje pelo menos vejo assim:
se vc já tem uma infraestrutura formada em plataformas Windows (principalmente se terá que interagir com coisas como Exchange, e Active Directory), ou uma cultura de desenvolvimento anterior em ASP (+_+, eca) por exemplo, compensa o investimento no .NET.

Já se vc realmente vai precisar de portabilidade, ou não tem verba para um investimento inicial (compras de licença de Windows, Visual Studio, etc), Java sem dúvida é a melhor solução.





Back to top

enviado há 249 dias atrás por ricardo18.bnu

Tambem achei o post tendencioso. Minha primeira impressão ao ler este artigo é que o escritor é, ou foi, desenvolvedor Java. O que define a melhor linguagem são os requisitos de um projeto e a equipe que você tem disponível. Cada caso é um caso.Se você tem um projeto que tem como RNF ser multi-plataforma use java. Se você tem um projeto que tem como requisito rodar somente em servidor windows e tem pouco tempo pra fazer use .NET. Se você tem uma equipe que só sabe cobol use cobol.Acho um tema totalmente batido ficar comparando linguagem. Algo semelhante a discutir o sexo dos anjos.[]´sRicardo Momm

Back to top

enviado há 249 dias atrás por regissoares

ricardo18.bnu,Concordo com o que escreveu e ainda acrescento este link bem interessante:http://blog.marcomendes.com/2009/05/30/o-caminho-do-meio-do-arquiteto-java-e-do-arquiteto-net/

Back to top

enviado há 249 dias atrás por major505

Outra coisa que não entendi no artigo, fala sobre o .NET suportar apenas win32, mas um projeto .NET pode ser configurado para compilar para 32 ou 64 bits, bastando configurar o IIS para rodar no modo correspondente a aplicação.

Back to top

enviado há 249 dias atrás por giovannibassi

Meu querido, seu post copiado está sendo massacrado, e para não ser injusto, deixo o link aqui:
http://groups.google.com/group/dotnetarchitects/browse_thread/thread/702ec40c47755ee0?hl=pt-br

Informe-se antes de falar da próxima vez, ok?

Back to top

enviado há 249 dias atrás por jesuino

Estão se sentindo ofendidos?

O Dalton não copiou o Post:

"Escrito por Paulo Krieser"

"Link: http://www.baguete.com.br/colunasDetalhes.php?id=3070"

Você acha que um dos maiores sites de Java do Brasil iria sair copiando notícias? Principalmente essa com informações tão superficiais e "chuva no molhado".

Meter o pau no Java não adianta, o mesmo vale para o seu copiador, o .Net.

Isso é coisa de criança, brigando por alguma coisa sem sentido, sem vencedor. Ainda falam mal de uma pessoa sem esta ter conhecimento.

Paulo Krieser só comentou com o ponto de vista dele, e está certo em muitos sentidos. É só uma comparação, mesmo ele tendo mostrado uma "quedinha" por Java... Quando você lê um texto da microsoft e seus adeptos, sequer lê algo sobre Java, ou Python ou outras tecnologias nesse sentido. Por que será?

Back to top

enviado há 249 dias atrás por adamitj

Meus conhecimentos são maiores em Java que .Net. Mesmo assim, não tenho gabarito para fazer comparações. A única coisa que posso dizer é que no MS Visual Studio 2008, J# já não existe - apenas C# e Visual Basic .Net estão disponíveis - e parece ser possível compilar projetos para a plataforma 64-bits, pois durante a instalação diversos componentes para a plataforma Windows x86_64 são instalados.

Ao meu ponto de vista, em termos de simplicidade, .Net está muito além de Java EE, já que é uma plataforma integrada. Java EE exige conhecimentos de diversas tecnlogias e frameworks, trazendo uma sopa de letras que parece não ter fim: JTA, JPA, JPQL, EJB, entre outras, sem esquecer a grande necessidade de se ter "milhares" de entradas em arquivos XML para configurar o ambiente e os projetos - algo que não existe (ou passa despercebido) em .Net.

Entretanto, Java tem suas vantagens, como a portabilidade, redução do TCO e padronização de código. Um grande amigo meu certa vez me disse que projetos em Java dão menos manutenção que qualquer outra linguagem, haja visto a exigência da linguagem e da tecnlogia em si no que diz respeito à organização.

Cada tecnologia tem suas vantagens e aplicações, e eu não me arriscaria a dizer que ambas competem de igual para igual. Particularmente sou um grande fã de Java, ainda inexperiente, mas que defendo essa tecnologia devido ao seu potencial e suas outras vantagens que não cabe a mim discutir. Entretanto, mesmo sendo adepto, é difícil adotar Java em projetos que necessitam agilidade e que terão uma grande quantidade de melhorias futuras, como no caso de um sistema ERP.

Back to top

enviado há 249 dias atrás por grassi

Era uma vez um site chamado Orkut, com milh?s de usu?ios, todo feito em .NET. Os milh?s foram aumentando e site no escalando. Seu criador de nome estranho cansado de pedir ajuda senhor William resolveu migr?lo todo para JEE. Os n?eros de participantes em comunidades, de usu?ios recentes, dentro outras funcionalidades passaram a funcionar perfeitamente. Tudo isso foi feito em pouco mais de 1 ano.Era uma outra vez, uns outros caras do norte, pensando em fazer um site que teria milh?s de usu?ios. Avaliaram o .NET e o JEE por alguns meses. Em JEE um site constru?am, registraram o dom?io como www.linkedin.com e s? felize$ at?os dias de hoje...E para terminar, numa terceira vez, uns caras muito chateados com ambos os elefantes fizeram um site que nos permite tuitar, tudo em RoR. Mas n? foi dessa vez que bala de prata foi disparada (nem nunca ser?) e agora j?pensam em ir para uma Scala maior...

Back to top

enviado há 249 dias atrás por daltoncamargo

Não vou argumentar com algumas pessoas de pouca educação que afirmaram que eu copiei o conteúdo, ou que foi eu quem escreveu o conteúdo, mas vou apenas reiterar que foi o próprio autor que pediu para que eu publicasse este material aqui.

Grato,

Dalton Camargo

Back to top

enviado há 249 dias atrás por giovannibassi

Dalton,A questão não é copiar ou não copiar, esse é dos males o menor.A questão é que o artigo está na seção de notícias, e não é notícia alguma. Além disso, para ser notícia, deveria, no mínimo, ser mais acurado. Se o JavaFree pretente ter credibilidade, o mínimo que deve fazer é checar as fontes do que publica. Um exemplo absurdo é dizer que .Net não roda com 64 bits.Quem me conhece sabe que sou a favor da boa discussão. Essa já batida Java X .Net vale uma boa mesa de bar. Tenho contato com diversos líderes da comunidade de Java, e nos damos muito bem. Ainda assim, cada um tem sua preferência, e cada um por seus motivos, e estes motivos devem fazer sentido. Então, quando encontramos informações deturpadas, é como se alguém estivesse roubando no argumento, entende?E isso é muito feio...Giovanni Bassi

Back to top

enviado há 249 dias atrás por giovannibassi

Grassi, meu amigo... se informe.
A maior rede social do MUNDO roda .Net. O mySpace.
Quer confirmar?
http://en.wikipedia.org/wiki/List_of_social_networking_websites
http://highscalability.com/myspace-architecture

Não são os 30 milhões de usuários do Twitter, nem os 70 milhões de usuários do Orkut. É mais que os dois juntos, são mais de 260 milhões de usuários, rodando em Windows Server, com .Net, IIS, e SQL Server.
Tá bom pra você?

Back to top

enviado há 248 dias atrás por UpTheIrons

Então pessoal, este é realmente um tema polêmico, sou programador C# a pouco mais de 3 anos e gosto muito da plataforma .Net.
O tema aqui foi voltado pra WEB, eu sei, mas a pouco tempo, uns amigos e eu tivemos a idéia de desenvolver um sistema Desktop/WinForms e após eu conhecer o Ubuntu coloquei em pauta das reuniões o quesito portabilidade. Passei alguns meses estudando Java, desenvolvi um pequeno aplicativo com ela, a princípio tudo era estranho, mas a tal "salada de siglas" (EJB, JPA, JPQL, etc...) em pouco tempo são bem entendidas, por falar nisso, eu achei o JPA fantástico, lembro-me qdo lançou, mas nunca tinha visto nada a respeito, os esquema das Anotações tb são uma mão na roda, pois sou um daqueles que também n gosta muito de ficar configurando nada em XML

Já em relação ao NetBeans e Visual Studio, estaria mais satisfeito com o NetBeans se na construção de formulários ele nos ajudasse um pouco, pq ficar consertando controle q "ele" mesmo move é um saquilho, mas td bem.

A MS anunciou para o novo EntityFramework e será uma novidade para o .Net a construção dos modelos de dados, antes do próprio banco de dados, caramba, isso não é nenhuma novidade para quem conhece o JPA, a diferença é q a MS faz tudo depois e tudo "bonitinho" *rrr

Continuando, eu estava bem decidido em usar o Java (talvez com Postgre) mesmo que o tempo de desenvolvimento seria maior do que em C#, resolvi fazer mais testes q julgava importante, um deles foi o de performance, testei Java (No Linux e no Windows e sempre com JPA) com Oracle, Postgre e SQL Server e comparei com .Net (Entity Framework) e SQL Server, caramba, estou em dúvida novamente, pois a performance nas consultas com o conjunto (.Net e SQL Server) são impressionantes.

Acho que no meu caso, seria melhor a falta de liberdade de esolha kkk, pois não há exigencia de plataforma por parte de clientes, já que nosso projeto é de iniciativa propria, mas ele vai requerer um grande volume de dados e eu tinha pensado no Java por conta do Ubuntu, nunca fui muito fan do Linux até o ano passado, hj uso o Ubuntu e tenho clientes q se meus aplicativos fossem feito sem java eu sugeriria mudar tb.

Gosto muito do .Net, C# particularmente, mas o mundo OpenSource abriu um certo horizonte, e quando pensamos na crise, dá mais dúvida ainda

Agora tô aqui, quebrando a cabeça sem saber ainda o que fazer, lembrando que só n começamos ainda por conta dos testes de performance que fiz.

Abraço a todos.


Back to top

enviado há 248 dias atrás por UpTheIrons

ERRATA:
Final do 3º parágrafo.
"Se meus aplicativos fossem feitos EM Java, eu sugeriria mudar tb.

Back to top

enviado há 248 dias atrás por wquintanilhadasilva

Primeiramente quero cumprimentar pela iniciativa, entretanto, tenho algumas críticas a fazer quanto às afirmações colocadas na matéria.

Estas afirmações são muito tendenciosas e demonstram claramente a paixão que o autor tem por uma das tecnologias. Pelo artigo anterior, a promessa era que a avaliação seria com imparcialidade, mas não é isto que está evidente nas afirmações deste artigo.

Quem só conhece um dos lados - ou por opção ou por falta de oportunidade - com certeza poderá concordar ou não com o que está sendo dito.

Emfim, meus comentários:

A - o fato de uma plataforma permitir que você utilize mais de uma linguagem, na verdade, como gestor, vejo uma ótima oportunidade para aproveitar o máximo as características da equipe (pense que desenvolver software não é só o produto, tem a equipe de desenvolvedores e suas motivações que são tão importantes quanto o próprio software);

B - Ao contrário do que foi dito, a tecnologia .net possui uma vasta documentação (e por sinal muito mais bem elaborada) do que você pensa. Quem investe um minuto de seu tempo para pesquisar como fazer algo em .net, verá isto que estou afirmando. Não é somente a Microsoft que entrega documentação, existem milhares de colaboradores espalhados pelo mundo fazendo este trabalho e muito bem feito;

C - Foi colocado que Java é bom também pq oferece web service...Tentem criar um webservice em .net e vcs verão o resultado (tempo, facilidade, etc). Em relação à JCO (também conheço de java), pergunto, já ouviu falar em WCF? e WWF? e WPF? não??!!!

D - As melhores IDE's para desenvolvimento em Java também são pagas. Em .Net, existe a versão gratuita do Visual Studio que qualquer um pode obter sem custo algum (http://www.microsoft.com/Express/)

E - Assim como no eclipse, existem Add-ins (plugins) que auxiliam a produtividade da equipe que lida com o Visual Studio.

Sobre desenvolvimento de software:
A - não é a linguagem que aumenta ou diminui a qualidade intríseca de uma aplicação. Este fator está mais ligado à habilidade do desenvolvedor do que qualquer outra coisa. É possível criar código amarrado, de difícil leitura ou algo parecido em qualquer linguagem de programação;

B - as melhores práticas estão relacionadas aos padrões que podem ser adotados na construção de software. Neste caso, não está associada à tecnologia escolhida.

C - Java é muito bom - longe de mim querer fazer este tipo de comparação, mas depedendo do propósito, eu não usaria uma tecnologia que leva (como o próprio artigo menciona) até 80% do tempo para fazer a mesma coisa. Esta diferença já paga o custo que teria de qualificação da equipe e aquisição de alguma licença (se necessário pois eu poderia utilizar as versões Express).

Chega né...a idéia é só colocar um pouco de controvérsia mesmo...

Gostaria que avaliassem o Grails também.....

Back to top

enviado há 248 dias atrás por jesuino

As duas tecnologias são boas e dominam o mercado:

http://www.javafree.org/noticia/3963/Microsoft-participa-do-JavaOne.html


http://java.sun.com/javaone/2009/articles/gen_microsoft.jsp

Back to top

enviado há 247 dias atrás por UpTheIrons

Eu concordo tb que há mais material, ou pelo menos mais suporte nos foruns MSDN do que no GUJ ou JavaFree, eu cheguei até a criticar um pouco isso, pois as vezes tinha algumas dúvidas bobas no início com java e que n objtive ajuda, tem gente até q tirou um certo sarro no forum, aquilo foi f...
Mas insisti e consegui fazer meu aplicativo.
E sobre nossa decisão, de em qual plataforma desenvolver, parece q estou voltando pro .Net, não queria kkk, mas parece q será bem mais tranquilo mesmo (pelo menos para este projeto)

Dizem tb que a MS está com uma certa parceria com a Sun para questões de interoperabilidade, e que produtos da MS rodarão no Solaris, se o .net estivesse incluso nisso, daí sim, eu n pensaria mais em Java no momento, pq o q me atrai mesmo em Java é a portabilidade já q gostei muuuuito do Ubuntu.

Mas é isso, bom é qdo tinha só Assembly, n gerava dúvidas kkkk

Back to top

enviado há 247 dias atrás por rogeriomcarvalho

Java VS .NET
Olá pessoal,
A comparação entre as plataformas Java e .NET costuma ser polêmica e gerar debates acalorados. Na maioria das vezes, estes debates deixam a parte técnica de lado e passam a conter acusações pessoais e indelicadezas dos participantes. Como se pode notar, este debate não foi uma exceção a esta regra. Apesar de estarmos num fórum destinado a debates técnicos, a discussão foge do âmbito técnico para se tornar uma defesa quase religiosa. Com algumas exceções, cada um quer provar que a plataforma que ele utiliza, seja a plataforma Java ou a plataforma .NET, é a melhor. Por conta disto, a precisão técnica dos posts fica comprometida e acaba prejudicando a todos interessados em obter informações corretas de comparação entre as duas plataformas.
A minha intenção é somente corrigir uma série de imprecisões técnicas no artigo original “Java vs .NET”, escrito pelo Paulo Krieser. Eu não vou comentar as imprecisões dos posts de ataque ao artigo. Para facilitar a leitura, eu estarei destacando trechos do artigo original e comentando-os na sequencia. Os trechos mais longos serão simplificados com uso de reticências (...).
Trecho do artigo original:
“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 do trecho destacado anteriormente:
O artigo tem como objetivo prosseguir com uma sequência de colunas com comparações entre linguagens de programação. Portanto, a comparação não poderia ser entre Java e .NET, mas sim entre Java e C# ou Java e Visual Basic .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 mudanças significativas na versão 5.0 (Java 5.0). Assim, como a linguagem C# teve modificações significativas na versão 2.0 (C# 2.0) e outras significativas na versão 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).
No parágrafo seguinte, ao tentar evitar críticas, o autor cometeu diversos erros.
Trecho do artigo original:
“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 do trecho destacado anteriormente:
Este trecho está quase perfeito tecnicamente, não fosse pela inclusão do ASP como uma linguagem de programaçã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.
Trecho do artigo original:
“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 do trecho destacado anteriormente:
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”. Certamente, ele quis dizer: “que é onde as duas plataformas mais competem”. O nome J2EE foi utilizado até a versão 1.4. A partir da versão 5 (versão final atual), o nome foi modificado para Java EE. Porém, o Java EE não deve ser comparado diretamente com o ASP.NET. Isto porque o Java EE inclui diversos serviços que são fornecidos 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, o 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, como comparar Java Servlets, JSP e JSF com recursos similares do ASP.NET. Mais uma vez, esta comparação deveria apresentar as versões que estão sendo comparadas. Por exemplo, Java Servlet 2.5, JavaServer Pages 2.1 e JavaServer Faces 2.1 versus ASP.NET 3.5 SP1.
Trecho do artigo original:
“Comecemos pela questão das licenças de uso, .... Além disto, nada na Microsoft é open source.”
Comentários técnicos do trecho destacado anteriormente:
Este trecho corresponde a uma opinião pessoal do autor sem nenhuma base técnica.
A discussão de TCO é muito mais longa que o simples fato de que utilizar uma tecnologia open source é mais barato uma vez que não se gasta com licenças. Como é do conhecimento de todos, os gastos com o desenvolvimento de software envolve muito mais que gastos com licenças.
Além disto, como já foi informado em outros em posts, existem versões gratuitas do Visual Studio 2008 SP1 (versão final mais recente) disponíveis para download. Correspondem às edições Express, que podem ser baixadas no seguinte endereço: http://www.microsoft.com/express/download/. De qualquer modo, é importante ressaltar que as edições Express têm uma série de limitações com relação às versões comerciais. Como por exemplo, oferecem suporte muito limitado a refactoring, não fornecem suporte integrado a diagramas de classes, não fornecem testes unitários e diversos outros recursos importantes para auxiliar no ciclo de desenvolvimento de software. Neste ponto, as edições Express do Visual Studio 2008 SP1 ficam muito atrás das IDEs NetBeans e Eclipse, que são poderosas IDEs open source fornecidas gratuitamente para desenvolvimento na plataforma Java.
E o maior erro do autor neste parágrafo foi o seguinte: “Além disto, nada na Microsoft é open source.”. 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 tem 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.
Trecho do artigo original:
“No item escalabilidade, as implementações das duas plataformas provêem mecanismos de balanceamento de carga, permitindo habilitar um cluster de máquinas para servir às cargas dos usuários que forem aumentando ao longo do tempo. 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 do trecho destacado anteriormente:
Mais uma vez, este trecho corresponde a uma opinião pessoal do autor sem nenhuma base técnica. Sendo assim, eu somente corrigirei o seguinte erro: “o .NET suporta apenas Win32”.
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 200
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
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.
Trecho do artigo original:
“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 do trecho destacado anteriormente:
Outro trecho com uma opinião pessoal do autor sem nenhuma base técnica.
A questão de o Visual Studio ser mais produtivo que as IDEs de Java é bastante discutível. Na realidade, a discussão não é tão simples assim. 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.
Comparações de produtividade entre IDEs deve isolar e comparar recursos equivalentes individualmente.
Somente para citar um recurso, a última versão do IDE do NetBeans (6.5.1) 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.4.2 - Ganymede) ainda supera o NetBeans (6.5.1) 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.
Trecho do artigo original:
“O Microsoft .NET oferece independência de linguagem, permitindo os componentes serem escritos em VB.NET, C# e J#, por exemplo. Para fazer isto funcionar, o código-fonte nestas diferentes linguagens é traduzido para um código intermediário (análogo aos bytecodes do Java) chamado Microsoft Intermediate Language, abreviado IL. O Common Language Runtime (CLR), análogo ao JRE (Java Runtime Enviroment) do Java, interpreta o IL e traduz em código de máquina.”
Comentários técnicos do trecho destacado anteriormente:
Este trecho está quase totalmente preciso tecnicamente.
Houve apenas um pequeno equívoco no seguinte trecho: “O Common Language Runtime (CLR), análogo ao JRE (Java Runtime Enviroment) do Java, interpreta o IL e traduz em código de máquina.”. Na realidade, o Common Language Runtime (CLR) é análogo à Java Virtual Machine (JVM), não ao JRE. Além disto, JRE significa “Java SE Runtime Environment” e não “Java Runtime Environment”. O JRE é análogo a uma parte do .NET Framework, pois ele comporta o ambiente de execução Java e um conjunto de bibliotecas de classes com os recursos do Java SE.
É importante ressaltar que o ambiente de execução da plataforma .NET (CLR - Common Language Runtime) foi projetado desde o início para suportar múltiplas linguagens de programação, enquanto que o ambiente de execução da plataforma Java (JVM - Java Virtual Machine) inicialmente foi projetada somente para suportar a linguagem Java. Porém, atualmente, várias linguagens foram portadas para a plataforma Java. Somente para citar algumas: JRuby (uma implementação da linguagem de programação Ruby), Jython (uma implementação da linguagem de programação Python), Scala, Clojure (dialeto Lisp) e Groovy (linguagem de scripting). Atualmente, o JavaFX Script é a linguagem de scripting que está mais em evidência na plataforma Java, pois corresponde à iniciativa da Sun (recentemente adquirida pela Oracle) para o desenvolvimento de aplicações RIA (Rich Internet Application).
Trecho do artigo original:
“Com um conjunto de linguagens rodando sobre a plataforma .NET, os desenvolvedores diminuem a habilidade de compartilhar as melhores práticas, diminuindo a assertividade do compartilhamento de informações. Assim, especula-se que um conjunto de linguagens rodando em CLR pode levar a uma combinação de código espaguete que fica difícil de manter. Com a liberdade para se utilizar diversas linguagens, a aplicação torna-se mais complexa, necessitando de experts em diferentes linguagens, o que também faz aumentar o TCO e a entropia do sistema.”
Comentários técnicos do trecho destacado anteriormente:
A questão de uma plataforma suportar diversas linguagens de programação, não quer dizer que você é obrigado a desenvolver sistemas usando as muitas linguagens disponíveis. E, se fosse assim, este não seria um privilégio da plataforma .NET, uma vez que atualmente a plataforma Java também suporta diversas linguagens, como pode ser constatado nos meus comentários anteriores.
O uso de diversas linguagens em um projeto de um sistema certamente dificulta a manutenção do mesmo, uma vez que exige uma equipe com integrantes com conhecimentos de mais de uma linguagem ou divisões da equipe em grupos com conhecimentos de linguagens específicas. No último caso, cada integrante com conhecimento de uma única linguagem somente poderia dar suporte aos componentes desenvolvidos naquela linguagem.
Mas, a habilidade de utilizar melhores práticas em projetos de software não tem nada haver com o suporte da plataforma a múltiplas linguagens. O que importa é a capacidade da equipe (conhecimento técnico) para desenvolver uma arquitetura flexível e robusta utilizando-se boas práticas de programação orientada a objetos. Tanto a plataforma Java quanto a plataforma .NET são robustas para o desenvolvimento sistemas com ótimas arquiteturas usando padrões de projeto de forma correta, quanto são passíveis do desenvolvimento de sistemas com código “espaguete” utilizando-se péssimas práticas e o uso errado de padrões de projeto.
Trecho do artigo original:
“As duas tecnologias apresentam uma curva de aprendizado parecida, com a diferença de que o Java possui mais material para aprendizado na internet do que o .NET, que é proprietário e a principal fonte de conteúdo é o MSDN.”
Comentários técnicos do trecho destacado anteriormente:
Na realidade, tanto a plataforma Java quanto a plataforma .NET possuem uma vasta documentação de qualidade disponível. Muito mais documentação disponível que qualquer um de nós é capaz será capaz de estudar durante todas as nossas vidas.
Existem diversas grandes outras fontes de conteúdo sobre a plataforma .NET além do MSDN. Apenas para citar algumas:
• TheServerSide.NET - Your Enterprise .NET Community (http://www.theserverside.net/)
• The Code Project (http://www.codeproject.com/)
• The Official Microsoft ASP.NET Site (http://www.asp.net/)
• The Official Microsoft IIS Site (http://www.iis.net/)
• WindowsClient.NET (http://windowsclient.net/)
• Silverlight (http://silverlight.net/)
• Mix Online (http://visitmix.com/)
• Channel 10 (http://on10.net/)
Trecho do artigo original:
“Analisando o último quesito, portabilidade, praticamente não há o que comparar. Como já dito na coluna anterior, o Java segue o princípio write once, run anywhere, permitindo executar as aplicações na virtual machine em praticamente qualquer ambiente. O .NET roda apenas no Windows, no seu hardware suportado, e no ambiente .NET. Há algumas implementações adicionais do .NET que rodam em outras plataformas, porém que não permitem o uso de todo o potencial do framework.”
Comentários técnicos do trecho destacado anteriormente:
Na minha visão, este é o parágrafo mais preciso de todo o artigo.
No quesito portabilidade, a plataforma Java sem dúvidas é a melhor escolha. Afinal de contas, a plataforma Java foi desenvolvida desde o início para suportar múltiplas plataformas. Tecnicamente, a plataforma .NET tem total condições de ser portada para múltiplas plataformas exatamente como a plataforma Java. Porém, por enquanto, a Microsoft não demonstrou o interesse de portar integralmente .NET para outras plataformas além do Windows. Inicialmente, a Microsoft forneceu uma implementação de código compartilhado denominado Shared Source Common Language Infrastructure (SSCLI), de uma pequena parte do .NET Framework. E licença não permitia uso comercial do código compartilhado. O SSCLI rodava em Windows, FreeBSD (4.7 ou superior) e Mac OS X 10.2. A última versão do SSCLI (2.0) foi lançada em março de 2006 e continha um subconjunto do .NET Framework 2.0. Diferente da versão anterior, a versão 2.0 somente era suportada no Windows XP SP2. Enquanto o Windows dominar o mercado de desktops, dificilmente a Microsoft portará .NET para outras plataformas.
Atualmente, o projeto de maior sucesso para portar .NET para outras plataformas é o Projeto Mono. Atualmente, o projeto Mono é mantido pela Novell, está na versão 2.4 e roda em sistemas operacionais Linux, Mac OS X, BSD e Windows, incluindo processadores com arquitetura x86, x64, ARM, s390, PowerPC e outros. Existe também uma IDE open source denominada MonoDevelop 2.0, que auxilia no desenvolvimento de aplicações desktop e ASP.NET em Linux. Maiores informações podem ser encontradas no seguinte endereço: http://www.mono-project.com/.
Trecho do artigo original:
“Concluindo a análise, a plataforma J2EE, possuindo uma interoperabilidade melhor, permite mais facilmente integrações com o legado através de web services e JCA (Java Connector Architecture) e uma maior facilidade de portabilidade, podendo rodar em qualquer sistema operacional. A grande vantagem do .NET é a sua incrível ferramenta de desenvolvimento, que incrementa bastante a velocidade na construção de aplicações. Porém, esta vantagem apresenta o custo das licenças de uso e de se ter uma plataforma proprietária e fechada, seguindo a iniciativa monopolística da Microsoft.”
Comentários técnicos do trecho destacado anteriormente:
A melhor interoperabilidade depende de análises específicas. Por exemplo, dizer que Java EE possui uma melhor integração com legado é bem questionável. Se o legado for composto por componentes legados da plataforma Windows, como componentes COM/COM+, é bem provável que a plataforma .NET forneça um suporte superior à plataforma Java. Isto porque, atualmente, a plataforma .NET é completamente voltada para a plataforma Windows, enquanto a plataforma Java deve se preocupar em rodar nos mais diferentes sistemas operacionais e nas mais diferentes arquiteturas de processador.
A integração por intermédio de XML Web Services e RESTful Web Services (nova tendência) é amplamente suportada pela plataforma .NET 3.5 SP1 (WCF 3.5 SP1) assim como pelas plataforma Java no Java EE 5 (JAX-WS 2.0).
A questão de licença, tão citada pelo autor como uma desvantagem da plataforma .NET, também é bem relativa. Não é somente a Microsoft que cobra licenças em servidores de aplicações. Na plataforma Java EE, alguns dos servidores de aplicação mais robustos também possuem taxas de licenciamento, e altas, como por exemplo:
• IBM WebSphere Application Server V7 (http://www-01.ibm.com/software/webservers/appserv/was/)
• Oracle WebLogic Server 10g Enterprise Edition (http://www.oracle.com/appserver/weblogic/enterprise-edition.html)
Observe que a plataforma Java já não é tão democrática como antigamente. Afinal de contas, recentemente, a Oracle comprou alguns dos seus principais concorrentes na plataforma Java: BEA (que tinha o WebLogic, que hoje pertence à Oracle) e, mais recentemente, a Sun Microsystems (criadora da linguagem e da plataforma Java). Ainda bem que ainda existe a IBM como um competidor de peso para disputar com a Oracle.
Observe que até mesmo o poderoso servidor de aplicações open source JBoss foi adquirido pela Red Hat. Para obter suporte profissional ao JBoss Application Server 5.1.0 você pode desembolsar muito mais grana que adquirindo uma licença e suporte no Windows Server 2008, com o servidor de aplicações .NET embutido.
Ou seja, o autor do artigo sugere que na plataforma Java os softwares são open source e isento de taxas de licenciamento, enquanto a Microsoft sempre quer ganhar dinheiro com a plataforma .NET. Mas, as coisas não sem bem deste modo. Principalmente, quando estamos falando de aplicações de missão crítica que necessitam de um suporte profissional por parte dos fornecedores de soluções. Oracle, IBM, Red Hat e Microsoft, somente para citar algumas, todas querem ganhar dinheiro com seus produtos, não interessa se são voltados para a plataforma Java ou para a plataforma .NET.
Conclusão
O autor se demonstrou extremamente tendencioso e completamente leigo na plataforma .NET. Mesmo na plataforma Java, ele mostrou estar com os conhecimentos bastante defasados.
Eu acho que uma comunidade como a do Javafree.org sempre espera encontrar artigos com embasamento técnico, que permita fazer uma reflexão. Afinal de contas, opiniões pessoais sem fundamentos não acrescentam muito para nenhum participante da comunidade.
Abraços a todos,
Rogério Moraes de Carvalho

Back to top

enviado há 246 dias atrás por rogeriomcarvalho

Relendo os meus comentários, eu percebi que cometi três pequenos erros.

Seguem as correções.

Eu cometi um erro na versão do JavaServer Faces, tendo digitado "JavaServer Faces 2.1" ao invés de "JavaServer Faces 1.2". A versão final atual de JSF no Java EE 5 é a versão 1.2.

Num trecho eu escrevi "...é capaz será capaz..." ao invés de somente "...será capaz...". Segue o trecho corrigido.

"Na realidade, tanto a plataforma Java quanto a plataforma .NET possuem uma vasta documentação de qualidade disponível. Muito mais documentação disponível que qualquer um de nós será capaz de estudar durante todas as nossas vidas."

No final, eu cometi um pequeno erro de concordância no seguinte trecho:
"Ou seja, o autor do artigo sugere que na plataforma Java os softwares são open source e isento de taxas de licenciamento, enquanto a Microsoft sempre quer ganhar dinheiro com a plataforma .NET."

O correto é "isentos" ao invés de "isento".

Segue o trecho corrigido:
"Ou seja, o autor do artigo sugere que na plataforma Java os softwares são open source e isentos de taxas de licenciamento, enquanto a Microsoft sempre quer ganhar dinheiro com a plataforma .NET."

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 246 dias atrás por salgadonline

Meus amigos pra encerrar, como que uma plataforma que não é open source, que não tem uma boa documentação, que é totalmente proprietária seguindo a iniciativa monopolística da Microsoft e ainda consegue competir de igual pra igual com a perfeitona linguagem java!!!!

E o pior em um mercado onde a minimização de custos e investimentos são primordiais.

Eu acho que esse tal de .NET tem que ter algo muito bom que apesar dessa quantidade de coisas ruins ta fungando no cangote do java que ta se esguelando para não ficar pra trás.

O que será!!!!!!!!!!!!!!

Back to top

enviado há 246 dias atrás por salgadonline

As perguntas acima não têm ponto de interrogação porque são retóricas mesmo..rsrsrsr

Back to top

enviado há 246 dias atrás por rogeriomcarvalho

Olá salgadonline,

Realmente, este seu comentário é tão técnico quanto este artigo comparando Java com .NET. É certo que você nunca estudou .NET na vida, senão não diria esta besteira de que .NET "não tem uma boa documentação".

Mas, a sua dedução de que a plataforma .NET é repleta de "coisas ruins" porque "não é open source" e porque "é totalmente proprietária seguindo a iniciativa monopolística da Microsoft e ainda consegue competir de igual para igual com a pefeitona linguagem java" é um tanto quanto absurda.

Seguindo este seu raciocínio simplista, eu poderia deduzir outros absurdos. Veja um exemplo abaixo.

O servidor de banco de dados Oracle é repleto de "coisas ruins" porque "não é open source" e porque "é totalmente proprietário seguindo a iniciativa monopolística da Oracle e ainda consegue competir de igual para igual com o perfeitão Firebird".

Ou seja, seguindo o seu raciocínio, nós poderíamos chegar na conclusão absurda que o servidor de banco de dados Oracle é repleto de "coisas ruins" e que o Firebird é melhor porque é open source e não é proprietário.

Então, eu te faço uma pergunta simples. Por que a linguagem Java é perfeitona?

Faça uma exposição técnica das vantagens da linguagem Java para a comunidade aprender um pouco.

Já que você está criticando a plataforma .NET, faça uma exposição técnica das deficiências da linguagem C# em comparação com a linguagem Java.

Eu espero que você saiba a diferença entre linguagem Java e plataforma Java.

Assim todos nós poderemos aprender porque a plataforma .NET é repleta de "coisas ruins" e a linguagem Java é "perfeitona".

Rogério Moraes de Carvalho

Back to top

enviado há 246 dias atrás por brazao

Eu sempre achei os desenvolvedores Java donos de uma riqueza técnica digna de nota. Porém, acho uma extrema infelicidade escrever artigos comparativos com o .NET. Cada plataforma teu sua aplicabilidade melhor e deve ser usada de acordo com o problema proposto. Artigos como este, apaixonados, não enriquecem absolutamente nada.

Mas continuo vendo com bons olhos o pessoal de Java.

Abraços.

Back to top

enviado há 245 dias atrás por rogeriomcarvalho

Olá brazao,

Eu concordo plenamente com você que artigos apaixonados não enriquecem em absolutamente nada. Por isto, eu faço um esforço para que os posts sejam técnicos.

Assim como eu e você, todos que lêem este artigo têm algum interesse numa comparação entre as plataformas Java e .NET, senão nem perderiam tempo lendo o artigo.

Eu trabalho com as duas plataformas e sei que ambas são robustas e repleta de recursos disponíveis. Porém, sempre vejo muitos radicais que conhecem somente uma plataforma criticando a outra. Estas pessoas sempre prejudicam o debate com suas opiniões superficiais e sem embasamento técnico.

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 242 dias atrás por salgadonline

Bem, deficiência em C# nenhuma, sou 100% .NET, minha resposta foi totalmente irônica, acho java uma linguagem velha cheia de gambiarras (get,set para emcapsulamento de campos), a swing e awt, vc cria um form em swing e utiliza a awt pra definição de bordas e afins. Na parte web nem se fala, .NET é a melhor do mercado, master pages, code behinde, user controls e etc. Não tem pra ninguém.

Documentação, uso o msdn e não tenho problemas com isso, pra coisas mais diretas digito no google minha dúvida e esta sempre é sanada.

Rogério me descupe se fui um pouco subjetivo, tentei demostrar o que o .net tinha de bom falando bem de java e sua plataforma com ironia, mas acho que pros bom entendedores minhas meias palavras bastaram.

Fui breve como estou sendo agora, pois garanto que nem metade dos alienados que puxam tanto o saco de java leram seu post, mas eu o achei muito bom.

Assim que terminar minha faculdade, vou começar a me aprofundar mais em .NET, principalente no desenvolvimento de frameworks utilizando os paradigmas mais abstratos da orientação a objeto que o c# nos oferece, como: Reflection, Classes abstratas e Constraints, interfaces, atributos, enventos e delegates, e suas aplicações.
E quem sabe poderei fazer posts tão ricos como os seu, mas mais objetivos e sem abrir mão de minha ironia (http://pt.wikipedia.org/wiki/Ironia).

Back to top

enviado há 240 dias atrás por rogeriomcarvalho

Olá salgadonline,

Conforme você percebeu, eu não havia notado o seu tom de ironia. Afinal de contas, é muito difícil conseguir manter um debate com um nível técnico elevado sobre uma comparação entre as plataformas Java e .NET, uma vez que este assunto é tratado, por muitos, quase como uma religião. Inicialmente, era mais comum encontrar desenvolvedores extremistas radicais na plataforma Java, deturpando a plataforma .NET sem conhecê-la. Porém, atualmente, este tipo de atitude também é muito comum entre desenvolvedores da plataforma .NET, que criticam a plataforma Java sem conhecê-la. Cabe ao leitor filtrar as opiniões com embasamento técnico daquelas sem fundamentos.

Nos meus extensos comentários sobre os artigos de Java vs .NET (Partes 1 e 2) do Paulo Kriser, eu apresentei uma série de informações para defender a plataforma .NET. Tanto que no seu comentário, você chega a escrever “sua plataforma” num contexto que sugere a minha escolha pela plataforma .NET em relação à plataforma Java. Apesar das aparências, eu quero deixar claro que não tenho preferência pela plataforma .NET em relação à plataforma Java. Eu somente forneci argumentações técnicas para rebater uma série de informações erradas fornecidas pelo autor do artigo, sendo que a maioria delas eram de críticas à plataforma .NET. É certo que as duas plataforma (Java e .NET) são robustas, porém não existe uma plataforma que seja melhor que a outra de forma absoluta. Toda comparação deve levar em conta um contexto muito bem definida para ter algum valor técnico. Certamente, a plataforma Java supera a plataforma .NET em vários contextos, assim como a plataforma .NET supera a plataforma Java em vários outros. Porém, sem contextualização não há como haver comparação.

Como, no primeiro parágrafo da sua mensagem, você seguiu o mesmo caminho do autor (fundamentação técnica fraca ou inexistente) para criticar a plataforma Java, eu me sinto na obrigação de fornecer argumentos técnicos em favor da plataforma Java.

TRECHO DA MENSAGEM ORIGINAL (salgadonline):
“Bem, deficiência em C# nenhuma, sou 100% .NET, minha resposta foi totalmente irônica, acho java uma linguagem velha cheia de gambiarras (get,set para emcapsulamento de campos), a swing e awt, vc cria um form em swing e utiliza a awt pra definição de bordas e afins. Na parte web nem se fala, .NET é a melhor do mercado, master pages, code behinde, user controls e etc. Não tem pra ninguém.”

COMENTÁRIOS:
Certamente a linguagem C# tem deficiências, como qualquer outra linguagem de programação. Nenhuma linguagem é, e nem nunca será, perfeita.

A sua conclusão de que a linguagem Java é velha e cheia de gambiarras não tem muito fundamento, pois você afirma: “get, set para encapsulamento de campos”. Difícil entender a idéia que você quis passar com esta afirmação. Talvez seja pelo fato de você gostar do suporte da linguagem C# a propriedades. C# possui uma sintaxe especial para criação de um membro propriedade: “TipoPropriedade NomePropriedade {...}”, com o corpo da propriedade podendo conter um ou dois métodos de acesso a um campo encapsulado com “get {...}” para leitura e “set {...}” para escrita. Porém, a linguagem Java não fornece sintaxe para a criação de um membro propriedade. Ao invés disto, ela adota uma convenção (de projetos de componentes JavaBeans) para definição de propriedades baseada na nomenclatura de métodos de acesso a um campo encapsulado: “TipoCampo getNomeCampo() {...}” para leitura do campo e “void setNomeCampo(TipoCampo val) {...}” para escrita. Existem vantagens e desvantagens em cada uma destas abordagens para representar propriedades no encapsulamento de informações em campos. Como, eu não tenho certeza se foi isto que você quis dizer, eu não pretendo dar continuidade a esta comparação. Observe que este seria um argumento completamente insuficiente para concluir que a linguagem Java é uma “linguagem velha cheia de gambiarras”. Uma linguagem tem muito mais recursos que o uso de propriedades para encapsular informações de campos.

Apenas a título de curiosidade, eu precisaria escrever um artigo maior que o artigo “Java vs. NET” do autor Paulo Kriser somente para comparar o tratamento de propriedades nas linguagens Java e C# com embasamento técnico. Mas, observem que, num texto muito curto, o autor foi capaz de escrever uma comparação entre as plataformas Java e .NET. E ainda finalizou o artigo com um gráfico atribuindo notas aos quesitos escalabilidade, manutenabilidade, TCO, aprendizado, portabilidade e velocidade de desenvolvimento. Já imaginaram a profundidade desta comparação?

Eu não entendi qual é o problema de se utilizar classes da API AWT (Abstract Window Toolkit) na API de Swing? A API Swing foi construída no topo de muitas outras tecnologias Java para desktop, incluindo: JavaBeans, AWT, Java2D, acessibilidade e internacionalização. Você está querendo afirmar que toda nova API acrescentada numa plataforma deve ser feita a partir do ero? Se você considera ruim a prática de uma nova API usar recursos de APIs anteriores da plataforma, então o .NET Framework está repleto de práticas ruins em suas APIs, como: Windows Presentation Foundation (WPF), Windows Workflow Foundation (WF) e Windows Communication Foundation (WCF), somente para citar algumas.

Para aqueles que nunca ouviram falar da API Swing, ela é uma API da plataforma Java SE (Java Platform, Standard Edition) que fornece um rico conjunto de componentes de interface gráfica com o usuário (GUI) e de serviços para desenvolvimento de aplicações desktop e aplicações de Internet/Intranet, que podem usar o software Java Web Start para implantar aplicações baseadas em tecnologias Java.

Agora, a sua conclusão do primeiro parágrafo é muito simplista: “Na parte web nem se fala, .NET é a melhor do mercado, master pages, code behinde, user controls e etc. Não tem pra ninguém.”.
Eu também gosto bastante do recurso de páginas mestras (master pages), que foi incluído a partir do ASP.NET 2.0. Principalmente, quando páginas mestras são usadas em conjunto com o recurso de temas (themes), também incluído a partir do ASP.NET 2.0.
Eu gostaria muito de ter recursos similares a páginas mestras e temas em tecnologias da plataforma Java padronizadas pelo Java Community Process (JCP). Certamente, estes seriam dois recursos muito bem-vindos numa evolução de JavaServer Faces (JSF), por exemplo. Porém, enquanto o JCP não incorpora estes recursos aos padrões da plataforma Java, a comunidade de desenvolvedores Java pode utilizar um framework leve e open source para “templating” denominado Facelets (https://facelets.dev.java.net/). É importante ressaltar que Facelets também fornece recursos similares a User Controls do ASP.NET 1.0, permitindo criar controles compostos. Para aqueles que usam o framework open source Struts, que não segue o padrão JCP, ainda há a opção de usar o recurso Tiles.
Em geral, a plataforma Java tem boas opções de frameworks para solucionar problemas e/ou incluir novos recursos em frameworks padronizados pelo JCP. Esta flexibilidade é considerada um problema por alguns desenvolvedores e analistas de sistemas. Eu, particularmente, aprecio ter opções disponíveis.
Quanto às páginas code-behind disponíveis no ASP.NET desde a versão 1.0, em JSF cada página Web tem uma classe JavaBean de fundo (backing JavaBean class). Isto somente para citar um recurso similar numa tecnologia padrão JCP sem estender para outro(s) framework(s).
Mas, observe que o desenvolvimento Web é muito mais vasto que somente “Master Pages, code-behind e user controls”.


salgadonline , para finalizar, eu desejo muito sucesso nos seus estudos da plataforma .NET. Espero poder encontrar, num futuro próximo, artigos técnicos seus sobre recursos da plataforma .NET. E, lembre-se, se quiser comparar os recursos de .NET como qualquer outra plataforma, além de conhecer bem a plataforma .NET, você também precisa estudar bem a outra plataforma também.

Abraços,

Rogério Moraes de Carvalho


Faça seu login