EJB2 gegen EJB3
EJB (Enterprise JavaBeans) ist eine Java API (Application Programming Interface) innerhalb der Java EE (Java Platform, Enterprise Edition) Spezifikation. EJB beschreibt ein Architekturmodell für die Entwicklung von Unternehmensanwendungen. Dies ist ein verw altetes serverseitiges Modell, das die Geschäftslogik der Unternehmensanwendung erfassen kann. IBM ist der ursprüngliche Schöpfer von EJB, der es 1997 entwickelt hat. Sun Microsystems hat es 1999 übernommen.
Vor der Einführung von EJB wurde festgestellt, dass Lösungen für Probleme, die im Back-End-Geschäftscode gefunden wurden, häufig von den Programmierern neu implementiert wurden. Infolgedessen wurde EJB eingeführt, um diese häufigen Probleme wie Persistenz, Transaktionsintegrität und Sicherheit anzugehen. EJB bietet Standardmethoden zum Umgang mit diesen Back-End-Problemen, indem es angibt, wie der Anwendungsserver Transaktionen verarbeiten, in JPA-Dienste (Java Persistence API) integrieren, die Parallelitätssteuerung handhaben, JMS-Ereignisse (Java Message Service) handhaben, Namensprobleme mit JNDI lösen soll (Java Naming and Directory Interface), sichere Programme mit JCE (Java Cryptography Extension) und JAAS (Java Authentication and Authorization Service) entwickeln, Komponenten bereitstellen, remote mit RMI-IIOP (Java Remote Method Invocation Interface over the Internet Inter-Orb Protocol) kommunizieren, Webdienste entwickeln, asynchrone Methoden aufrufen und den Timer-Dienst verwenden.
EJB2
EJB2 (EJB 2.0) wurde am 22. August 2001 veröffentlicht. Es beschreibt eine Spezifikation für die Entwicklung verteilter objektorientierter Anwendungen in Java durch die Kombination von Tools, die von verschiedenen Anbietern entwickelt wurden. Eines der Hauptziele von EJB2 war es, Programmierern die Möglichkeit zu geben, Unternehmensanwendungen einfacher zu entwickeln, ohne sich mit Details auf niedriger Ebene wie Multithreading und Connection Pooling auskennen zu müssen. Ein weiteres Ziel war es, Programmierern zu ermöglichen, eine „Bean“einmal zu schreiben und überall ohne Neukompilierung auszuführen (getreu dem Slogan „Einmal schreiben, überall ausführen“der Programmiersprache Java). Darüber hinaus soll EJB2 es ermöglichen, dass Komponenten, die von verschiedenen Anbietern entwickelt wurden, problemlos zusammenarbeiten und dass Anbieter Erweiterungen für ihre Produkte schreiben können, die EJBs unterstützen.
EJB3
EJB3 (EJB 3.0) wurde am 11. Mai 2006 veröffentlicht. EJB3 machte Programmierern das Leben sehr leicht, indem es ihnen ermöglichte, Anmerkungen anstelle von Deployment-Deskriptoren zu verwenden, die in früheren Versionen verwendet wurden. EJB3 enthält eine Geschäftsschnittstelle und eine bestimmte Entity-Bean, die diese Geschäftsschnittstelle implementieren kann, wodurch die Notwendigkeit entfällt, Home/Remote-Schnittstellen und die Datei ejb-jar.xml zu verwenden. Die Gesamtleistung von EJB3 wurde im Vergleich zu EJB2 erheblich verbessert, und es gibt eine beträchtliche Steigerung der Konfigurierbarkeit, Flexibilität und Portabilität in dieser Version von EJB.
Was ist der Unterschied zwischen EJB2 und EJB3?
EJB3 weist gegenüber EJB2 eine deutliche Verbesserung in Konfiguration und Leistung auf. Ein Grund für diese Leistungsverbesserung ist die Verwendung von POJO (Plain Old Java Object) mit Metadaten und XML-Deployment-Deskriptoren durch EJB3 anstelle von JNDI-Lookups, die in EJB2 für Objektreferenzen verwendet werden. Die Konfiguration von EJB3 ist viel einfacher, da der Programmierer keine Home/Remote-Schnittstellen und andere (z. B. SessionBean) implementieren muss, was die Verwendung von Container-Callback-Methoden (wie ejbActivate und ejbStore) überflüssig macht.
Außerdem ist EJB3 in den Bereichen Flexibilität und Portabilität besser als EJB2. Beispielsweise ist es einfach, EJB3-Entitäten in DAO (Data Access Object) und umgekehrt zu konvertieren, da EJB3-Entitäten leichtgewichtig sind (im Gegensatz zu den schwergewichtigen EJB2-Entitäten, die die oben genannten Schnittstellen implementieren). In EJB3 geschriebene Datenbankabfragen sind sehr flexibel, da sie anstelle der älteren Version von EJB-QL, die mehrere Einschränkungen hatte, ein verfeinertes EJB-QL verwenden. EJB3 beseitigt alle Portabilitätsprobleme von EJB2 (das Entity-Beans für den Datenbankzugriff verwendet), indem ein allgemeineres JPA für alle Datentransaktionen unterstützt wird.
Im Gegensatz zu EJB2, das zur Ausführung einen EJB-Container benötigt, kann EJB3 in einer unabhängigen JVM (Java Virtual Machine) ausgeführt werden, ohne dass Container verwendet werden müssen (dies ist möglich, da es keine Standardschnittstellen implementiert). Im Gegensatz zu EJB2 lässt sich EJB3 problemlos mit Persistenzanbietern kombinieren, die von Drittanbietern angeboten werden. Ein weiterer wichtiger Unterschied zwischen EJB3 und EJB2 besteht darin, dass EJB3 annotationsbasierte Sicherheit verwenden kann, während EJB2 auf Deployment-Deskriptoren basierende Sicherheit verwendet. Dies bedeutet, dass Konfigurations- und Einrichtungsaufgaben in EJB3 viel einfacher sind und der Performance-Overhead im Vergleich zu EJB2 erheblich reduziert wird.