Baguete Diário newsletter do Baguete.
Paulo Krieser  
Comunicar Erros Envie para um amigo Versão para impressão Diminui tamanho da fonte Aumenta tamanho da fonte Assine o RSS do colunista
09/06/2009 - Escolhendo a Linguagem: Java vs .NET - Parte 2

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.

Comunicar Erros Envie para um amigo Versão para impressão Diminui tamanho da fonte Aumenta tamanho da fonte Assine o RSS do colunista
Comentários (13)
Marcio, em 09/06/2009, 18:00
Ótimo artigo

Wedson Quintanilha (Cerrado TI) (Cerrado Soluções em TI), em 09/06/2009, 18:15
Tá certo que a MS é monopolista e quer ganhar dinheiro em cima de tudo. Interessante é que qual a empresa que não tem este pensamento né? as coisas no mundo giram em torno de dinheiro e, falando neste negócio, a visão de custo deve ser a principal e talvez única característica que se deve avaliar para decidir qual ferramenta utilizar. Calma, eu explico:

Minha avó já contava um ditado que dizia "o barato pode sair caro", pois eh, aquela sábia velhinha que, graças à Deus, não teve oportunidade de ver um computador durante sua passagem neste mundo, já previa que uma decisão tomada com base apenas no custo VISIVEL no momento, pode ser na verdade um verdadeiro tiro no pé amanhã.

Podemos ver isto facilmente nas decisões que tomamos em algumas áreas de nossa vida e no desenvolvimento de software não é diferente e esta premissa navega por todas as disciplinas, áreas e fases da Engenharia de Software (poderia ser até Filosofia de Software porque de exato, softaware não tem nada.....minha opinião apenas!)

Escolher um processo ágil porque é mais rápido e custo menos é melhor do que um processo preditivo? depende, é isto mesmo, depende do amanhã, como este softare será mantido, como se dará a gestão deste produto....mas isto é post para o outro artigo, deixe eu voltar ao foco.

Escolher plataforma de desenvolvimento JAVA, .NET ou outra que possa surgir estar muito mais além do que simplesmente questões técnicas e depende muito mais da estratégia que você adota para o seu produto e para a sua empresa.

Quando digo estratégia, me refiro mesmo ao custo. E a visão deste custo tem que ser diluída ao longo do tempo já que o TCO mencionado nos dois artigos fala muito sobre aquisição de licenças e etc e tal, mas existem custos que o próprio produto se paga ao longo de um período em operação - é a verdadeira lei do giro....as empresas de TI dão um UFA! por que esta lei existe......

Existem regiões que um desenvolvedor VB.NET ganha muito menos que um desenvolvedor JAVA. Ora, se é importante para a empresa de TI manter profissionais no setor de desenvolvimento com um custo de salário mais baixo e aumentar o seu efetivo de vendedores e consultores - pessoas que efetivamente geram receitas (os desenvolvedores normalmente geram despesas) - esta empresa com certeza deverá, para não ir de encontro à sua estratégia, adotar a tecnologia que mais irá colaborar ao longo de um período de tempo.

Pode ser também que, dependendo da cultura da região ou da empresa, é mais prudente adotar a tecnologia que todos já são familiarizados, independente se ela tem ou não uma vasta documentação que possa servir de apoio. Quando surge uma necessidade ou quando ocorre um problema, se a equipe da empresa conhece e domina a tecnologia empregada, com certeza o tempo de resposta será muito maior.

Enfim, a preocupação a ser levada em conta deve sempre ser a seguinte: o quanto eu conseguirei entregar um projeto com a minha equipe, com minha estrutura, com meus conhecimentos e dentro do prazo e custo que o meu cliente me impõe adotando esta tecnologia ou aquela, este ou aquele paradigma, e por aí vai.

Resumindo: Se tivermos um problema como este, devemos primeiro avaliar as premissas e restrições do projeto, avaliar as ferramentas e recursos que temos e aí sim, fazer projeções, especulações para encontrarmos o ponto de equilíbrio e chegarmos a uma conclusão que pode até ser híbrida dependendo da empresa e do projeto como por exemplo:
Uma equipe cuida da interface web toda feita e GxT e esta equipe é especializada em interfaces com esta tecnologia, mas não domina bem o background, então, temos uma equipe usando .NET para implementar utilizando os recursos mais avançados existentes nesta plataforma como os WWF, WCF, WPF, LINQ e por aí vai, a parte de negócio.... não vejo problema nisto!

Devemos lembrar que uma aplicação deve contribuir para que o cliente seja mais competitivo e esta premissa nos leva ao extremo da integração, da reutilização e mais, o retorno de um projeto como este deve ser medido em longo prazo e o próprio custo de licenças serão rateados ao longo deste tempo e rapidamente o retorno do investimento poderá ser recuperado, do contrário, não adianta fazer nenhuma aplicação se isto não estiver bem claro.

Ufa, chega né!

Rogério Moraes de Carvalho, em 09/06/2009, 23:19
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

Claudemir, em 10/06/2009, 00:14
Paulo. Infelizmente você não foi feliz neste artigo. Tecnicamente, o Rogério demonstrou vários dos seus erros. Quando nos deparamos com alguém com melhor conhecimento que o nosso, devemos aproveitar e aprender. Abç.

Ismael, em 10/06/2009, 13:42
@Wedson Quintanilha

"Tá certo que a MS é monopolista e quer ganhar dinheiro em cima de tudo. Interessante é que qual a empresa que não tem este pensamento né? as coisas no mundo giram em torno de dinheiro"

Esse tipo de afirmação parece inocente e pragmática. Até entendo que sua intenção seja realmente ser pragmático. Mas o que acontece é que coisas como "coitadinha, só quer ganhar dinheiro, empresas existem para isso" devem levar em consideração a FORMA como a empresa busca fazer isso. Como o Paulo resaltou a empresa do Monkey Boy(Ballmer) já foi processada por prática ilegais de concorrência. E como li a poucos dias, existe mais uma chance de isso acontecer com o Windows 7 e mudanças no seu media player.

Sendo mais prático e direto no que tange a nós que não trabalhamos em mega corporações: O velho e bom vendor Lockin. Você usa .net, se diverte usando tecnologias interessantes, mas daí PRECISA de um servidor IIS. As tecnologias só se encaixam de forma tranquila com outras tecnologias MS. Por aí vai, uma coisa puxa a outra e no final você acaba perdendo completamente seu poder de escolha.

O principal é usar padrões abertos. O argumento de "ah, .net tem especificações abertas e o mono". Contra esse argumento eu puxo para o já alegado fator prático. Na prática, mono Substitui plenamente MS .net ? De jeito nenhum.

Se a MS desejasse suas tecnologias de forma difundida universalmente, eles tratavam de implementar para mais plataformas.

"Mas é o capitalismo, é válido.". Sim, é completamente válido, cabe a quem entende de tecnologia observar e prever possíveis problemas e fazer sua escolha.

E como você mesmo dito, o barato(praticidade imediata), pode sair caro(ficar preso a uma tecnlogia de uma empresa só).

Diego Miranda, em 10/06/2009, 14:48
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.

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.

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.

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.

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.

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!

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.

É isso. Fui.

Carlos Daniel de Mattos Mercer (UseInet), em 10/06/2009, 15:39
Parece, eu disse "parece" que o salário de C# está melhorando. Quanto à Java o mercado é bem maduro, muitas vagas e bons salários. Cabe ao profissional estar preparado para trabalhar com as duas tecnologias, se realmente for profissional, caso contrário não passa de um programador VB amador ou de um programador JavaScript meia boca.

Rogério Moraes de Carvalho, em 13/06/2009, 16:45
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

Rogério Moraes de Carvalho, em 13/06/2009, 18:58
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

Gabriel, em 14/06/2009, 15:05
É engraçado como duas plataformas que não apresentam nenhuma inovação gerem tanto debate.

Na minha experiência, a diferença de produtividade entre as duas está mais no estilo dos programadores do que em qualquer outro fator. As pessoas que gostam de Java tendem a complicar demasiadamente seus projetos, empilhando frameworks sobre frameworks. Por outro lado, os adeptos do .NET tendem a depender demais das facilidades do VS, sem se preocupar em dar estrutura aos sistemas.

Paulo Krieser (Krieser IT Solutions), em 15/06/2009, 11:22
Olá pessoal,

Agradeço pelos comentários. A idéia do artigo é compartilhar conhecimentos para que estes possam auxiliar na dúvida que volta e meia surge nos projetos: devemos fazer em Java ou em .NET? São muitas as variáveis envolvidas e uma análise puramente técnica seria quase inviável, fugindo do escopo deste artigo, visto que:

- Teríamos que ter duas equipes trabalhando para o desenvolvimento do mesmo projeto;
- As pessoas das duas equipes teriam que ter habilidades, nível de conhecimento da tecnologia, talento e iniciativas muito parecidas;
- Apenas um projeto não seria o suficiente para se tirar uma conclusão;
- O cliente estaria fornecendo informações para duas equipes distintas, o que poderia causar distorções;
- Um membro da equipe ficando doente, por exemplo, já iria influenciar os resultados;
- Estamos lidando com pessoas quando construímos projetos. Isto causa imprevisibilidade.

Por isso o foco empírico do artigo, trazendo nossos conhecimentos e experiências para o debate.

Este assunto costuma ser bastante discutido e resultar em discussões acaloradas, e eu não esperava uma reação diferente desta vez.

Rogério, temos opiniões bem divergentes a respeito do assunto, porém respeito sua opinião. Pois, como disse Voltaire: "Não concordo com uma palavra do que dizeis, mas defenderei até a morte o direito de dizê-lo".

Diego Miranda, você pegou o espírito da coisa. Este tipo de discussão acrescenta. Na sua opinião, o item escalabilidade empata nas duas tecnologias, e este tipo de feedback que eu gostaria de ter.

Abraços a todos.

Marcelo, em 15/06/2009, 11:27
Olá Rogério,

Desculpe a franqueza, mas seria melhor escreveres um artigo também.
Teus posts estão muito longos, desanima alguém a realmente ler. Não é uma crítica ao conteúdo, mas sim à forma. Li o primeiro post e cansei, achei longo. Os demais sequer dei atenção, eles são bem maiores que o próprio artigo, nao dá.
Não estou desmerecendo o conteúdo, até porque não pude ler tudo o que escreveste, mas ser objetivo e sem delongas não é apenas importante, mas imprescindível quando se trata de "comentários" a um artigo ou comentários de comentários.
Fui...

Rogério Moraes de Carvalho, em 15/06/2009, 13:41
Olá pessoal,

Eu peço desculpas pelos meus comentários extremamente longos e técnicos.

Segue apenas uma breve justificativa deste meu excesso de rigor técnico e embasamento teórico. Originalmente, eu li os dois artigos “Escolhendo a Linguagem: Java vs .NET” (partes 1 e 2) no Javafree.org, que é um portal de Java com conteúdo técnico. Na publicação dos artigos no Javafree.org havia referências para os artigos originais no site baguete, que eu nem sequer conhecia. Então, eu achei por bem copiar os meus comentários para o site original. Esta foi a minha falha, pois eu não havia percebido que o baguete não é um site técnico. Lendo outros artigos de TI do site, eu pude perceber que o objetivo do mesmo é abordar os assuntos de modo bem superficial e “empírico”. Proposta completamente diferente do meu objetivo, que é debater com alto nível técnico com participantes que estudem a fundo o assunto em debate ou com aqueles que queiram evoluir lendo conteúdo de qualidade.

Obrigado Marcelo pela sua franqueza, pois ela foi essencial para eu perceber o objetivo dos participantes deste site. Afinal de contas, você não foi o único a reclamar das minhas longas mensagens.

A partir deste momento, eu não estarei mais postando mensagens no site baguete. Se for o caso, eu postarei comentários técnicos apenas no site Javafree.org.

Abraços a todos,

Rogério Moraes de Carvalho
ENVIE UM COMENTÁRIO  
* Campos obrigatórios
Nome *

e-mail *

Empresa

Cidade

Estado
Comentário *
Receber notificação de novos comentários

Digite no campo acima o código que aparece na imagem!
Basso Straps
Paulo Krieser
Paulo Krieser é diretor executivo da Krieser IT Solutions, empresa especializada no desenvolvimento de aplicações corporativas nas mais diversas tecnologias.
Colunas anteriores do autor
07/10 Análise de Sistemas: Objetivismo X Subjetivismo
30/09 Ciência da Computação: Curso Prático ou Teórico?
23/09 Inglês fluente em vagas de TI: necessidade ou exagero?
16/09 A Análise e os Casos de Uso
09/09 Computação - Ciência Não Exata
VEJA TODAS
Os 5 mais acessados
Acessos nos últimos três meses
01 Felipe Basso
02 Janer Cristaldo
03 Sílvia Somenzi
04 Judith Riboni
05 Ery Jardim
 
ENTREVISTA  
Gustavo Cerbasi
Endividado? Não corte o lazer! Quer poupar? Não administre pobreza. Confira as dicas para equilibrar suas finanças.
VEJA MAIS
newsletter
Receba diariamente as principais notícias do mercado de TI
CADASTRO
Baguete Jornalismo Digital

Todos os direitos reservados © Copyright 2007 - Notas legais - Termo de Uso - Por: Agência Internet
UOL Host
CANAL DE VENDAS  
Innovative
Dinamize