Login Registre-se

Home > Notícias >

Escolhendo a Linguagem: Java vs .NET - Parte 2      

Publicado há 284 dias atrás por paulokrieser - 4.224 visitas - Comentários (9)

Acalorados comentaristas: esta coluna é para vocês, que contribuem para que nosso espaço fique melhor e possa nos fornecer cada vez mais informações preciosas. A idéia da coluna é justamente essa: participação.

Em um primeiro momento quero esclarecer que a idéia desta série de artigos é realizar comparações entre tecnologias da forma mais imparcial possível, para que o tomador de decisão possa escolher quais tecnologias utilizar em seus projetos.

Não existe uma tecnologia que seja melhor do que as outras: devemos sempre ter os objetivos em mente. Algumas se sobressaem em um fator, outras em outros fatores. Por isso a escolha de diversos itens de avaliação, como explicado na minha coluna Fatores para a Escolha de uma Linguagem de Programação.

Respondendo ao comentário do Vanderlei, que solicita o estudo realizado para a formulação dos gráficos que aparecem nas colunas. Conforme explicado em minha coluna Escolhendo a Linguagem: Java vs PHP, as notas atribuídas no gráfico são aproximações realizadas através de conhecimentos empíricos, da experiência que temos com projetos e através de pesquisas na internet.

A idéia não é se ter uma nota exata, e sim apenas um parâmetro de comparação indicando qual a melhor linguagem para determinado fator. Caso a informação contida no gráfico não lhe seja útil desta maneira empírica, fique à vontade para não utilizá-la.

Agora respondendo ao André Luiz Lehmann e ao Daniel: a idéia é comparar tecnologias. Talvez o melhor título para a coluna seja Escolhendo Tecnologias, mas eu não quis me deter a este preciosismo. A comparação é totalmente cabível sim, pois em muitos projetos que realizamos surgiu a dúvida: devemos fazer em Java ou .NET?

É a esta pergunta que queremos responder. Agora, mesmo sendo tecnicamente correto utilizar JEE vs .NET, ASP .NET vs Java ou JSP vs ASP, isto não desqualifica o artigo, devido ao propósito comparativo dele. Eu posso não ter utilizado as siglas com a precisão máxima, mas a comparação entre as tecnologias é totalmente cabível para um gestor tomar a decisão.

Jair: boa colocação, porém discordo em um ponto: o que percebemos no mercado é que o .NET acaba sendo mais rápido para desenvolver, mesmo o Java possuindo estas IDEs que você mencionou. Em uma grande parte dos casos, quem trabalha com .NET trabalha com o Visual Studio (versão paga), aproveitando suas funcionalidades RAD ao máximo. Já quem trabalha com Java normalmente não usa o IntelliJ, por exemplo.

Gabriel: não esqueci o Mono, ele está citado no terceiro parágrafo.

Agradeço ao Rogério Moraes de Carvalho pelo grande post, que demonstra uma certa consistência, embora apresente parcialidade. Concordo plenamente que a defesa não pode ser por paixão por determinada tecnologia, e sim por métodos objetivos.

Conforme comentei ao André Luiz Lehmann e ao Daniel, e vou comentar novamente, a idéia não é se conter aos preciosismos e discussões filosóficas se ASP é uma linguagem de programação ou se é apenas uma tecnologia, e sim realizar a comparação entre as possíveis tecnologias (ou plataformas) que podemos utilizar em um projeto.

Em um ponto Rogério, concordo com você: fui tendencioso em apenas este ponto, onde digo que nada na Microsoft é open source. Este ponto está enfático demais, porém não deixa de salientar a iniciativa monopolística da Microsoft. Todos sabemos que a Microsoft já sofreu processos em relação a isto.

Além disto, cometi um erro ao escrever Win32: eu quis dizer "plataforma Microsoft". Obrigado Rogério pela correção.

Suportar diversas linguagens diferentes realmente pode causar mais caos e diminuir o quesito manutenabilidade. Por que temos padrões de projeto, melhores práticas e restringimos os desenvolvedores a utilizar o framework do projeto? Isto enrijece a estrutura, porém traz ordem. Este é o objetivo de se utilizar um padrão.

Claro que podemos utilizar apenas uma linguagem na plataforma .NET, porém ela permite utilizar várias, o que aumenta o RISCO de se aumentar a entropia do sistema. Utilizando um padrão fechado, com apenas uma linguagem e um framework, restringimos esta hipótese e diminuimos o risco de causar caos.

Em relação ao comentário do Rogério sobre conteúdo disponível, o que acontece é o seguinte: a plataforma JEE (às vezes a chamo simplesmente Java para fins de simplificação) possui muito mais tempo de mercado do que o .NET e mais programadores utilizando.

É mais utilizada em universidades, e devido a estes fatores o conteúdo na internet é maior do que o conteúdo disponível sobre as tecnologias Microsoft, o que facilita a curva de aprendizado. E veja que coloquei "a principal fonte de conteúdo é o MSDN", e não a única fonte de conteúdo.

Conforme comentei em todas as colunas desta série, não sou apaixonado por nenhuma tecnologia específica. Minha intenção é fazer uma análise imparcial e objetiva, sem tendências, o que me faz discordar com a opinião do Rogério, que diz que fui "extremamente tendencioso". Esta é uma opinião pessoal dele, que respeito, mas discordo impreterivelmente. O artigo possui embasamento técnico, teórico e empírico através da experiência que temos com o desenvolvimento de projetos. Queremos ser produtivos e atender ao máximo as demandas dos clientes, independente da tecnologia utilizada. O objetivo não é provar que algo é melhor, e sim atender bem aos clientes de acordo com os requisitos levantados.

Espero que esta série de artigos esteja ajudando a desenvolvedores, arquitetos e tomadores de decisão a conhecerem outras tecnologias e a fazerem suas melhores escolhas, pois este é o intuito do artigo.


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

Comentários (9)

Back to top

enviado há 284 dias atrás por rogeriomcarvalho

Olá pessoal,

Os comentários que seguem têm um propósito única e exclusivamente construtivo. A minha intenção é tentar motivar conteúdos com qualidade técnica e desmotivar o contrário. Espero que o autor faça uma reflexão antes de escrever qualquer artigo que tenha uma proposta técnica. Em primeiro lugar, é necessário que cada um tenha autocrítica para avaliar sua capacidade para escrever sobre um assunto antes de iniciar o processo. Não basta querer escrever uma série de artigos para comparar diversas linguagens quando não se conhece BEM as linguagens a serem comparadas. Não adianta o autor escrever uma segunda parte para um artigo em que nem mesmo o título está tecnicamente correto. E pior, mesmo após ler comentários alertando para o equívoco, ainda insiste em manter o título errado na segunda parte.

Seguindo o formato dos meus comentários na primeira parte do artigo, 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:

“Em um primeiro momento ...
A idéia não é se ter uma nota exata, ..., fique à vontade para não utilizá-la.”

Comentários técnicos do trecho destacado anteriormente:

Eu achei interessante o seguinte trecho: “a idéia desta série de artigos é realizar comparações entre tecnologias da forma mais imparcial possível”.

Eu reparei bem a imparcialidade do autor no gráfico fornecido com o título “Fatores de escolha - Java vs .NET”. Abaixo segue a tradução do gráfico em palavras.

• A plataforma Java supera a plataforma .NET nos seguintes quesitos: escalabilidade, manutenabilidade, TCO, aprendizado e portabilidade.

• A plataforma .NET somente supera a plataforma Java no quesito velocidade de desenvolvimento.

Ou seja, de acordo com o gráfico exposto pelo autor, uma empresa deve escolher a plataforma Java para desenvolver seus sistemas quando para ela é importante a escalabilidade, a manutenabilidade, o TCO, o aprendizado e a portabilidade. Porém, se a coisa mais importante é a velocidade de desenvolvimento, mesmo perdendo em todo restante dos quesitos, então ela deve escolher a plataforma .NET. Portanto, alguma empresa se candidata a escolher a plataforma .NET? O autor ainda tem a coragem de dizer que não foi tendencioso e que está é uma comparação IMPARCIAL?

Agora, vamos à melhor parte de todas. Quais foram os fatores técnicos que o autor levou em conta para fazer este gráfico? Como o autor conseguiu mensurar os valores de cada um destes quesitos nas duas plataformas? Quais foram as configurações das máquinas, que sistemas operacionais foram usados, quais IDEs de desenvolvimento foram instaladas, que ferramentas adicionais foram consideradas nesta análise, qual o contexto do projeto considerado para desenvolvimento em ambas as plataformas, dentre outros fatores? Ainda bem que o autor respondeu a esta pergunta, como destacado abaixo.

“Conforme explicado em minha coluna Escolhendo a Linguagem: Java vs PHP, as notas atribuídas no gráfico são aproximações realizadas através de conhecimentos empíricos, da experiência que temos com projetos e através de pesquisas na internet.”

Chega a ser engraçado. O autor determinou valores para os gráficos através de “conhecimentos empíricos”, “da experiência que temos com projetos” e “de pesquisas na Internet”. Em outras palavras, o autor chutou estes valores sem a menor contextualização e sem o menor embasamento técnico. Ainda bem que ele finaliza o trecho destacado como segue: “Caso a informação contida no gráfico não lhe seja útil desta maneira empírica, fique à vontade para não utilizá-la.”. Em outras palavras, caso você tenha um mínimo de bom senso, desconsidere este gráfico, pois o mesmo não tem o menor valor significativo. Este gráfico é pior que não ter análise alguma.

Trecho do artigo original:

“Agora respondendo ao André Luiz Lehmann e ao Daniel: a idéia é comparar tecnologias. Talvez o melhor título para a coluna seja Escolhendo Tecnologias, mas eu não quis me deter a este preciosismo. A comparação é totalmente cabível sim, pois em muitos projetos que realizamos surgiu a dúvida: devemos fazer em Java ou .NET?”

Comentários técnicos do trecho destacado anteriormente:

Quer dizer que o autor não vê problema em chamar .NET de linguagem? Então, nós poderíamos chamar .NET de IDE, API, sistema operacional ou qualquer outra coisa que nos dê na telha? Apesar da tentativa do autor de fazer uma comparação entre partes das plataformas Java e .NET, ele não vê problemas em chamá-la de comparação entre linguagens. E o desenvolvedor Java que está querendo ter uma visão de .NET que se vire para descobrir que na realidade .NET é uma plataforma que pode usar diversas linguagens, como C#, Visual Basic, F#, C++ etc. O autor prefere escrever errado para não se render ao preciosismo.

Trecho do artigo original:

“É a esta pergunta que queremos responder. Agora, mesmo sendo tecnicamente correto utilizar JEE vs .NET, ASP .NET vs Java ou JSP vs ASP, isto não desqualifica o artigo, devido ao propósito comparativo dele. Eu posso não ter utilizado as siglas com a precisão máxima, mas a comparação entre as tecnologias é totalmente cabível para um gestor tomar a decisão.”

Comentários técnicos do trecho destacado anteriormente:

Como o próprio autor disse: “Eu posso não ter utilizado as siglas com a precisão máxima, mas a comparação entre as tecnologias é totalmente cabível para um gestor tomar a decisão.”. Ou seja, basta os gestores ignorarem as siglas do artigo, pois elas podem não estar corretas. Mas, o artigo é ótimo para gestores tomarem uma decisão. Para o autor, o conteúdo do artigo é bem confiável apesar de chamar ASP de linguagem, .NET de linguagem, usar uma sigla que não é mais usadas na plataforma Java (J2EE), mostrar significados errados para outras siglas e fazer gráficos empíricos, dentre outros absurdos. Pelas palavras do próprio autor do artigo: “não quis me deter a este preciosismo”. O leitor que escolha se a informação do artigo é confiável.

Trecho do artigo original:

“Jair: boa colocação, porém discordo em um ponto: o que percebemos no mercado é que o .NET acaba sendo mais rápido para desenvolver, mesmo o Java possuindo estas IDEs que você mencionou. Em uma grande parte dos casos, quem trabalha com .NET trabalha com o Visual Studio (versão paga), aproveitando suas funcionalidades RAD ao máximo. Já quem trabalha com Java normalmente não usa o IntelliJ, por exemplo.”

Comentários técnicos do trecho destacado anteriormente:

A única coisa que o autor citou no artigo dele como sendo melhor na plataforma .NET que na plataforma Java foi a velocidade de desenvolvimento, sempre vinculando esta velocidade ao Visual Studio (versão paga). Isto ficou bem evidente no gráfico. Porém, esta é uma lenda que se tornou verdade para muitos radicais de Java que nunca estudaram a plataforma .NET. Eu tenho usado a IDE Visual Studio desde o Visual Studio .NET 2002 Beta 1, que foi liberado em 2001, até o Visual Studio 2008 SP1 atualmente. Além disto, eu também estou testando o Visual Studio 2010 Beta 1. Em paralelo, eu sempre usei as IDEs NetBeans e Eclipse. Observe que eu já desenvolvia em Java alguns anos antes da plataforma .NET ser anunciada em 2000. Eu posso te dizer, com conhecimento de causa, que sempre achei o Eclipse mais produtivo para codificação que o Visual Studio, principalmente devido ao esquema de compilação incremental com dicas altamente produtivas. O Eclipse incorporou o recurso de refactoring muito antes do Visual Studio. E mesmo depois que o Visual Studio incluiu refactoring, o Eclipse sempre teve uma quantidade bem maior e de melhor qualidade que no Visual Studio. Porém, o Visual Studio tem algumas vantagens notáveis, principalmente na implementação de designers gráficos variados.

É importante ressaltar que nos últimos anos o NetBeans teve uma evolução extraordinária, superando o Eclipse em vários aspectos. Isto era uma coisa inimaginável há alguns anos atrás.

Trecho do artigo original:

“Agradeço ao Rogério Moraes de Carvalho pelo grande post, que demonstra uma certa consistência, embora apresente parcialidade. Concordo plenamente que a defesa não pode ser por paixão por determinada tecnologia, e sim por métodos objetivos.”

Comentários técnicos do trecho destacado anteriormente:

Observe que o autor criticou a plataforma .NET em quase todas os quesitos da sua comparação com a plataforma Java, de uma forma genérica e sem dar uma contextualização. Como existiam diversas informações incorretas sobre a plataforma .NET, ficou parecendo que eu estou sendo parcial para o lado desta plataforma.

Porém, observe que a única coisa que o autor elogiou na plataforma .NET, eu não concordei integralmente. Sem uma contextualização definida, eu não concordo com a afirmação de que a velocidade de desenvolvimento na plataforma .NET é superior à velocidade de desenvolvimento na plataforma Java. É inquestionável que o Visual Studio é muito produtivo para desenvolvimento rápido de sistemas onde não há preocupação com uma arquitetura mais robusta. Porém, a Sun Microsystems (atualmente incorporada à Oracle) desenvolveu uma ferramenta para competir com a produtividade do Visual Studio no desenvolvimento rápido de aplicações Web que, inicialmente, foi nomeada “Sun Java Studio Creator”.Atualmente, os recursos desta ferramenta foram incorporados ao NetBeans. Maiores informações podem ser encontradas no seguinte endereço: http://developers.sun.com/jscreator/.

Porém, no desenvolvimento de arquiteturas mais robustas, as produtividades das IDEs Eclipse e NetBeans são grandes, superando o Visual Studio em diversos aspectos. De qualquer modo, uma análise justa tem que elencar os principais recursos disponíveis nas IDEs e definir um peso para cada um destes recursos para calcular uma nota para a produtividade geral. Sendo que os pesos devem levar em conta o tipo de projeto a ser desenvolvido e ter uma contextualização concreta que os justifique. Ou seja, cada situação de uso da IDE precisa ser contextualizada e classificada para ter algum valor técnico. Não é empirismo! Por exemplo, vamos supor que num determinado contexto o Visual Studio 2008 SP1 é mais produtivo que o NetBeans 6.5.1 para desenvolver aplicações Web. Porém, isto não significa dizer que ele é mais produtivo para desenvolver qualquer tipo de aplicação Web ou para desenvolver aplicações para dispositivos móveis. Observe que mesmo em aplicações Web é necessário contextualizar os frameworks de desenvolvimento Web a serem usados em ambas as plataformas para tentar chegar a alguma conclusão confiável.

Trecho do artigo original:

“Suportar diversas linguagens diferentes realmente pode causar mais caos e diminuir o quesito manutenabilidade. Por que temos padrões de projeto, melhores práticas e restringimos os desenvolvedores a utilizar o framework do projeto? Isto enrijece a estrutura, porém traz ordem. Este é o objetivo de se utilizar um padrão.
Claro que podemos utilizar apenas uma linguagem na plataforma .NET, porém ela permite utilizar várias, o que aumenta o RISCO de se aumentar a entropia do sistema. Utilizando um padrão fechado, com apenas uma linguagem e um framework, restringimos esta hipótese e diminuimos o risco de causar caos.”

Comentários técnicos do trecho destacado anteriormente:

Quer dizer que “suportar diversas linguagens diferentes realmente pode causar mais caos e diminuir o quesito manutenabilidade”? Então, para o autor este suporte a múltiplas linguagens somente prejudica a plataforma .NET? Apesar de o autor ter lido nos posts do seu primeiro artigo que, atualmente, a plataforma Java também suporta diversas linguagens (JRuby, Jython, Scala, Clojure , Groovy etc), ainda não conseguiu concluir que o suporte a múltiplas linguagens também prejudicaria a plataforma Java? Ele ainda insiste: “Claro que podemos utilizar apenas uma linguagem na plataforma .NET, porém ela permite utilizar várias, o que aumenta o RISCO de se aumentar a entropia do sistema.”. Mas, na plataforma Java não há um aumento na entropia do sistema por suportar diversas linguagens? O autor ainda tem a coragem de escrever que está sendo imparcial!

É um tanto quanto absurdo insistir em dizer que o simples fato de uma plataforma suportar diversas linguagens aumenta a entropia de um sistema, mesmo que se utilize uma única linguagem! E este meu comentário vale para ambas as plataformas.

Trecho do artigo original:

“Em relação ao comentário do Rogério sobre conteúdo disponível, o que acontece é o seguinte: a plataforma JEE (às vezes a chamo simplesmente Java para fins de simplificação) possui muito mais tempo de mercado do que o .NET e mais programadores utilizando. É mais utilizada em universidades, e devido a estes fatores o conteúdo na internet é maior do que o conteúdo disponível sobre as tecnologias Microsoft, o que facilita a curva de aprendizado. E veja que coloquei "a principal fonte de conteúdo é o MSDN", e não a única fonte de conteúdo.”

Comentários técnicos do trecho destacado anteriormente:

Em primeiro lugar, não se pode deturpar o significado das coisas para fins de simplificação. Observe que a plataforma Java EE é somente uma parte da plataforma Java. A plataforma Java é composta por diversas tecnologias: Java EE, Java SE, Java ME, JavaCard, JavaFX etc. E o autor ainda quer simplificar substituindo um termo que representa uma parte (plataforma Java EE) por um termo que significa o todo (plataforma Java)!

Quanto ao conteúdo para estudo das plataformas, abaixo eu copiei o trecho que havia escrito no post do primeiro artigo.

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

Trecho do artigo original:

“Conforme comentei em todas as colunas desta série, não sou apaixonado por nenhuma tecnologia específica. Minha intenção é fazer uma análise imparcial e objetiva, sem tendências, o que me faz discordar com a opinião do Rogério, que diz que fui "extremamente tendencioso". Esta é uma opinião pessoal dele, que respeito, mas discordo impreterivelmente. O artigo possui embasamento técnico, teórico e empírico através da experiência que temos com o desenvolvimento de projetos. Queremos ser produtivos e atender ao máximo as demandas dos clientes, independente da tecnologia utilizada. O objetivo não é provar que algo é melhor, e sim atender bem aos clientes de acordo com os requisitos levantados.”

Comentários técnicos do trecho destacado anteriormente:

Repetindo: novamente o autor vem com esta história de análise imparcial depois de afirmar, sem contextualização alguma, que a plataforma Java supera a plataforma .NET nos quesitos escalabilidade, manutenabilidade, TCO, aprendizado e portabilidade e que a plataforma .NET somente supera a plataforma Java no quesito velocidade de desenvolvimento. Quanta imparcialidade!

É engraçado o autor afirmar: “O artigo possui embasamento técnico, teórico e empírico através da experiência que temos com o desenvolvimento de projetos.”. Embasamento técnico e teórico? Quais foram os critérios técnicos e teóricos que foram seguidos para fazer o gráfico? Ops! Nem precisa responder! Esta pergunta já foi respondida: “as notas atribuídas no gráfico são aproximações realizadas através de conhecimentos empíricos, da experiência que temos com projetos e através de pesquisas na internet.”. Ou seja, este é o embasamento técnico e teórico do autor do artigo. Complementando, afinal de contas não custa repetir outra afirmação do autor: “Caso a informação contida no gráfico não lhe seja útil desta maneira empírica, fique à vontade para não utilizá-la.”. Estas afirmações do autor dispensam comentários e resumem a utilidade do conteúdo e do gráfico do artigo.

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 283 dias atrás por wquintanilhadasilva

Rogério, excelente posicionamento! Acredito que seus comentários agregam mais do que o próprio artigo!Há anos que trabalho com as duas plataformas e jamais ví artigo parecido como este. Em meados de 2000 sim, algumas pessoas até iniciaram este tipo de discussão, porém à medida em que foram ESTUDANDO e CONHECENDO a plataforma .NET, mudaram de opinião.Existem pessoas que acreditam - de alguma forma - que uma tecnologia, é melhor que a outra - isto porque alguém lhes falou - e não se dão o trabalho de ESTUDAR para COMPROVAR, através de critérios técnicos bem definidos, realizando experimentos e aferindo com resultados a veracidade de sua crença.Depois, saem por aí propagando informações contestáveis sobre o assunto, contaminando outas pessoas do mesmo perfil. A autor comenta que chegou à esta conclusão através de experiências em projetos. Pergunto: que experiência? quais as premissas e restrições do projeto? que arquitetura? web ou desktop? distribuído? monolítico? e PRINCIPALMENTE, se este projeto foi feito em .NET, qual era o seu conhecimento nesta plataforma na época? este conhecimento era do mesmo nível do conhecimento que tinha da JAVA? se não, não adianta fazer comparações evasivas....enfim, tudo na vida é relativo e não dá para tirar conclusões sem análise, baseando no achismo!!AbsWedson Quintanilha da Silva (Cerrado TI)

Back to top

enviado há 283 dias atrás por rogeriomcarvalho

Olá Wedson,

É bom saber que existem técnicos que, assim como eu, ficam indignados em ler distorções da realidade.

Uma observação importante que você fez, e que eu concordo plenamente, é que para comparar Java e .NET a pessoa deve conhecer ambas as plataformas. Complementando, além de conhecer, devem ter domínio das duas plataformas nas versões mais recentes.

Este tipo de comparação em fóruns costuma gerar muita polêmica e dificilmente resulta em discussões técnicas. Isto não foi diferente no primeiro artigo e ainda gerou discussões em grupos externos.

O mais triste é você encontrar pessoas que possuem até uma base de conhecimento razoável em uma das plataformas criticando a outra, da qual elas confeçam não ter conhecimento. Porém, por trabalhar com uma das plataformas, elas se acham capazes tecnicamente de provar que a plataforma que elas usam é melhor que a outra. Inicialmente, este tipo de atitude era mais comum em desenvolvedores Java, que criticavam a plataforma .NET sem conhecimento de causa. Mas, atualmente existem vários desenvolvedores .NET com a mesma atitude. É fácil de comprovar isto nos comentários que seguiram o primeiro artigo, inclusive comentários que se seguiram fora do site do Javafree.org.

Só nos resta lamentar por estas atitudes. É triste ver tanta prepotência em pessoas tão despreparadas tecnicamente.

Abraços,

Obs.: Apóio a sua atitude de se identificar no comentário (nome completo). Muitos usuários se escondem num nome de usuário para poder escrever bobagens de forma anônima, sem se difamar.

Rogério Moraes de Carvalho

Back to top

enviado há 281 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á 280 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 zero? 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ê precisa estudar bem a outra plataforma também.

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 280 dias atrás por rogeriomcarvalho

Olá pessoal,

Eu escrevi duas mensagens repletas de informações técnicas no site onde este artigo foi publicado originalmente: http://www.baguete.com.br/colunasDetalhes.php?id=3081. Eu estarei postando as duas mensagens a seguir para compartilhar estas informações técnicas com vocês. Se quiserem compreender melhor o debate, basta ler as mensagens que eu estou respondendo na página do endereço acima.

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 280 dias atrás por rogeriomcarvalho

Olá Ismael,

Em minha opinião, os seus comentários foram muito bem fundamentados e gostaria de fazer algumas complementações sobre este assunto.

Eu concordo plenamente com você que a Microsoft, sempre que tem chance, aplica práticas desleais para competir com seus concorrentes. Eu, particularmente, não apóio este tipo de comportamento da Microsoft e também não gosto de muitas atitudes do Steve Ballmer (CEO da Microsoft). Inclusive, eu aprecio assistir à Microsoft tomando uma surra do Google em diversas áreas de Internet há anos, principalmente na tentativa de fazer um engine de busca que possa competir de frente com o engine de busca Google. A cada nova iniciativa da Microsoft, na tentativa de renovar o seu engine de busca para abocanhar uma fatia maior do mercado de buscas, ela adota aquela velha estratégia de Marketing de mudar o nome do serviço. Nas duas últimas vezes, ela batizou o serviço de “MSN Search” e “Windows Live Search”. E agora, está relançando o engine de busca com mais um novo nome: “bing” (http://www.bing.com). Basta você fazer algumas poucas buscas equivalentes no “bing” e no “Google” e comparar os resultados que, muito provavelmente, você não perderá mais tempo com o “bing”. Bem, pelo menos esta é a minha experiência com base em várias buscas que eu já fiz comparando os resultados dos dois engines de buscas.

Seria ótimo se a comparação entre as plataformas Java e .NET fosse tão simples quanto a comparação entre dois engines de busca.

Vejam um teste bem simples que eu fiz. Busquei o termo “Escolhendo a Linguagem: Java vs .NET Parte 2” para tentar encontrar as publicações deste artigo. Inicialmente, eu fiz a busca no “Google” e depois repeti a mesma busca no “bing”. No momento que eu estava escrevendo este comentário, eu obtive os seguintes resultados (somente os três primeiros links principais):

GOOGLE
1. www.javafree.org/noticia/3975/Escolhendo-a-Linguagem-Java-vs-NET-Parte-2.html
2. www.baguete.com.br/colunasDetalhes.php?id=3081
3. templariodatecnologia.wordpress.com/2009/06/12/java-vs-net-parte-2/

COMENTÁRIOS: Os três links do resultado referenciam o conteúdo completo do artigo “Escolhendo a Linguagem: Java vs .NET Parte 2”. Certamente, os resultados estão classificados em ordem descendente de hits de acessos destes sites.

BING
1. http://www.javafree.org/jf/
2. http://www.ejbeer.com.br/index_old.php
3. http://www.glix.com.br/Compras_Servicos/Flores/Floricultura-Mundo-Magico-l4193.html

COMENTÁRIOS: O primeiro link referencia a página principal do Javafree.org, que apresenta um banner rotativo de notícias que anuncia o artigo, portanto não referencia diretamente a página do artigo. O segundo link referencia uma página do EJBeer (Comunidade Java do Vale do Paraíba), que também contém um link para a página do artigo no site Javafree.org. O terceiro link referencia uma página no site “Glix 2.0 - Diretório de Sites”, que corresponde a um anúncio da Floricultura Mundo Mágico, onde não se pode encontrar referência alguma sobre o artigo.

RESULTADO DO TESTE DOS ENGINES DE BUSCA: Para esta busca específica, o “Google” retornou links para três páginas contendo diretamente o conteúdo do artigo e o “bing” não retornou link para nenhuma das páginas que contêm diretamente o conteúdo do artigo, sendo que a última página ainda é um anúncio da “Floricultura Mundo Mágico” que nem referencia o artigo.

Se eu concluísse, com este único teste, que o engine de busca do Google era superior ao do “bing”, ainda assim eu estaria sendo muito mais criterioso que o Paulo Krieser na justificativa dele para o gráfico de comparação entre as plataformas Java e .NET.

Geralmente, opiniões de radicais não ajudam em nada às pessoas que precisam fazer escolhas em TI. Por exemplo, numa escolha de plataforma de desenvolvimento para um projeto, os radicais de open source costumam simplificar a escolha de uma plataforma pelo simples fato dela ser open source, ignorando quaisquer outras características que afetem o projeto.

A IBM, por exemplo, apóia open source há anos, mas nunca deixou de lado o seu objetivo de lucrar. Certamente, a IBM lucra muito com o seu apoio a projetos open source. Seja vendendo máquinas otimizadas para rodar sistemas operacionais open source ou vendendo versões robustas e altamente escaláveis do servidor de banco de dados DB2 voltadas para sistemas operacionais open source, como o Linux, dentre diversas outras práticas capitalistas. Por acaso a IBM está errada?

Quanto aos recursos da plataforma .NET para desenvolvimento de aplicações corporativas de alta escalabilidade, atualmente eles somente são disponibilizados pela Microsoft para rodar em plataforma Windows. Nestas circunstâncias, é pura demagogia citar o Projeto Mono (http://www.mono-project.com), que atualmente é patrocinado pela Novell. Por exemplo, se você for utilizar a última versão do Mono (Mono 2.4) para rodar aplicações ASP.NET, então terá que se contentar com o suporte ao ASP.NET 1.1 e muito do ASP.NET 2.0 (atualmente não há suporte a WebParts e algumas pequenas características). Porém, o ASP.NET 3.5 foi lançado em novembro de 2007 e o ASP.NET 3.5 SP1 foi lançado em agosto de 2008. Em ambas estas versões, houve acréscimo de diversos recursos. E a Microsoft continua evoluindo a plataforma a passos largos, estando na versão Beta 1 o .NET Framework 4.0. Ou seja, você tem esperanças de que o Projeto Mono acompanhe a evolução do Framework sem um atraso considerável? O ASP.NET 2.0 foi lançado em novembro de 2005! Já fazem quase quatro anos e o projeto Mono ainda não terminou de suportá-lo.

Maiores informações sobre o suporte do Mono ao ASP.NET podem ser encontradas na página: http://www.mono-project.com/FAQ:_ASP.NET. Um guia geral de portabilidade de aplicações Mono pode ser encontrado no seguinte endereço: http://www.mono-project.com/Guidelines:Application_Portability. E se você quiser ter suporte e/ou consultoria para trabalhar com a plataforma Mono? Então, você pode pagar pelos serviços de suporte da “Novell” ou pela consultoria da “HQ Software Consulting”, conforme indicado na seguinte página: http://www.mono-project.com/Support. Mas, o projeto Mono é não é open source? O projeto é open source e o Mono 2.4 pode ser usado gratuitamente! Porém, o suporte à plataforma deve ser pago. Portanto, tenha em mente que open source não é a solução para todos os seus problemas financeiros. Você pode não pagar licenças para a Microsoft, mas poderá ter que pagar suporte para a Novell, por exemplo. Num cenário atual, será que é mais vantajoso pagar licenças de Windows Server 2003/2008 e de uma edição comercial do IDE Visual Studio 2008 SP1 juntamente com um contrato de suporte da Microsoft? Ou será mais vantajoso usar servidores Linux, como a IDE MonoDevelop 2.0, ambos open source, e pagar somente o valor de um suporte ao Mono 2.4 para a Novell? Bem, pode ser ou não, pois tudo vai depender do contexto. Vai depender dos valores das licenças e dos suportes, dos problemas que você enfrentará com o Mono 2.4 ou com a plataforma .NET 3.5 SP1, das diferenças de produtividade que você terá com os IDEs em questão, dentre outros fatores.

Por exemplo, se uma empresa precisa desenvolver um projeto Web que não exija alta escalabilidade, possua uma equipe de desenvolvedores com conhecimentos de ASP.NET, não precise de recursos de WebParts do ASP.NET 2.0 e nem de novos recursos do ASP.NET 3.5 ou do ASP.NET 3.5 SP1, não tem licenças de servidores Windows, mas tem servidores instalados com Linux e servidor Web Apache, não tem licenças de edições comerciais do Visual Studio 2008 SP1 e não quer usar as edições Express, que somente rodam em Windows, e precisam acessar um servidor de banco de dados que tem um .NET Data Provider compatível com o Mono, então o Mono PODE ser uma boa opção.

Você ainda precisa levar em conta uma série de coisas antes de fazer uma escolha consciente. Teria ainda que analisar a opção de adotar outras plataformas, sempre analisando uma série de fatores que influenciem o(s) seu(s) projeto(s).

Nenhuma análise pode ser absoluta.

Portanto, não é simples escolher hardware, sistema operacional, plataforma de desenvolvimento, servidor de bancos de dados e outros recursos de TI necessários para desenvolver um sistema e depois colocá-lo em produção. Se fosse tão simples quanto algumas pessoas pensam, então bastava você olhar os gráficos chutados do Paulo Krieser nas comparações entre tecnologias (Java vs PHP e Java vs .NET), que ele insiste em chamar de linguagens, e estaria tudo resolvido de forma fácil e rápida. Até o momento de quebrar a cara no futuro e lembrar que você se baseou em chutes para tomar a sua decisão.

E com relação à plataforma Java? Você sempre estará livre para escolher dentre vários fornecedores que desejar para te dar suporte? Sem dúvidas, há chances bem melhores que isto aconteça na plataforma Java que na plataforma .NET. Afinal de contas, a plataforma Java foi criada desde o início com o objetivo de ser multiplataforma e a plataforma .NET para suportar múltiplas linguagens. Apesar de ter uma arquitetura que permita portar a plataforma .NET para múltiplas plataformas, atualmente a Microsoft somente suporta a plataforma Windows em algumas arquiteturas de processadores até a versão final do mais recente do .NET Framework: 3.5 SP1.

Então você deve estar pensando que basta escolher a plataforma Java e você estará independente de um único fornecedor! Você terá liberdade para mudar quando quiser? Depende de como você desenvolverá os seus sistemas na plataforma Java. Supondo que você esteja produzindo sistemas com a plataforma Java EE 5.0, então você tem que desenvolver aplicações 100% compatíveis com Java EE 5.0. Não se podem usar aquelas APIs proprietárias que aumentam a produtividade e estão disponíveis somente em algum servidor de aplicações Java EE específico, para não ficar preso em um único fornecedor, como acontece com .NET. E, mesmo desenvolvendo aplicações 100% compatíveis com Java EE 5.0, nem sempre a migração entre diferentes servidores de aplicação Java é tão transparente e simples na prática quanto parece na teoria.

Além disto, até poucos anos atrás, a plataforma Java tinha muitas opções de grandes empresas como fornecedores de servidores de aplicação:
- IBM com WebSphere;
- BEA Systems com WebLogic;
- Oracle com Oracle Application Server;
- Sun com o Sun Java System Application Server (atual Sun GlassFish Enterprise Server);
- Red Hat com JBoss (A Red Hat comprou o JBoss, assim com a Sun comprou o MySQL);
- dentre outras empresas/organizações e servidores de aplicações menos expressivos.

Porém, esta realidade, com muitos fornecedores poderosos e uma liberdade de escolha grande para o usuário, diminuiu nos últimos anos. Isto, devido à Oracle ter adquirido a BEA Systems e, mais recentemente, a Sun Microsystems. Assim que a fusão da Sun e da Oracle estiver concretizada, recursos dos produtos da Sun devem ser incorporados aos produtos da Oracle. E os nomes dos novos produtos, resultado desta fusão, serão uma tarefa das equipes técnicas e de Marketing da empresa. Após isto, as seguintes opções de fornecedores de servidores de aplicação Java estarão disponíveis:
- IBM com WebSphere
- Oracle com Oracle WebLogic Application Server (nome atual, que pode mudar com a fusão com a Sun)
- Red Hat com JBoss (A Red Hat comprou o JBoss, assim com a Sun comprou o MySQL)
- dentre outras empresas/organizações e servidores de aplicações menos expressivos.

Ou seja, a plataforma Java já não tem tantas opções de fornecedores de servidores de aplicação robustos como antigamente. De qualquer modo, não há dúvida que ainda é uma opção que dá ao cliente muito mais liberdade de escolha que a plataforma .NET. Desde o suporte a um número maior de arquiteturas de processador até as opções de sistema operacional e de servidores de aplicação, para não citar IDEs e outros fatores.

Abraços,

Rogério Moraes de Carvalho

Back to top

enviado há 280 dias atrás por rogeriomcarvalho

Olá Diego Miranda,

Eu estarei comentando cada um dos trechos da sua mensagem abaixo.


TRECHO ORIGINAL DA MENSAGEM:
“Rogério acredito que você tem opiniões pessoais a respeito do assunto. Porém se você discorda da opinião do autor, escreva você um artigo. Não acho legal ficar usando a área de comentários para isso. Dessa forma você demonstra querer "desmerecer" o conteúdo do artigo ao invés de elaborar uma crítica construtiva.”

COMENTÁRIO:
Eu somente não escrevo um artigo sobre o assunto “Plataforma Java versus Plataforma .NET” porque seria necessário escrever um enorme livro e, ainda assim, eu somente conseguiria contextualizar alguns casos particulares. Neste caso, eu prefiro participar de debates sobre o assunto. Mas, se você for analisar, a maior parte de cada um dos meus comentários tem muito mais conteúdo técnico que o artigo. Quem ganha com isto é o leitor.
Talvez você tenha um conceito de “crítica construtiva” um pouco diferente do meu. As críticas, por mim apresentadas, contêm uma grande quantidade de informações técnicas para justificar os pontos de discordância. Ou seja, eu estou criticando e mostrando tecnicamente os motivos. Por que você acha que eu gasto meu tempo escrevendo comentários grandes com embasamento teórico? Exatamente por respeito ao autor e a todos os leitores da coluna. Se fosse para elaborar uma crítica destrutiva, eu simplesmente escreveria algo como: “Este artigo é uma porcaria e não acrescenta nada para pessoa alguma.”. Seria um comentário cômodo para mim, não teria o menor fundamento e não acrescentaria nada de construtivo para o autor e nem para os leitores.


TRECHO ORIGINAL DA MENSAGEM:
“Dentro da minha experiência de quase 6 anos com desenvolvimento, trabalhando desde o Java 1.3, passando por Asp, PHP, VB, VBA e .NET, só discordo do gráfico que o autor expôs no quesito escalabilidade, onde acredito haver um empate, visto que, em minha opinião, a escalabilidade das tecnologias estão diretamente ligadas ao projeto. Portanto são variáveis.”

COMENTÁRIO:
Apesar de ter muito mais tempo de experiência com desenvolvimento que você e tendo trabalhado com todas as tecnologias que você comentou e outras, eu não faço a menor questão que ninguém saiba disto. Isto porque eu não quero convencer ninguém das minhas convicções pela minha experiência, pela minha formação ou por certificações que eu tenha. Eu somente quero participar de debates de alto nível técnico com pessoas que estudem a fundo as plataformas Java e .NET. Assim, todos nós poderemos sair ganhando.
Quanto ao gráfico, eu acho curiosa a sua opinião. Você afirmou: “em minha opinião, a escalabilidade das tecnologias estão diretamente ligadas ao projeto. Portanto são variáveis.”. Eu concordo plenamente com você. Acho que sua colocação foi perfeita! Mas, antes disto você afirmou: “só discordo do gráfico que o autor expôs no quesito escalabilidade, onde acredito haver um empate”. Interessante a sua opinião, pois apesar da escalabilidade das tecnologias estarem diretamente ligadas ao projeto e, portanto, serem variáveis, você, ainda assim, conseguiu mensurar a escalabilidade nas plataformas Java e .NET de modo a empatá-las neste quesito. Impressionante! Agora, eu consigo entender porque você discordou do gráfico do autor somente em um quesito. Exatamente porque você analisa as plataformas exatamente com os mesmos critérios que ele; ou seja, sem embasamento técnico algum.
Você e o autor nem mesmo precisariam de uma planilha eletrônica ou outro software com suporte para geração de gráficos estatísticos. E melhor ainda, nem precisariam de dados para fazer os gráficos. Bastaria ter um software de edição gráfica, como o CorelDRAW ou o Adobe Illustrator para ficar esticando ou achatando as barrinhas do gráfico de barras que representam as notas dos quesitos para as plataformas Java e .NET. E tudo aconteceria de acordo com as suas vontades. Por exemplo, no quesito escalabilidade as duas barrinhas terão a mesma altura. Mas, no quesito velocidade de desenvolvimento a barrinha da plataforma .NET terá o dobro do tamanho da barrinha de Java. E algo assim nos outros quesitos também. Pronto! A análise está completa! Agora, basta publicar o resultado porque esta “comparação entre as tecnologias é totalmente cabível para um gestor tomar a decisão”.


TRECHO ORIGINAL DA MENSAGEM:
“Java é tanto uma linguagem, quanto uma plataforma, uma tecnologia e também uma marca. É possível utilizar o nome Java para me referir a tudo isso. Se eu digo que vou comparar Java com .Net, me refiro a plataforma Java com a plataforma .Net. Se digo vou comparar Java com C# me refiro a linguagem Java com a linguagem C#. Enfim, isso não é uma "deturpação" dos fatos. A palavra Java engloba uma gama muito ampla de significados que depende do contexto para ser entendido.”

COMENTÁRIO:
Curioso você estar me explicando que Java é tanto uma linguagem de programação como uma plataforma. Certamente, você não leu o meu primeiro comentário na primeira parte do artigo do Paulo Krieser: “Escolhendo a Linguagem: Java vs .NET”. Para facilitar as coisas para você, eu estou copiando abaixo o parágrafo onde expliquei o problema no título do artigo.

“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).”

Observe que eu não somente havia comentado sobre Java no contexto de uma linguagem de programação, como ainda havia informado que a linguagem Java 5.0 (codinome “Tiger”) teve mudanças significativas. Para ser ainda mais preciso, na versão 5.0 foram acrescentadas as seguintes novidades na linguagem Java: generics, laço for avançado, autoboxing/unboxing, typesafe enums, varargs, static import e metadados (anotações).

Você escreveu: “Se eu digo que vou comparar Java com .Net, me refiro a plataforma Java com a plataforma .Net. Se digo vou comparar Java com C# me refiro a linguagem Java com a linguagem C#. Enfim, isso não é uma "deturpação" dos fatos. A palavra Java engloba uma gama muito ampla de significados que depende do contexto para ser entendido.”

Em momento algum eu disse que não era assim, mas muito pelo contrário. O problema é que o autor insistiu em colocar o seguinte título: “Escolhendo a Linguagem: Java vs .NET - Parte 2”. Se o autor escreve no título “Escolhendo a linguagem”, então ele não pode escrever Java vs .NET, senão ele estará dizendo que .NET é uma linguagem. Portanto, isto é SIM uma “deturpação” dos fatos. .NET não é uma linguagem, mas sim uma plataforma. Sendo assim, o autor precisa escolher uma forma correta de escrever o título. Então, ele pode escrever “Escolhendo a PLATAFORMA: Java vs .NET - Parte 2” ou “Java vs .NET - Parte 2”, por exemplo.


TRECHO ORIGINAL DA MENSAGEM:
“Respondendo a sua pergunta "Portanto, alguma empresa se candidata a escolher a plataforma .NET?", eu me candidataria já que para uma gama enorme de projetos a plataforma .Net atende perfeitamente e seu ambiente de desenvolvimento traz um ganho de produtividade muito bom.”

COMENTÁRIO:
Como eu estou bem lembrado, você compartilha as técnicas para geração de gráficos que foram usadas pelo autor do artigo. Afinal de contas, para vocês a única coisa que a plataforma .NET ganha da plataforma Java é na “velocidade de desenvolvimento”, independente do contexto. Ops! Eu já estava esquecendo! Você corrigiu uma parte do gráfico. Para você, as plataformas .NET e Java empatam em escalabilidade. Então, você se candidataria a escolher a plataforma .NET por causa do ganho de produtividade e do empate com a plataforma Java em escalabilidade, independente do contexto.


TRECHO ORIGINAL DA MENSAGEM:
“Porque as empresas não utilizam C++ para desenvolver projetos Web hoje?! Minha resposta é que o custo do desenvolvimento seria altíssimo. Entretanto, isso não torna a linguagem C++ menos importante para indústria de jogos, que necessita de desempenho acima de qualquer outra coisa.”

COMENTÁRIO:
Como a sua mensagem foi direcionada para mim, eu não entendi o motivo deste comentário. A única citação que eu fiz sobre a linguagem C++ foi com relação à ela ser suportada pela plataforma .NET. Então, qualquer interpretação de que a linguagem C++ não é importante é unicamente sua.


TRECHO ORIGINAL DA MENSAGEM:
“Acredito que dentro desse artigo é possível identificar o intuito principal que o autor propôs: ajudar um profissional a escolher uma linguagem para um projeto específico. Não escolher a linguagem que ele vai utilizar para o resto da vida!”

COMENTÁRIO:
Eu discordo completamente da sua opinião. Pois, como os meus comentários anteriores deixaram claro, o artigo não tem critérios técnicos e nem teóricos para tirar as conclusões e ainda montar um gráfico comparativo entre as plataformas.

Mas, você tem total liberdade para achar o artigo maravilhoso e adotar os ensinamentos e a experiência do autor. Inclusive, eu não vejo problema algum em você afirmar que “dentro desse artigo é possível identificar o intuito principal que o autor propôs: ajudar um profissional a escolher uma linguagem para um projeto específico”, mesmo quando o artigo compara partes de duas plataformas (Java e .NET)e não de duas linguagens. Mas, vocês não devem se importar com estes “preciosismos” da minha parte.


TRECHO ORIGINAL DA MENSAGEM:
“Bem... penso que comentários devem ser utilizados para encorajar e ajudar a melhorar o conteúdo dos próximos artigos e não desmotivar e inibir a criação de novos.”

COMENTÁRIO:
Como eu havia afirmado antes: as críticas, por mim apresentadas, contêm uma grande quantidade de informações técnicas para justificar os pontos de discordância. Ou seja, eu estou criticando e mostrando tecnicamente os motivos. Eu gasto meu tempo escrevendo comentários grandes com embasamento teórico exatamente por respeito ao autor e a todos os leitores da coluna. O autor pode utilizar este embasamento teórico apresentado para estudar e tentar evoluir ou ignorá-los e escrever outros artigos usando a mesma abordagem. Afinal de contas, os meus comentários no primeiro artigo não mudaram em nada a abordagem do autor no segundo artigo.

Atenciosamente,

Rogério Moraes de Carvalho

Back to top

enviado há 262 dias atrás por weberdls

Bom, não conheço muito sobre .NET e estou começando com Java, tenho alguma experiência, mas acho pouco ainda, para sair comprando brigas(que certamente surgiriam se eu o fizesse).

Mas o meu conhecimento em Java me deixa a vontade em criticar um pouco o >salgadonline<.

TRECHO :
"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ário:
Deficiência em C# nenhuma né, então se eu desenvolver um programa complexo, do tipo : "HelloWorld" em C#, eu posso fácilmente usar este mesmo código e publicá-lo na web, desktop, celular, na geladeira da minha mãe e no relógio meu amigo japonês ? (Isto é realmente uma pergunta, lembrem-se que não conheço nada de .NET)
Java é uma linguagem velha. A cara, eu não acho não, 14 anos, é novinha vai rs. Cheia de gets, sets né? Me perguntou eu agora, como raios C# faz encapsulamento?
PARA DESCONTRAÇÃO :
"Encapluas "
Creio que por trás daquilo que o C# faz, devam haver algumas classes fazendo gets e sets pra você cara pálida e neste caso você até sabe o que tem por trás, mas devem haver muitas coisas acontecendo no C# que você não saiba.

TRECHO:
"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)."

Comentário:
Com certeza, se você tivesse tanto tempo de Java quanto tem de C#, você já saberia muito bem sobre Reflection, Classes abstratas, interfaces... Isso é muito comum em java, muitas bibliotecas (todas?) do próprio Java usam Reflection, interface(nem se fala), classes abstratas(mais ainda) para implementar suas funcionalidades.

E só para discordar do rogeriomcarvalho(hahahaha), para mim, este tipo de discussão não é para ser tão técnico, apenas citações de tecnologias e o que elas fazem, para instigar o leitor a ir atrás e pesquisar sobre.

Abraço à todos !!!


Faça seu login