EJB2 versus EJB3
EJB (Enterprise JavaBeans) is een Java API (Application Programming Interface) die wordt aangetroffen in de Java EE-specificatie (Java Platform, Enterprise Edition). EJB beschrijft een architectonisch model voor de ontwikkeling van bedrijfstoepassingen. Dit is een managed server-side model dat de bedrijfslogica van de bedrijfstoepassing kan vastleggen. IBM is de oorspronkelijke maker van EJB die het in 1997 heeft ontwikkeld. Sun Microsystems heeft het in 1999 ingevoerd.
Vóór de introductie van EJB bleek dat oplossingen voor problemen in back-end bedrijfscode vaak opnieuw werden geïmplementeerd door de programmeurs. Als resultaat werd EJB geïntroduceerd om deze veelvoorkomende problemen aan te pakken, zoals persistentie, transactionele integriteit en beveiliging. EJB biedt standaardmanieren om deze back-endproblemen af te handelen, door te specificeren hoe de applicatieserver transacties moet verwerken, moet integreren met JPA (Java Persistence API) -services, gelijktijdigheidscontrole moet afhandelen, JMS (Java Message Service) -gebeurtenissen kan afhandelen, naamgevingsproblemen moet oplossen met JNDI (Java Naming and Directory Interface), ontwikkel veilige programma's met JCE (Java Cryptography Extension) en JAAS (Java Authentication and Authorization Service), implementeer componenten, communiceer op afstand met RMI-IIOP (Java Remote Method Invocation-interface via het internet Inter-Orb Protocol),webservices ontwikkelen, asynchrone methoden gebruiken en de Timer-service gebruiken.
EJB2
EJB2 (EJB 2.0) werd vrijgegeven op 22 augustus 2001. Het beschrijft de specificatie 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 gemakkelijker bedrijfsapplicaties te ontwikkelen zonder dat ze details op laag niveau, zoals multi-threading en pooling van verbindingen, hoeven te begrijpen. Een ander doel was om programmeurs in staat te stellen een keer een "Bean" te schrijven en overal te draaien zonder opnieuw te compileren (daarbij de slogan "write once, run Anywhere" van de programmeertaal Java). Bovendien was EJB2 bedoeld om componenten die door verschillende leveranciers zijn ontwikkeld, gemakkelijk te laten samenwerken, en om 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 in staat te stellen annotaties te gebruiken in plaats van deployment descriptors die in eerdere versies werden gebruikt. EJB3 bevat een bedrijfsinterface en een specifieke entiteitsboon die die bedrijfsinterface kan implementeren, waardoor het niet meer nodig is om thuis- / externe interfaces en het ejb-jar.xml-bestand te gebruiken. De algehele prestaties van EJB3 zijn veel verbeterd in vergelijking met EJB2, en er is een aanzienlijke toename in configureerbaarheid, flexibiliteit en draagbaarheid in deze release 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 hoeft te implementeren (bijv. SessionBean), waardoor het niet meer nodig is om container-callback-methoden (zoals ejbActivate en ejbStore) te gebruiken.
Verder is EJB3 beter dan EJB2 op het gebied van flexibiliteit en draagbaarheid. Het is bijvoorbeeld eenvoudig om EJB3-entiteiten om te zetten naar DAO (Data Access Object) en vice versa omdat EJB3-entiteiten licht van gewicht zijn (in tegenstelling tot de zwaargewicht EJB2-entiteiten, die bovengenoemde interfaces implementeren). Databasequery's geschreven in EJB3 zijn erg flexibel omdat het een verfijnde EJB-QL gebruikt, in plaats van de oudere versie van EJB-QL, die verschillende beperkingen had. EJB3 verwijdert alle overdraagbaarheidsproblemen van EJB2 (die entiteitsbeans gebruikt voor databasetoegang) door ondersteuning van meer algemene JPA voor alle datatransacties.
In tegenstelling tot EJB2, dat een EJB-container nodig heeft om uit te voeren, kan EJB3 worden uitgevoerd in een onafhankelijke JVM (Java Virtual Machine) zonder containers te gebruiken (dit is mogelijk omdat het geen standaard interfaces implementeert). In tegenstelling tot EJB2 is EJB3 eenvoudig in te pluggen met persistentieproviders die worden aangeboden door derden. Een ander belangrijk verschil tussen EJB3 en EJB2 is dat EJB3 beveiliging op basis van annotaties kan gebruiken, terwijl EJB2 beveiliging op basis van implementatiedescriptoren gebruikt. Dit betekent dat configuratie- en installatietaken veel eenvoudiger zijn in EJB3, en er is een aanzienlijke vermindering van de prestatieoverheadkosten in vergelijking met EJB2.