EJB2 gegen EJB3
EJB (Enterprise JavaBeans) ist eine Java-API (Application Programming Interface), die in der Java EE-Spezifikation (Java Platform, Enterprise Edition) enthalten ist. EJB beschreibt ein Architekturmodell für die Entwicklung von Unternehmensanwendungen. Dies ist ein verwaltetes serverseitiges Modell, das die Geschäftslogik der Unternehmensanwendung erfassen kann. IBM ist der ursprüngliche Entwickler von EJB, der es 1997 entwickelt hat. Sun Microsystems nahm es 1999 an.
Vor der Einführung von EJB wurde festgestellt, dass Lösungen für Probleme, die im Backend-Geschäftscode gefunden wurden, häufig von den Programmierern erneut implementiert wurden. Infolgedessen wurde EJB eingeführt, um diese häufigen Probleme wie Persistenz, Transaktionsintegrität und Sicherheit anzugehen. EJB bietet Standardmethoden für die Behandlung dieser Back-End-Probleme. Dazu wird angegeben, wie der Anwendungsserver Transaktionen verarbeiten soll, die Integration in JPA-Dienste (Java Persistence API), die gleichzeitige Steuerung, die Behandlung von JMS-Ereignissen (Java Message Service) und das Beheben von Namensproblemen mit JNDI ( Java Naming and Directory Interface), sichere Programme mit JCE (Java Cryptography Extension) und JAAS (Java Authentication and Authorization Service) entwickeln, Komponenten bereitstellen, Remote-Kommunikation mit RMI-IIOP (Java Remote Method Invocation-Schnittstelle über das Internet Inter-Orb-Protokoll) Web-Services entwickeln, asynchrone Methoden aufrufen und den Timer-Service verwenden.
EJB2
EJB2 (EJB 2.0) wurde am 22. August 2001 veröffentlicht. Es beschreibt Spezifikationen für die Entwicklung verteilter objektorientierter Anwendungen in Java durch Kombination von Tools, die von verschiedenen Herstellern entwickelt wurden. Eines der Hauptziele von EJB2 war es, Programmierern die Entwicklung von Unternehmensanwendungen zu ermöglichen, ohne die Details der unteren Ebenen wie Multithreading und Verbindungs-Pooling verstehen zu müssen. Ein weiteres Ziel war es, Programmierern zu ermöglichen, einmalig ein „Bean“ zu schreiben und ohne Rekompilierung von überall aus zu laufen (unter Beachtung des Slogans „Einmal schreiben, irgendwo ausführen“ der Java-Programmiersprache). Darüber hinaus beabsichtigte EJB2, Komponenten, die von verschiedenen Anbietern entwickelt wurden, einfach miteinander zu interagieren, und Herstellern zu ermöglichen, Erweiterungen für ihre Produkte zu schreiben, die EJBs unterstützen.
EJB3
EJB3 (EJB 3.0) wurde am 11. Mai 2006 veröffentlicht. EJB3 machte Programmierern das Leben sehr einfach, indem es ihnen ermöglicht wurde, Annotationen anstelle von Implementierungsdeskriptoren zu verwenden, die in früheren Versionen verwendet wurden. EJB3 enthält eine Geschäftsschnittstelle und eine bestimmte Entitäts-Bean, die diese Geschäftsschnittstelle implementieren kann, wodurch die Verwendung von Heim- / Fernschnittstellen und der Datei ejb-jar.xml entfällt. Die Gesamtleistung von EJB3 ist im Vergleich zu EJB2 erheblich verbessert. In dieser Version von EJB ist die Konfigurierbarkeit, Flexibilität und Portabilität erheblich verbessert.
Was ist der Unterschied zwischen EJB2 und EJB3??
EJB3 hat eine merkliche Verbesserung der Konfiguration und Leistung gegenüber EJB2. Ein Grund für diese Leistungsverbesserung ist die Verwendung des POJO (Plain Old Java Object) mit Metadaten und XML-Bereitstellungsdeskriptoren von 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 Schnittstellen (z. B. SessionBean) implementieren muss, wodurch die Verwendung von Container-Callback-Methoden (wie ejbActivate und ejbStore) entfällt..
Darüber hinaus ist EJB3 in den Bereichen Flexibilität und Portabilität besser als EJB2. Zum Beispiel 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 schweren EJB2-Entitäten, die die oben genannten Schnittstellen implementieren). In EJB3 geschriebene Datenbankabfragen sind sehr flexibel, da anstelle der älteren Version von EJB-QL eine verfeinerte EJB-QL verwendet wird, die einige Einschränkungen aufwies. EJB3 entfernt alle Probleme mit der Portabilität von EJB2 (die Entity-Beans für den Datenbankzugriff verwendet), indem sie allgemeinere JPA für alle Datentransaktionen unterstützt.
Im Gegensatz zu EJB2, das einen EJB-Container zur Ausführung benötigt, kann EJB3 in einer unabhängigen JVM (Java Virtual Machine) ausgeführt werden, ohne Container verwenden zu müssen (dies ist möglich, da keine Standardschnittstellen implementiert werden). Im Gegensatz zu EJB2 ist EJB3 problemlos mit von Drittanbietern angebotenen Persistenz-Providern steckbar. Ein weiterer wichtiger Unterschied zwischen EJB3 und EJB2 besteht darin, dass EJB3 auf Annotations basierende Sicherheit verwenden kann, während EJB2 auf Deployment-Deskriptoren basierende Sicherheit verwendete. Dies bedeutet, dass Konfigurations- und Setup-Aufgaben in EJB3 viel einfacher sind und der Performance-Overhead im Vergleich zu EJB2 erheblich reduziert wird.