sexta-feira, 3 de outubro de 2008

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

7 comentários:

Eli Renato disse...

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.

sconstantino disse...

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

Ricardo Ferreira disse...

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,

Samuel Martins Delfim disse...

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,

Pablo Guimarães disse...

Gostei do post, eu também puxaria a sardinha para ejb3.

Pablo Guimarães disse...

Gostei do post, eu também puxaria a sardinha para ejb3.

Pablo Guimarães disse...

Gostei do post, eu também puxaria a sardinha para ejb3.