Bill Burke (EJB) X Rod Johnson (Spring)

Andei acompanhando alguns posts relacionados ao crescimento de ofertas de emprego para Spring, que ha pouco alcancou o numero de ofertas de emprego para EJB.
Eh claro que os comentarios desses posts estao repletos de defesas e ataques a ambas as tecnologias.
Criei esse post porque achei interessante ver 2 pesos pesados de TI discutindo sobre suas tecnologias.

De um lado Rod Jonson, criador da Spring, de outro Bill Burke, da JBoss, autor do EJB 3.0 da O’Reilly.

Primeiro a discussao eh sobre se realmente hoje ha mais ofertas de emprego para Spring do que para EJB.
Segundo Johnson, Spring tem um numero muito maior de ofertas de emprego:

Ai Bill Burke sugere que Johnson manipulou dados em seu blog ‘bobo’:

Aqui Johnson mete o pau no EJB:

Depois Burke satiriza o Spring:

E no fim deixa um aviso. Se Spring e Java nao se unirem, Rails vai dominar o mundo :shock:

Bom, achei interessante a discussao. Deem uma lida e me digam de lado voces estao?
(Nao esquecam de ler os comentarios, que eh onde o bixo pega) 8)



http://blog.springsource.com/main/2008/01/23/spring-overtakes-ejb-as-a-skills-requirement/

Abs!!!

Ola Felipe

Primeiramente parabens pelo excelente post-noticia.

O Rod Johnson sabe que ejb3 esta ganhando muita forca e comendo um pouco do mercado do spring. Se ele nao soubesse disso, nao teria entrado pra spec do Java EE 6. Quando ele diz que ejb3 ainda é um elefante branco, parece ate que ele nao estudou a tecnologia direito.

Sobre a quantidade de empregos, esta nao é a realidade do Brasil. Sem duvida o que a gente mais ve hoje em dia é JSF e EJB3.

Creio que JEE 5/EJB 3 está bem nivelado com Springframework a ponto da escolha de um ou outro depender mais de gosto pessoal do que vantagens técnicas em si.

Eu respeito Rod Johnson, ele escreveu um dos melhores livros de J2EE que existe e criou Spring utilizando sua experiencia e instatisfação com o Status Quo que existia, a ponto de um projeto open-source rivalizar uma especificação feita pelos maiores players do mercado.

Pena que eu acho que ele se perdeu um pouco ao longo do caminho, a idéia inicial era tornar J2EE mais simples, e isso ele o fez, porém agora o framework já quer ser uma solução completa, querendo criar uma silver bullet, e creio que e ele não tem força para isso.

Já JEE 5 não é perfeita, mas percebeu que o mercado queria e se simplificou bastante, o que estancou a fuga em massa de desenvolvedores para outras plataformas e parece que está ganhando adeptos.

Obviamente tudo que eu disso, IMHO.

Uma coisa eu concordo com o Rod, se as duas tecnologias ficarem brigando, logo, logo vamos ter Rails em todo canto…
Agora que o pessoal começou a saber java de verdade, e os projetos estão saindo melhores, não sei se seria interessante pegar a galera e reiniciar com uma nova linguagem, que na minha opinião, não acrescenta tanto para justificar sua existência… mas claro isso é a minha opinião…

Não tenho tanta certeza se por aqui as vagas de EJB3 são o que a gente mais vê hoje em dia, alguém se arriscou a fazer um comparação semelhante nos sites de vagas ???

Aqui eu vejo que teve um grande boom (boom de explosão de projetos que ficaram nojentos) por causa do EJB 2.x, o que fazia muita gente tremer ao ouvir falar em EJB, com a versão 3, quem foi se atualizando pode ver que o cenário é outro e valia a pena pensar novamente na tecnologia, tbm acho que aos poucos será feita a troca de spring por EJB 3.x.

Quanto as vagas, muito projetos usam o spring lá e nem sabem direito porque, como “não usam” na verdade nada do framework, ele ta lá só injetando alguma coisa, eles destacam EJB3 por realmente necessitar do conhecimento tecnico do desenvolvedor.

Acho esso sentimento do pessoal do Spring, e de seus avidos defensores, de dominancia e superioridade um imensa criançisse sem limites.

Falar que EJB 2 não presta é um imbecilidade, pois foi por conta dos erros do mesmo que o pessoal do Spring e de outras tecnologias conseguiram evoluir a ideia de desenvolvimento de aplicações empresariais. Foi com o erros do Spring que novas tecnologias também estão melhorando o desenvolvimento de aplicações empresariais. O mundo Java e de tecnologia é sempre uma evolução constante e parece que o Spring se acha no topo, ao lado dos deuses do olimpo, em todos os quesitos que você imaginar.

O que faz uma aplicação OTIMA não é o fato de utilizar Spring ou não, de usar EJB 3 ou não. O que faz uma aplicação de sucesso é um conjunto de fatores onde a tecnologia usada pouco importa, como processo, como ter a capacidade de elaborar prazos que realmente não alcançaveis, etc…

A verdade é que o Spring, apesar de uma otima solução até agora, não é mais a unica opção otima como anteriormente.

Para Java EE e melhor para aplicações empresariais :arrow: Seam
Para um DI realmente simples :arrow: Guice
AOP ??? :arrow: Who cares???
Web :arrow: JSF e Struts 2 -> Quem se importa com Spring MVC atualmente???

O mundo mudou e achar que Spring é a bala de prata, como milhoes de gente acha, é um atentado ao bom senso. Comparar Spring com EJB 2 é negar a evolução de outras plataformas.

É engraçado que esse sentimento só ocorre com o Spring, impressionante… Nunca vi o hibernate contra o JPA (que foi uma evolução natural das coisas), contra iBatis, contra Top link, apesar de serem concorrentes, parece que existe o minimo de respeito, imagino… Mas na camada transacional, a camada de negocios, PQP… Parece bicho, ou bichas, vai entender…

A questão não é se EJB é melhor ou pior que Spring.

E depois quando ele compara Rails a EJB e Spring eu realmente não entendi nada. O que EJB tem haver com Rails? Rails para sistemas disbribuídos? Acho que ele se confundiu…

A questão sobre EJB é que poucos projetos justificam o seu uso. E mesmo para esses poucos projetos vc pode tranquilamente usar outras soluções para sistemas distribuídos como xFire, RMI, SOAP, REST e por aí vai… E para mensagens assíncronas, mais raras ainda, vc pode usar openjms. Não vou entrar no mérito se essas soluções alternativas são melhores ou piores do que EJB. Eu particularmente sempre fugi e continuarei fugindo de applications servers.

Se alguém discorda por favor se manifeste: “A grande maioria dos projetos não são distribuídos logo NÃO precisam de EJB.” Usar EJB nesses casos é realmente lamentável, como sempre foi.

Só faltou ele dizer que o Rails é um lixo porque não tem chamadas remotas ou mensagens assíncronas… :frowning:

Dependeeeeeee… Como tudo na vida depende… Concordo que o erro do EJB é negar pra que ele serve, que é o desenvolvimento de aplicações distribuídas. Mas o modelo do EJB3 agora suporta de forma não tao burocratica o desenvolvimento de aplicações nao distribuídas. O caminho dele é ser a solução para esses dois tipos de cenário.

Enfim, o que escolhe EJB3 e até EJB 2 ou não, é um plano de arquitetura que possui suas justificativas, que envolve familariedade dos desenvolvedores com a tecnologia, suporte decente dos fornecedores, etc. Escolher tecnologia só por ela faz tal coisa mais “bonitinha” é lamentavel, isso sim.

que o Spring nasceu como sendo a criptonita das “merdas” do java (como EJB2) que, somente com lavagem cerebral o pessoal acreditava que era bom (como alguns users do fórum que metem o pau no hibernate e defendem até a morte os Entity Beans do EJB 2.1) era o fator principal pra acreditar que num futuro não muito próximo que haveria uma certa dependência “extrema” entre Java e Spring (ou seja: se continuassem nessa linha de raciocínio do EJB) e agora estamos ae, colhendo os frutos

hoje em dia, pelo menos pra mim, spring se tornou algo que está em TODOS meus projetos: São tantas facilidades entregues de mão beijadas que parece que a cada dia a galera taca um f*-se no que vem de padronização da sun (como EJB). Qual a justificativa de se usar EJB?!

o que aconteceu é que a reviravolta que rolou no mundo JavaEE (1.4 -> 5) fez muitos desses conceitos serem repensados, cujo qual o principal seria “poxa, qual a necessidade de se usar Spring agora?”

só uma pergunta: quem aqui já usou o Seam?

quem já usou Seam pode afirmar que, se tem algo pra bater rails, o nome é JBoss Seam

Totalmente agreed! Quase me emocionei quando eu ví o Seam trabalhando hahaha =)

Um DI REALMENTE SUPER SIMPLES

Me =) você deve dizer isso porque não teve nenhuma situação cujo qual fosse realmente necessário

Realmente, nem você, nem eu, nem ninguém do fórum praticamente se importa com SpringMVC por fatores bem simples: Quem usa no Brasil?
Com excessão do Brasil, outros países como EUA, UK (e outros países europeus), India e afins, analizando as pesquisas, principalmente as que rolaram no Javapolis, mostram que pra Web o SpringMVC é o mais utilizado, seguido de JSF, Struts 1 e Struts 2

poxa depois eu posto mais, to ubber ocupado agora heuiaoea ;*

Não sei então se isso tem acontecido somente comigo, mas as últimas 3 empresas que passei, os sistemas eram/são realmente distribuídos, e a facilidade que EJB3 trouxe para este tipo de desenvolvimento, para mim não justificaria utilizar soluções como WS, SOAP, RMI, REST. Ainda mais com a facilidade de poder disponibilizar meus EJBs como WebServices para outras plataformas(que é o que eu tenho feito).

EJB2 concordo que era bem trabalhoso de se utilizar, mas ainda assim eu particularmente achava mais tranquilo de se utilizar com minhas equipes do que aquele monte de xmls do Spring. Com o advento do EJB3, eu não tenho nenhum motivo que me empolgue em utilizar Spring.

Ps: Estou me referindo unicamente a Session Beans.

Bill Burke só estava tentando botar medo para vender a idéia que os desenvolvedores Java têm que se unir sob a bandeira do EJB3 ou perecer de fome enquanto Rubyistas roubam seus empregos e suas mulheres.

Eu pessoalmente não entendo pra que perder tempo dando ouvidos a gente como o Mr. Burke, que não sabe nem quer saber o que é desenvolver uma aplicação pra resolver problemas do mundo real, e ainda desdenha de quem se preocupa em disponibilizar para outros soluções que funcionam para si em vez de se envolver com politicagem.

[quote=Leozin]só uma pergunta: quem aqui já usou o Seam?

quem já usou Seam pode afirmar que, se tem algo pra bater rails, o nome é JBoss Seam[/quote]

Se a única coisa que Java tem pra bater Rails é o Seam, então tá na hora de ir comprar os pregos do caixão :lol:

Eu já fiz alguns projetos usando o Seam pra Java ele realmente é uma mão na roda, especialmente considerando que JSF em si, purinho, é uma cagada completa (você só precisa ter que usar um select em um form HTML ou precisar de alguma coisa como os antigos templates do tiles). É tao complicado que pra tudo tem que ter framework, como Facelets pra templates, Seam pra DI e gerenciamento dos managed beans e frameworks de desenvolvimento de componentes.

Você já escreveu uma aplicação de verdade com Rails? :slight_smile:

De qualquer forma, comparar Rails com frameworks em Java e querer dizer que “um concorre com o outro” ou “um é melhor que o outro” é perda de tempo. Ruby é Ruby e Java é Java, só sabe quem é melhor quem já esteve dos dois lados.

[quote=Maurício Linhares]
Se a única coisa que Java tem pra bater Rails é o Seam, então tá na hora de ir comprar os pregos do caixão :lol:

Eu já fiz alguns projetos usando o Seam pra Java ele realmente é uma mão na roda, especialmente considerando que JSF em si, purinho, é uma cagada completa (você só precisa ter que usar um select em um form HTML ou precisar de alguma coisa como os antigos templates do tiles). É tao complicado que pra tudo tem que ter framework, como Facelets pra templates, Seam pra DI e gerenciamento dos managed beans e frameworks de desenvolvimento de componentes.

Você já escreveu uma aplicação de verdade com Rails? :slight_smile:

De qualquer forma, comparar Rails com frameworks em Java e querer dizer que “um concorre com o outro” ou “um é melhor que o outro” é perda de tempo. Ruby é Ruby e Java é Java, só sabe quem é melhor quem já esteve dos dois lados.[/quote]

É eu trabalhei pouco com Rails mesmo e também acho du kr***

mas assim, tem algo que tu acha que em Java pode bater rails? Algo que pode se comparar com Rails? Ou você acha que cada um server pra uma coisa?

[quote=Leozin]É eu trabalhei pouco com Rails mesmo e também acho du kr***

mas assim, tem algo que tu acha que em Java pode bater rails? Algo que pode se comparar com Rails? Ou você acha que cada um server pra uma coisa?[/quote]

São coisas diferentes, e cada um tem o seu espaço, escrever uma aplicação web em Java hoje é uma má idéia, do mesmo jeito que escrever uma aplicação usando mensageria assíncrona em Ruby, assim como escrever uma aplicação de telas de cadastro e relatórios em Erlang. Bill e Rod estão defendendo os seus “produtos” e empresas, nós temos que defender os nossos empregos, não os deles.

Seria bom tentar entender muito bem entendido quais são os pontos fortes de RoR:

  • Ruby é mais poderosa, mais pragmática, mais rápida (de se programar), mais amigável para expressar lógicas, tem closures, etc.

  • Ruby é menos simples do que Java. (ponto fraco)

  • Rails é FULL-STACK e isso pra mim faz toda a diferença. Conheço outros 3 frameworks em Java que são full-stack: Rife, Seam (graças ao JBoss logo poderia ser questionável) e XXXXXXXXXXX (estou proibido de citar esse último).

  • Ruby tem metaprogramação e isso abre um leque de opções e sacadas maravilhosas. Será que o Java um dia terá um método Class.createMethod ?

  • Não fale que Rails é bom porque tem Convention Over Configuration assim como vc não deve falar que ele é bom porque suporta validação.

  • Aquelas sacadas de criar uma aplicação completa digitando rails addressbook é bem legal. Talvez isso seja equivalente a um bom plugin do Eclipse.

  • ActiveRecord é legal. Me parece que toda essa flexibilidade e mágica é conseguida via metaprogramação, ou seja, impossível (por enquanto) em Java.

  • Turnaround: Ruby não precisa compilar nem restartar nada quando vc está desenvolvendo. Isso sempre foi um problema do Java, mas tem empresas desenvolvendo soluções pra isso: JavaRebel (http://www.zeroturnaround.com/)

Eu nunca usaria Ruby ou RoR para um sistema/site mais parrudo e sinistro. Prefiro pagar o preço do Java mais ganhar de graça sua robustez e plataforma. Agora aplicações web, sistemas não-distribuídos com um front-end na Internet, etc. RoR cai como uma luva. E esses projetos me parecem que são a maioria. E cada vez que alguém escolhe utilizar EJB ou Spring para esses projetos está na minha opinIão colaborando sim para a migração de mais e mais gente para RoR, e com a devida razão.

O Seam é full stack? Desde quando? O Seam usa JPA ou Hibernate pra persistência, usa JSF pra view (eles vendem que dá pra colocar outras coisas, mas não é simples de se fazer). O Seam é um monte de glue-code pra tornar JSF e EJB factível em aplicações web comuns, uma tarefa tão titânica que deu num framework do tamanho do Seam.

E de qualquer forma, o ActiveRecord é externo ao Rails (agora no Rails 2 é externo “de verdade”), usa-se ele apenas por costume e falta de coisa melhor.

Esse é o peixe que eles vendem. Quando eles mostram um exemplo, eles só mostram um facade, um bean anotado com hibernate e pronto: a aplicação está funcionando. Eu acreditei…

Depender de Hiberante, JPA ou ActiveRecord me parece que não invalida o título de full-stack. O que se deve fazer é prover a melhor integração possível com esses frameworks já que eles têm altíssimas chances de serem utilizados.

O livro “Learning Ruby” fala o seguinte sobre a característica full-stack do RoR:

Esqueceram de citar o Grails. Eu estou adotando este framework e apostando bastante nele para a plataforma Java em desenvolvimento ágil. Uma porque Rails em AS é lento por culpa do JRuby. Outra porque Groovy está ficando interessante e, já roda em JVM com performance superior a JRuby.
O incrível que somente a Sun e a Oracle fizeram sites com JRuby e eles rodam legal. Agora, o que está por trás daqueles sites é que são elas. Precisa de servidor que criança não costuma ter pra brincar.

saoj, não entendi essa de Ruby é menos simples que Java?