EJB2 contre EJB3
EJB (Enterprise JavaBeans) est une API Java (Application Programming Interface) figurant 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 de l'EJB, il a été constaté que les solutions aux problèmes trouvés dans le code métier back-end étaient fréquemment réimplémentées par les programmeurs. En conséquence, EJB a été introduit pour résoudre ces problèmes courants tels que la persistance, l'intégrité transactionnelle et la sécurité. EJB fournit des méthodes standard pour gérer ces problèmes de back-end, en spécifiant comment le serveur d'applications doit traiter les transactions, intégrer les services JPA (Java Persistence API), gérer le contrôle de concurrence, 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 (Java Remote Method Invocation interface over the Internet Inter-Orb Protocol),développez des services Web, invoquez 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 la spécification pour le développement d'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 regroupement de connexions. Un autre objectif était de permettre aux programmeurs d'écrire un «Bean» une fois et de l'exécuter 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 avait pour but de permettre aux composants développés par différents fournisseurs d'interagir facilement et de 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 a rendu la vie des programmeurs très facile en leur permettant d'utiliser des annotations à la place des descripteurs de déploiement qui étaient utilisés dans les versions précédentes. EJB3 contient une interface métier et un bean entité spécifique qui peuvent implémenter cette interface métier, supprimant ainsi le besoin d'utiliser des interfaces home / remote et le fichier ejb-jar.xml. Les performances globales d'EJB3 sont nettement améliorées par rapport à EJB2, et il y a une augmentation considérable de la configurabilité, de la flexibilité et de la portabilité dans cette version d'EJB.
Quelle est la différence entre EJB2 et EJB3?
EJB3 a une amélioration notable de la configuration et des performances par rapport à EJB2. L'une des raisons de cette amélioration des performances est l'utilisation du 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 d'EJB3 est beaucoup plus simple car le programmeur n'a pas besoin d'implémenter les interfaces Home / Remote et autres (par exemple SessionBean), ce qui supprime le besoin d'utiliser des méthodes de rappel de conteneur (telles que ejbActivate et ejbStore).
De plus, EJB3 est meilleur que EJB2 dans les domaines de la flexibilité et de la portabilité. Par exemple, il est facile de convertir des entités EJB3 en DAO (Data Access Object) et vice versa car les entités EJB3 sont légères (par opposition aux entités EJB2 lourdes, qui implémentent les interfaces mentionnées ci-dessus). 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 présentait plusieurs limitations. EJB3 supprime tous les problèmes de portabilité d'EJB2 (qui utilise des beans entité pour l'accès à la base de données) en prenant en charge un JPA plus généralisé pour toutes les transactions de données.
Contrairement à EJB2, qui nécessite un conteneur EJB pour s'exécuter, EJB3 peut être exécuté dans une JVM indépendante (Java Virtual Machine) sans avoir à utiliser de conteneurs (cela est possible car il n'implémente pas 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 est que EJB3 peut utiliser la sécurité basée sur les annotations, tandis que EJB2 utilise la sécurité basée sur des descripteurs de déploiement. Cela signifie que les tâches de configuration et de configuration sont beaucoup plus faciles dans EJB3, et il y a une réduction considérable des frais généraux de performance par rapport à EJB2.