EJB2 vs EJB3
EJB (Enterprise JavaBeans) er et Java API (Application Programming Interface) som finnes innenfor Java EE-spesifikasjonen (Java Platform, Enterprise Edition). EJB beskriver en arkitektonisk modell for utvikling av bedriftsapplikasjoner. Dette er en administrert serversidemodell som er i stand til å fange opp forretningslogikken til bedriftsapplikasjonen. IBM er EJBs opprinnelige skaper som utviklet den i 1997. Sun Microsystems tok den i bruk i 1999.
Før introduksjonen av EJB ble det funnet at løsninger på problemer funnet i back-end forretningskode ofte ble implementert på nytt av programmererne. Som et resultat ble EJB introdusert for å løse disse vanlige problemene som utholdenhet, transaksjonsintegritet og sikkerhet. EJB tilbyr standardmåter for å håndtere disse backend-problemene, ved å spesifisere hvordan applikasjonsserveren skal behandle transaksjoner, integrere med JPA (Java Persistence API) tjenester, håndtere samtidighetskontroll, håndtere JMS (Java Message Service) hendelser, løse navneproblemer med JNDI (Java Naming and Directory Interface), utvikle sikre programmer med JCE (Java Cryptography Extension) og JAAS (Java Authentication and Authorization Service), distribuere komponenter, kommunisere eksternt med RMI-IIOP (Java Remote Method Invocation-grensesnitt over Internet Inter-Orb Protocol), utvikle webtjenester, påkalle asynkrone metoder og bruke Timer-tjenesten.
EJB2
EJB2 (EJB 2.0) ble utgitt 22. august 2001. Den beskriver spesifikasjoner for utvikling av distribuerte objektorienterte applikasjoner i Java ved å kombinere verktøy utviklet av forskjellige leverandører. Et av hovedmålene med EJB2 var å la programmerere utvikle bedriftsapplikasjoner lettere uten å måtte forstå detaljer på lavt nivå, for eksempel multi-threading og tilkoblingspooling. Et annet mål var å la programmerere skrive en "Bean" én gang og kjøre hvor som helst uten rekompilering (ved å følge slagordet "skriv en gang, kjør hvor som helst" til programmeringsspråket Java). Videre hadde EJB2 til hensikt å la komponenter utviklet av forskjellige leverandører enkelt fungere sammen, og la leverandører skrive utvidelser for sine produkter som kan støtte EJBs.
EJB3
EJB3 (EJB 3.0) ble utgitt 11. mai 2006. EJB3 gjorde programmerere svært enkelt ved å la dem bruke merknader i stedet for distribusjonsbeskrivelser som ble brukt i tidligere versjoner. EJB3 inneholder et forretningsgrensesnitt og en spesifikk enhetsbean som kan implementere det forretningsgrensesnittet, og fjerner behovet for bruk av hjemme-/fjerngrensesnitt og ejb-jar.xml-filen. Den generelle ytelsen til EJB3 er mye forbedret sammenlignet med EJB2, og det er en betydelig økning i konfigurerbarhet, fleksibilitet og portabilitet i denne utgivelsen av EJB.
Hva er forskjellen mellom EJB2 og EJB3?
EJB3 har en merkbar forbedring i konfigurasjon og ytelse i forhold til EJB2. En grunn til denne ytelsesforbedringen er bruken av POJO (Plain Old Java Object) med metadata og XML Deployment Descriptors av EJB3 i stedet for JNDI-oppslag brukt i EJB2 for objektreferanser. Konfigurasjon av EJB3 er mye enklere fordi programmereren ikke trenger å implementere Home/Remote-grensesnitt og andre (f.eks. SessionBean), noe som fjerner behovet for å bruke container-tilbakeringsmetoder (som ejbActivate og ejbStore).
I tillegg er EJB3 bedre enn EJB2 når det gjelder fleksibilitet og portabilitet. For eksempel er det enkelt å konvertere EJB3-enheter til DAO (Data Access Object) og omvendt fordi EJB3-enheter er lette (i motsetning til de tunge EJB2-enhetene, som implementerer ovenfor nevnte grensesnitt). Databasespørringer skrevet i EJB3 er veldig fleksible fordi den bruker en raffinert EJB-QL, i stedet for den eldre versjonen av EJB-QL, som hadde flere begrensninger. EJB3 fjerner alle portabilitetsproblemene til EJB2 (som bruker entity beans for databasetilgang) ved å støtte mer generalisert JPA for alle datatransaksjoner.
I motsetning til EJB2, som trenger en EJB-beholder for å kjøre, kan EJB3 kjøres i en uavhengig JVM (Java Virtual Machine) uten å måtte bruke beholdere (dette er mulig fordi den ikke implementerer standardgrensesnitt). I motsetning til EJB2, er EJB3 lett pluggbar med utholdenhetsleverandører som tilbys av tredjeparter. En annen viktig forskjell mellom EJB3 og EJB2 er at EJB3 kan bruke merknadsbasert sikkerhet, mens EJB2 brukte distribusjonsdeskriptorbasert sikkerhet. Dette betyr at konfigurasjons- og oppsettoppgaver er mye enklere i EJB3, og det er en betydelig reduksjon i ytelseskostnader sammenlignet med EJB2.