Fofada .net

Recebi no meu email:

Comparacao do PetStore J2EE da The Middleware Company x .NET da Microsoft…Mais uma furada

Nao sei se voces acompanharam, mas em novembro, houve um benchmark (se assim podemos dizer) entre a uma implementacao do PetStore da Sun feita pelo pessoal da TMC (The Middleware Company) contra uma implementacao em .NET (feita pelos funcionarios da Microsoft). O resultado foi que o .NET venceu em performance.

A historia toda do PetStore comecou quando a Microsoft lancou uma versao do PetStore em .NET vinte vezes mais rapida do que a da Sun. A Sun logo respondeu que o seu PetStore tinha como unico proposito o de ensinar boas praticas em J2EE, era um meio acadêmico. Uma observacao importante que cabe aqui e: o PetStore da Microsoft nao tinha tratamento de excecoes e muitas regras de negocio eram implementadas com stored procedures !!! Para deixar a historia um pouco mais bacana, a Oracle implementou a sua versao de PetStore em Oracle 9i, vinte vezes mais rapida do que a da propria Microsoft. Tambem pudera, a Oracle tem o SA e o BD nas maos…ambos podendo rodar na mesma JVM.

Resultado do primeiro round: todos as comparacoes foram de um tremendo nonsense. Entao veio o segundo round: TMC implementando o PetStore com J2EE contra Microsoft com .NET. O resultado foi que o .NET foi mais rapido. A Microsoft estava feliz da vida ate a hora que chegou Rickard Oberg. Rickard Oberg e a pessoa que esta por tras, entre outras coisa, da arquitetura revolucionaria do JBoss, o Microkernel baseado em JMX. Ele e o fundador do projeto XDoclet. Rickard revisou a implementacao da TMC e reparou algumas coisas como:

  1. Uso de Entity Bean BMP ao inves de CMP: No comeco, BMPs eram importantes, os gerenciadores de persistencia ainda eram muito ruins. Mas hoje, os CMPs sao muito mais rapidos que BMPs. Em um finder, por exemplo, CMPs precisam ir apenas uma vez no BD para construir um EJB, enquanto que BMPs precisam ir duas vezes (uma para recuperar a pk e outra para montar o bean).

  2. Falta de Cache para com os Value Objects: Nao foi implementado um cache de value objects, alem disso, um novo vo sempre era criado quando alguem solicitava um vo de algum Entity Bean.

  3. Transacao: todos os metodos estavam com tx marcada como Required, metodos getters e finders precisam de transacao ?

  4. Strings mal montadas: StringBuffer simplesmente nunca foi utilizado

Bom outras observacoes podem ser feitas no site : http://dreambean.com/petstore.html

eu postei a algum tempo atraz uma mensagem sobre isto no forum do TSS e duas semanas depois a unica resposta que recebi foi que eles iriam fazer um novo benchmark com a ajuda da comunidade Java, mas até agora ninguem nem começou a fazer isto :frowning:

ahh, o link para se alguem se interessar pelas respostas deles :slight_smile:

http://www.theserverside.com/discussion/thread.jsp?thread_id=16317