EJB2 vs EJB3
EJB (Enterprise JavaBeans) er en Java API (Application Programming Interface) fundet i Java EE (Java Platform, Enterprise Edition) specifikation. EJB beskriver en arkitektonisk model for udvikling af virksomhedsapplikationer. Dette er en administreret server-side model, der er i stand til at fange forretningslogikken i virksomhedsapplikationen. IBM er EJB's oprindelige skaber, der udviklede det i 1997. Sun Microsystems adopterede det i 1999.
Før introduktionen af EJB, blev det konstateret, at løsninger på problemer fundet i back-end business code ofte blev genimplementeret af programmørerne. Som et resultat blev EJB introduceret for at løse disse almindelige problemer såsom persistens, transaktionsintegritet og sikkerhed. EJB tilbyder standardmåder til at håndtere disse backend-problemer ved at specificere, hvordan applikationsserveren skal behandle transaktioner, integrere med JPA (Java Persistence API) tjenester, håndtere samtidighedskontrol, håndtere JMS (Java Message Service) hændelser, løse navngivningsproblemer med JNDI (Java Navngivning og Directory Interface), udvikle sikre programmer med JCE (Java Cryptography Extension) og JAAS (Java Authentication and Authorization Service), implementere komponenter, kommunikere eksternt med RMI-IIOP (Java Remote Method Invocation interface over Internet Inter-Orb Protocol), udvikle webtjenester, påberåbe asynkrone metoder og bruge Timer-tjenesten.
EJB2
EJB2 (EJB 2.0) blev udgivet den 22. august, 2001. Den beskriver specifikationer for udvikling af distribuerede objektorienterede applikationer i Java ved at kombinere værktøjer udviklet af forskellige leverandører. Et af hovedmålene med EJB2 var at give programmører mulighed for lettere at udvikle virksomhedsapplikationer uden at skulle forstå detaljer på lavt niveau, såsom multi-threading og forbindelsespooling. Et andet mål var at give programmører mulighed for at skrive en "Bean" én gang og køre hvor som helst uden genkompilering (ved at følge sloganet "skriv én gang, løb hvor som helst" i programmeringssproget Java). Ydermere havde EJB2 til formål at tillade komponenter udviklet af forskellige leverandører nemt at fungere sammen, og give leverandører mulighed for at skrive udvidelser til deres produkter, der kan understøtte EJB'er.
EJB3
EJB3 (EJB 3.0) blev udgivet den 11. maj, 2006. EJB3 gjorde programmørers liv meget nemt ved at give dem mulighed for at bruge annoteringer i stedet for implementeringsbeskrivelser, der blev brugt i tidligere versioner. EJB3 indeholder en forretningsgrænseflade og en specifik enhedsbean, der kan implementere denne forretningsgrænseflade, hvilket fjerner behovet for at bruge hjemme-/fjerngrænseflader og ejb-jar.xml-filen. Den samlede ydeevne af EJB3 er meget forbedret sammenlignet med EJB2, og der er en betydelig stigning i konfigurerbarhed, fleksibilitet og portabilitet i denne udgivelse af EJB.
Hvad er forskellen mellem EJB2 og EJB3?
EJB3 har en mærkbar forbedring i konfiguration og ydeevne i forhold til EJB2. En grund til denne forbedring af ydeevnen er brugen af POJO (Plain Old Java Object) med metadata og XML Deployment Descriptors af EJB3 i stedet for JNDI-opslag, der bruges i EJB2 til objektreferencer. Konfiguration af EJB3 er meget enklere, fordi programmøren ikke behøver at implementere Home/Remote-grænseflader og andre (f.eks. SessionBean), hvilket fjerner behovet for at bruge container-tilbagekaldsmetoder (såsom ejbActivate og ejbStore).
Yderligere er EJB3 bedre end EJB2 inden for områderne fleksibilitet og bærbarhed. For eksempel er det nemt at konvertere EJB3-enheder til DAO (Data Access Object) og omvendt, fordi EJB3-enheder er lette (i modsætning til de tunge EJB2-enheder, som implementerer ovennævnte grænseflader). Databaseforespørgsler skrevet i EJB3 er meget fleksible, fordi den bruger en raffineret EJB-QL i stedet for den ældre version af EJB-QL, som havde flere begrænsninger. EJB3 fjerner alle portabilitetsproblemer i EJB2 (som bruger entity beans til databaseadgang) ved at understøtte mere generaliseret JPA for alle datatransaktioner.
I modsætning til EJB2, som har brug for en EJB-container for at udføre, kan EJB3 udføres i en uafhængig JVM (Java Virtual Machine) uden at skulle bruge containere (dette er muligt, fordi den ikke implementerer standardgrænseflader). I modsætning til EJB2 kan EJB3 nemt tilsluttes med persistensudbydere, der tilbydes af tredjeparter. En anden vigtig forskel mellem EJB3 og EJB2 er, at EJB3 kan bruge annotationsbaseret sikkerhed, mens EJB2 brugte implementeringsdeskriptorbaseret sikkerhed. Dette betyder, at konfigurations- og opsætningsopgaver er meget nemmere i EJB3, og der er en betydelig reduktion i ydelsesomkostninger sammenlignet med EJB2.