Différence entre EJB2 et EJB3

EJB2 vs EJB3

EJB (Enterprise JavaBeans) est une API Java (Application Programming Interface) présente dans la spécification Java EE (Java Platform, Enterprise Edition). EJB décrit un modèle architectural pour le développement d'applications d'entreprise. Il s'agit d'un modèle côté serveur géré capable de capturer la logique métier de l'application d'entreprise. IBM est le créateur original d'EJB qui l'a développé en 1997. Sun Microsystems l'a adopté en 1999..

Avant l’introduction d’EJB, il était évident que les programmeurs avaient à nouveau implémenté des solutions aux problèmes rencontrés dans le code d’entreprise back-end. EJB a donc été introduit pour résoudre ces problèmes courants tels que la persistance, l’intégrité transactionnelle et la sécurité. EJB fournit des moyens standard de gérer ces problèmes d’arrière-plan en spécifiant comment le serveur d’application doit traiter les transactions, s’intégrer aux services JPA (Java Persistence API), gérer le contrôle de la simultanéité, gérer les événements JMS (Java Message Service), résoudre les problèmes de dénomination avec JNDI Java Naming and Directory Interface), développer des programmes sécurisés avec JCE (Java Cryptography Extension) et JAAS (Java Authentication and Authorization Service), déployer des composants, communiquer à distance avec RMI-IIOP (interface Java Remote Method Invocation via le protocole Internet Inter-Orb) , développez des services Web, appelez des méthodes asynchrones et utilisez le service Timer.

EJB2

EJB2 (EJB 2.0) a été publié le 22 août 2001. Il décrit les spécifications permettant de développer des applications orientées objet distribuées en Java en combinant des outils développés par différents fournisseurs. L'un des principaux objectifs d'EJB2 était de permettre aux programmeurs de développer plus facilement des applications d'entreprise sans avoir à comprendre les détails de bas niveau, tels que le multi-threading et le pooling de connexions. Un autre objectif était de permettre aux programmeurs d’écrire un «bean» une fois et d’être exécuté n'importe où sans recompilation (en adhérant au slogan «écrire une fois, exécuter n'importe où» du langage de programmation Java). En outre, EJB2 devait permettre aux composants développés par différents fournisseurs de s’interfacer facilement et permettre aux fournisseurs d’écrire des extensions pour leurs produits pouvant prendre en charge les EJB..

EJB3

EJB3 (EJB 3.0) a été publié le 11 mai 2006. EJB3 simplifiait la vie des programmeurs en leur permettant d’utiliser des annotations à la place des descripteurs de déploiement utilisés dans les versions précédentes. EJB3 contient une interface métier et un bean entité spécifique pouvant implémenter cette interface métier, éliminant ainsi le besoin d'utiliser des interfaces home / remote et le fichier ejb-jar.xml. Les performances globales d’EJB3 sont bien meilleures que celles d’EJB2, et la configurabilité, la flexibilité et la portabilité de cette version d’EJB ont considérablement augmenté..

Quelle est la différence entre EJB2 et EJB3?

EJB3 présente une amélioration notable de la configuration et des performances par rapport à EJB2. Une des raisons de cette amélioration des performances est l'utilisation de POJO (Plain Old Java Object) avec des métadonnées et des descripteurs de déploiement XML par EJB3 au lieu des recherches JNDI utilisées dans EJB2 pour les références d'objet. La configuration de EJB3 est beaucoup plus simple, car le programmeur n'a pas besoin d'implémenter d'interfaces Home / Remote et autres (par exemple, SessionBean), ce qui évite d'avoir à utiliser des méthodes de rappel de conteneur (telles que ejbActivate et ejbStore)..

De plus, EJB3 est meilleur que EJB2 en matière de flexibilité et de portabilité. Par exemple, il est facile de convertir des entités EJB3 en DAO (Data Access Object) et inversement car les entités EJB3 sont légères (par opposition aux entités EJB2 à poids élevé, qui implémentent les interfaces susmentionnées). Les requêtes de base de données écrites en EJB3 sont très flexibles, car elles utilisent un EJB-QL raffiné, à la place de l'ancienne version d'EJB-QL, qui comportait plusieurs limitations. EJB3 supprime tous les problèmes de portabilité d'EJB2 (qui utilise des beans entité pour accéder à une base de données) en prenant en charge une JPA plus généralisée pour toutes les transactions de données..

Contrairement à EJB2, qui nécessite l'exécution d'un conteneur EJB, EJB3 peut être exécuté dans une machine virtuelle Java indépendante (Java Virtual Machine) sans avoir à utiliser de conteneurs (ceci est possible car il ne met pas en oeuvre d'interfaces standard). Contrairement à EJB2, EJB3 est facilement connectable avec des fournisseurs de persistance proposés par des tiers. Une autre différence importante entre EJB3 et EJB2 réside dans le fait que EJB3 peut utiliser une sécurité basée sur les annotations, tandis que EJB2 utilisait une sécurité basée sur les descripteurs de déploiement. Cela signifie que les tâches de configuration et d'installation sont beaucoup plus simples dans EJB3 et que les frais de performances sont considérablement réduits par rapport à EJB2..