EJB2 vs EJB3
EJB (Enterprise JavaBeans) je Java API (Aplikacijski programski interfejs) koji se nalazi u specifikaciji Java EE (Java Platform, Enterprise Edition). EJB opisuje arhitektonski model za razvoj poslovnih aplikacija. Ovo je upravljani model na strani servera koji je u stanju da uhvati poslovnu logiku poslovne aplikacije. IBM je originalni kreator EJB-a koji ga je razvio 1997. Sun Microsystems ga je usvojio 1999.
Prije uvođenja EJB-a, otkriveno je da su rješenja za probleme pronađena u back-end poslovnom kodu često ponovo implementirana od strane programera. Kao rezultat toga, EJB je uveden za rješavanje ovih uobičajenih problema kao što su postojanost, transakcijski integritet i sigurnost. EJB pruža standardne načine za rješavanje ovih pozadinskih problema, specificirajući kako bi poslužitelj aplikacija trebao obraditi transakcije, integrirati se sa JPA (Java Persistence API) uslugama, upravljati kontrolom konkurentnosti, upravljati JMS (Java Message Service) događajima, rješavati probleme s imenovanjem sa JNDI (Java imenovanje i interfejs imenika), razvijaju sigurne programe sa JCE (Java Cryptography Extension) i JAAS (Java Authentication and Authorization Service), postavljaju komponente, komuniciraju na daljinu sa RMI-IIOP (Java Remote Method Invocation interfejs preko Internet Inter-Orb Protocol), razvijati web servise, pozivati asinhrone metode i koristiti uslugu Timer.
EJB2
EJB2 (EJB 2.0) je objavljen 22. avgusta 2001. Opisuje specifikacije za razvoj distribuiranih objektno orijentisanih aplikacija u Javi kombinovanjem alata razvijenih od strane različitih proizvođača. Jedan od glavnih ciljeva EJB2 bio je omogućiti programerima da lakše razvijaju poslovne aplikacije bez potrebe za razumijevanjem detalja niskog nivoa, kao što su multi-threading i spajanje veza. Drugi cilj je bio omogućiti programerima da jednom napišu "Bean" i da pokreću bilo gdje bez ponovnog kompiliranja (pridržavajući se slogana "napiši jednom, pokreni bilo gdje" programskog jezika Java). Nadalje, EJB2 je namjeravao omogućiti laku međuoperaciju komponenti koje su razvili različiti proizvođači i dozvoliti dobavljačima da pišu ekstenzije za svoje proizvode koji mogu podržavati EJB-ove.
EJB3
EJB3 (EJB 3.0) je objavljen 11. maja 2006. EJB3 je olakšao život programerima dozvoljavajući im da koriste napomene umjesto deskriptora implementacije koji su korišteni u prethodnim verzijama. EJB3 sadrži poslovno sučelje i određeni entitet bean koji može implementirati taj poslovni interfejs, uklanjajući potrebu za korištenjem kućnog/udaljenog interfejsa i datoteke ejb-jar.xml. Ukupne performanse EJB3 su znatno poboljšane u poređenju sa EJB2, a postoji i značajno povećanje konfigurabilnosti, fleksibilnosti i prenosivosti u ovom izdanju EJB-a.
Koja je razlika između EJB2 i EJB3?
EJB3 ima primjetno poboljšanje u konfiguraciji i performansama u odnosu na EJB2. Jedan od razloga za ovo poboljšanje performansi je upotreba POJO (Plain Old Java Object) sa metapodacima i XML deskriptorima implementacije od strane EJB3 umjesto JNDI pretraživanja koje se koristi u EJB2 za reference objekata. Konfiguracija EJB3 je mnogo jednostavnija jer programer ne mora implementirati Home/Remote interfejse i druge (npr. SessionBean), što uklanja potrebu za korištenjem metoda povratnog poziva kontejnera (kao što su ejbActivate i ejbStore).
Štaviše, EJB3 je bolji od EJB2 u oblastima fleksibilnosti i prenosivosti. Na primjer, lako je pretvoriti EJB3 entitete u DAO (Objekat pristupa podacima) i obrnuto jer su EJB3 entiteti lagani (za razliku od teških EJB2 entiteta, koji implementiraju gore pomenuta sučelja). Upiti baze podataka napisani u EJB3 su vrlo fleksibilni jer koristi rafinirani EJB-QL, umjesto starije verzije EJB-QL, koja je imala nekoliko ograničenja. EJB3 uklanja sve probleme prenosivosti EJB2 (koji koristi entitetski bean za pristup bazi podataka) podržavajući generaliziraniji JPA za sve transakcije podataka.
Za razliku od EJB2, kojem je za izvršavanje potreban EJB kontejner, EJB3 se može izvršiti u nezavisnom JVM-u (Java Virtual Machine) bez upotrebe kontejnera (ovo je moguće jer ne implementira standardna sučelja). Za razliku od EJB2, EJB3 se lako može spojiti s provajderima postojanosti koje nude treće strane. Još jedna važna razlika između EJB3 i EJB2 je ta što EJB3 može koristiti sigurnost zasnovanu na anotaciji, dok je EJB2 koristio sigurnost zasnovanu na deskriptorima implementacije. To znači da su zadaci konfiguracije i postavljanja mnogo lakši u EJB3, a postoji i značajno smanjenje troškova performansi u poređenju sa EJB2.