EJB2 versus EJB3
EJB (Enterprise JavaBeans) is een Java API (Application Programming Interface) die wordt gevonden in de Java EE-specificatie (Java Platform, Enterprise Edition). EJB beschrijft een architectonisch model voor de ontwikkeling van bedrijfstoepassingen. Dit is een beheerd servermodel dat in staat is om de bedrijfslogica van de bedrijfsapplicatie vast te leggen. IBM is de oorspronkelijke maker van EJB die het in 1997 heeft ontwikkeld. Sun Microsystems heeft het in 1999 goedgekeurd.
Vóór de introductie van EJB werd geconstateerd dat oplossingen voor problemen in back-end business code vaak opnieuw werden geïmplementeerd door de programmeurs. Als gevolg hiervan werd EJB geïntroduceerd om deze algemene problemen aan te pakken, zoals persistentie, transactionele integriteit en veiligheid. EJB biedt standaardmanieren om deze back-endproblemen aan te pakken, door te specificeren hoe de applicatieserver transacties moet verwerken, integreren met JPA (Java Persistence API) -services, concurrency-besturing afhandelen, JMS-gebeurtenissen (Java Message Service) afhandelen, naamgevingsproblemen met JNDI oplossen ( Java Naming en Directory Interface), ontwikkelen beveiligde programma's met JCE (Java Cryptography Extension) en JAAS (Java Authentication and Authorization Service), implementeren componenten, communiceren op afstand met RMI-IIOP (Java Remote Method Invocation-interface via internet Inter-Orb Protocol) , webservices ontwikkelen, asynchrone methoden aanroepen en de Timer-service gebruiken.
EJB2
EJB2 (EJB 2.0) is uitgebracht op 22 augustus 2001. Het beschrijft de specificaties voor het ontwikkelen van gedistribueerde objectgeoriënteerde applicaties in Java door tools te combineren die zijn ontwikkeld door verschillende leveranciers. Een van de belangrijkste doelen van EJB2 was om programmeurs in staat te stellen bedrijfsapplicaties gemakkelijker te ontwikkelen zonder details van laag niveau te hoeven begrijpen, zoals multi-threading en pooling van verbindingen. Een ander doel was om programmeurs toe te laten een "bean" te schrijven en ze ergens te laten draaien zonder opnieuw te compileren (met inachtneming van de slogan "schrijf eens, overal uit" van de Java-programmeertaal). Bovendien was EJB2 bedoeld om door verschillende leveranciers ontwikkelde componenten gemakkelijk te laten samenwerken en leveranciers in staat te stellen extensies te schrijven voor hun producten die EJB's kunnen ondersteunen.
EJB3
EJB3 (EJB 3.0) werd uitgebracht op 11 mei 2006. EJB3 maakte het leven van programmeurs erg gemakkelijk door hen annotaties te laten gebruiken in plaats van implementatiedescriptors die in vorige versies werden gebruikt. EJB3 bevat een bedrijfsinterface en een specifieke entiteitboon die die bedrijfsinterface kan implementeren, waardoor de noodzaak om huis / externe interfaces en het bestand ejb-jar.xml te gebruiken, wordt verwijderd. De algehele prestaties van EJB3 zijn aanzienlijk verbeterd in vergelijking met EJB2, en er is een aanzienlijke toename in configureerbaarheid, flexibiliteit en draagbaarheid in deze versie van EJB.
Wat is het verschil tussen EJB2 en EJB3?
EJB3 heeft een merkbare verbetering in configuratie en prestaties ten opzichte van EJB2. Een reden voor deze prestatieverbetering is het gebruik van de POJO (Plain Old Java Object) met metadata en XML Deployment Descriptors door EJB3 in plaats van JNDI-lookups die in EJB2 worden gebruikt voor objectreferenties. De configuratie van EJB3 is veel eenvoudiger omdat de programmeur geen Home / Remote-interfaces en andere (bijvoorbeeld SessionBean) hoeft te implementeren, wat de noodzaak van callback-methodes van containers (zoals ejbActivate en ejbStore) overbodig maakt.
Bovendien is EJB3 beter dan EJB2 op het gebied van flexibiliteit en draagbaarheid. Het is bijvoorbeeld eenvoudig om EJB3-entiteiten te converteren naar DAO (Data Access Object) en omgekeerd, omdat EJB3-entiteiten een laag gewicht hebben (in tegenstelling tot de zwaargewicht EJB2-entiteiten die bovengenoemde interfaces implementeren). Databasequery's geschreven in EJB3 zijn zeer flexibel omdat het een verfijnde EJB-QL gebruikt, in plaats van de oudere versie van EJB-QL, die verschillende beperkingen had. EJB3 verwijdert alle portabiliteitsproblemen van EJB2 (die entiteitbonen gebruikt voor databasetoegang) door meer algemene PPV te ondersteunen voor alle datatransacties.
In tegenstelling tot EJB2, waarvoor een EJB-container nodig is om uit te voeren, kan EJB3 worden uitgevoerd in een onafhankelijke JVM (Java Virtual Machine) zonder containers te hoeven gebruiken (dit is mogelijk omdat het geen standaardinterfaces implementeert). In tegenstelling tot EJB2 is EJB3 eenvoudig in te pluggen met persistentie-providers die door derden worden aangeboden. Een ander belangrijk verschil tussen EJB3 en EJB2 is dat EJB3 op annotaties gebaseerde beveiliging kan gebruiken, terwijl EJB2 op descriptoren gebaseerde beveiliging gebruikte. Dit betekent dat configuratie- en set-uptaken veel eenvoudiger zijn in EJB3 en dat de prestatiekosten aanzienlijk lager zijn in vergelijking met EJB2.