EJB 3 versus Spring

Samuel Martins Delfim 3 de outubro de 2008 5
EJB 3 versus Spring
O objetivo dos frameworks é esconder a complexidade dos desenvolvedores (como, por exemplo, controle de transações, segurança e persistência), facilitar o reúso de código, melhorar a produtividade e conseqüentemente melhorar a qualidade do software. E neste ponto podemos dizer que tanto Spring quanto o EJB 3 cumprem muito bem este objetivo.O que podemos dizer então sobre os dois frameworks:

  • O framework Spring é um framework popular, Open Source e é desenvolvido inicialmente pela empresa Interface21 Inc. Sua arquitetura é baseada principalmente em arquivos de configuração XML. O framework Spring não é um padrão de mercado e não possui apoio de grandes empresas como IBM, Oracle e Sun.
  • O framework EJB 3 é um padrão de mercado definido pela JCP e é suportado pelas maiores empresas que utilizam J2EE. Possuem implementações disponíveis pelas empresas Jboss e Oracle. EJB 3 faz forte uso de anotações disponíveis a partir de Java 5. As versões anteriores de EJB se mostraram pouco produtivas e complicadas, o que foi modificado na versão 3 do framework.

Uma vantagem que vejo é o fato de EJB 3 ser independente de empresas. Como exemplo disto, temos o fato do Oracle usar o TopLink como implementação da especificação JPA e o JBoss ter como implementação o Hibernate.

Por outro lado temos que podemos rodar o Spring em qualquer servidor de aplicação, mas pelo fato do Spring não ser um padrão da indústria estamos travados ao Spring e os serviços fornecidos por ele.

Outra vantagem do EJB 3 é o fato de como o framework está fortemente acoplado com o servidor, estes servidores podem melhorar suas performance atuando em conjunto com o framework. A integração entre JTA e JPA com os servidores é bem alta o que faz com que os servidores sejam extremamente otimizados para este tipo de operação com EJB3.
Uma vantagem do Spring seria a facilidade de utilizar a injeção de quaisquer componentes. Com EJB 3 só se possui controle dos componentes que são Beans do EJB e também do contexto de persistência.

Com relação a XML ou anotação, temos EJB 3 utilizando preferencialmente anotações e Spring utilizando preferencialmente XML. Isto, podemos dizer que é a gosto do freguês. Particularmente prefira a anotações por ser menos verboso, mais robusto, além de possuir verificação de consistência em tempo de compilação.

Como conclusão, temos que ambos, são ótimos frameworks, sendo que cada um deles possui suas vantagens. Particularmente em um projeto novo decidiria pelo EJB 3 devido ao maior suporte das grandes empresas e por ser um padrão.

É isto aí pessoal. Espero que isto ajude alguém…

5 Comentários »

  1. Eli Renato 4 de outubro de 2008 de 1:43 pm - Reply

    Gostei do Post, eu estava procurando justamente informações sobre isto. Sou desenvolvedor Java Web há apenas um mês e meio e venho trabalhando com EJB 3.0 e confesso, gostei muito!!!, já estou ansioso para ver o EJB 3.1. Porém Eu gostaria de poder usar EJB até para os ambientes Web mais simples com outros servidores leves tipo Tomcat e agora com o EJB 3.1 Lite, vai ser uma maravilha.

  2. Silvio 6 de outubro de 2008 de 12:05 pm - Reply

    Gostei do seu post, porém é evidente que seu post “puxa a sardinha” totalmente para o EJB3 hehehe.

  3. Ricardo Ferreira 10 de outubro de 2008 de 1:22 am - Reply

    Fala Samuca,

    Cara, um ponto importante sobre comparar Spring e EJB3 é que você deve pensar bem mais no que simplesmente “Do ponto de vista do programador”.

    EJB3, ou simplesmente EJB, é uma tecnologia para objetos distribuidos e mensageria através de MDBs. Do ponto de vista arquitetural, usar ou não EJB gira mais em torno de premissas arquiteturais voltadas a remoting, serialização, gerência de recursos do servidor e principalmente: Escalabilidade!

    O Spring é um framework IoC + AOP que não oferece nem 10% dos recursos de tempo de execução que a tecnologia EJB oferece (Leia-se, o ApplicationServer J2EE).

    Vale lembrar também que, o Spring introduz uma dependência arquitetural: Ele estimula o uso de Web Centric 🙂

    Num próximo post sobre o assunto, tenta analisar os dois sob um prisma menos voltado a ótica do desenvolvedor, e mais sobre a da aplicação a ser construida.

    Abraços,

  4. Samuel Martins Delfim 14 de outubro de 2008 de 1:07 pm - Reply

    Obrigado pelos comentários pessoal,

    Obrigado Ricardo pelo toque a respeito do que deve ser escrito. Vou tentar utilizar esta abordagem agora para os próximos posts…

    []s,

  5. Acácio Macedo 30 de março de 2012 de 12:34 pm - Reply

    Bem já trabalhei com os dois frameworks e diria que ambos devem ser utilizados segundo a necessidade do projeto. Como foi dito por alguns colegas o EJB esta voltado aos sistemas distribuídos, porém este não se torna um fato relevante em projetos que não possuem essa necessidade. O Spring por sua vez utiliza menos recurso de maquina, tem fácil implementação e esta apto a gerenciar diversos recursos arquiteturais a serem utilizados. O que muitas vezes acontece é o mal uso da tecnologia, sendo essa qualquer que seja, o que reflete de forma negativa para toda a solução proposta, como dizem muitos fazem um canhão para matar uma formiga e outros fazem uma chinela pra matar um elefante. Fica então sob a responsabilidade do arquiteto definir a arquitetura segundo a real necessidade do projeto.

Deixe uma resposta »