Diferença entre EJB2 e EJB3

EJB2 vs EJB3

EJB (Enterprise JavaBeans) é uma API Java (Application Programming Interface) encontrada na especificação Java EE (Java Platform, Enterprise Edition). O EJB descreve um modelo de arquitetura para o desenvolvimento de aplicativos corporativos. Este é um modelo gerenciado do lado do servidor capaz de capturar a lógica de negócios do aplicativo corporativo. A IBM é o criador original da EJB que a desenvolveu em 1997. A Sun Microsystems a adotou em 1999.

Antes da introdução do EJB, verificou-se que as soluções para problemas encontrados no código comercial de back-end eram frequentemente reimplementadas pelos programadores. Como resultado, o EJB foi introduzido para resolver esses problemas comuns, como persistência, integridade transacional e segurança. O EJB fornece maneiras padrão de lidar com esses problemas de back-end, especificando como o servidor de aplicativos deve processar transações, integrar-se aos serviços JPA (Java Persistence API), manipular controle de simultaneidade, manipular eventos JMS (Java Message Service), resolver problemas de nomeação com JNDI ( Java Naming and Directory Interface), desenvolva programas seguros com o JCE (Java Cryptography Extension) e o JAAS (Java Authentication and Authorization Service), implante componentes, comunique-se remotamente com o RMI-IIOP (Interface de Invocação Remota de Método Java pelo Internet Inter-Orb Protocol) , desenvolva serviços da Web, invoque métodos assíncronos e use o serviço Timer.

EJB2

O EJB2 (EJB 2.0) foi lançado em 22 de agosto de 2001. Ele descreve as especificações para o desenvolvimento de aplicativos orientados a objetos distribuídos em Java, combinando ferramentas desenvolvidas por diferentes fornecedores. Um dos principais objetivos do EJB2 era permitir que os programadores desenvolvessem aplicativos corporativos com mais facilidade, sem precisar entender detalhes de baixo nível, como multiencadeamento e pool de conexões. Outro objetivo era permitir que os programadores escrevessem um “Bean” uma vez e executassem em qualquer lugar sem recompilação (aderindo ao slogan “escreva uma vez, execute em qualquer lugar” da linguagem de programação Java). Além disso, o EJB2 pretendia permitir que os componentes desenvolvidos por diferentes fornecedores interoperassem facilmente e permitisse que os fornecedores escrevessem extensões para seus produtos que podem suportar EJBs.

EJB3

O EJB3 (EJB 3.0) foi lançado em 11 de maio de 2006. O EJB3 facilitou muito a vida dos programadores, permitindo que eles usassem anotações no lugar dos descritores de implantação usados ​​nas versões anteriores. O EJB3 contém uma interface de negócios e um bean de entidade específico que pode implementar essa interface de negócios, removendo a necessidade de usar interfaces domésticas / remotas e o arquivo ejb-jar.xml. O desempenho geral do EJB3 é muito melhorado em comparação com o EJB2 e há um aumento considerável na configurabilidade, flexibilidade e portabilidade nesta versão do EJB..

Qual é a diferença entre EJB2 e EJB3?

O EJB3 possui uma melhoria notável na configuração e desempenho em relação ao EJB2. Um motivo para essa melhoria de desempenho é o uso do POJO (Plain Old Java Object) com metadados e Descritores de Implementação XML do EJB3 em vez de pesquisas JNDI usadas no EJB2 para referências de objetos. A configuração do EJB3 é muito mais simples porque o programador não precisa implementar interfaces Home / Remotas e outras (por exemplo, SessionBean), o que elimina a necessidade de usar métodos de retorno de chamada de contêiner (como ejbActivate e ejbStore).

Além disso, o EJB3 é melhor que o EJB2 nas áreas de flexibilidade e portabilidade. Por exemplo, é fácil converter entidades EJB3 em DAO (Data Access Object) e vice-versa porque as entidades EJB3 são leves (em oposição às entidades pesadas EJB2, que implementam as interfaces mencionadas acima). As consultas ao banco de dados gravadas no EJB3 são muito flexíveis porque usam um EJB-QL refinado, no lugar da versão mais antiga do EJB-QL, que tinha várias limitações. O EJB3 remove todos os problemas de portabilidade do EJB2 (que usa beans de entidade para acesso ao banco de dados), suportando JPA mais generalizada para todas as transações de dados.

Diferente do EJB2, que precisa de um contêiner EJB para ser executado, o EJB3 pode ser executado em uma JVM (Java Virtual Machine) independente sem precisar usar contêineres (isso é possível porque não implementa interfaces padrão). Diferentemente do EJB2, o EJB3 é facilmente conectável a provedores de persistência oferecidos por terceiros. Outra diferença importante entre o EJB3 e o EJB2 é que o EJB3 pode usar a segurança baseada em anotação, enquanto o EJB2 usou a segurança baseada em descritores de implementação. Isso significa que as tarefas de configuração e configuração são muito mais fáceis no EJB3, e há uma redução considerável nas despesas gerais de desempenho em comparação com o EJB2.