EJB2 vs EJB3
Az EJB (Enterprise JavaBeans) egy Java API (Application Programming Interface), amely a Java EE (Java Platform, Enterprise Edition) specifikációban található. Az EJB építészeti modellt ír le a vállalati alkalmazások fejlesztésére. Ez egy felügyelt kiszolgálóoldali modell, amely képes megragadni a vállalati alkalmazás üzleti logikáját. Az IBM az EJB eredeti alkotója, aki 1997-ben fejlesztette ki. A Sun Microsystems 1999-ben vette át.
Az EJB bevezetése előtt kiderült, hogy a háttér-üzleti kódban talált problémák megoldását a programozók gyakran újratelepítették. Ennek eredményeként az EJB-t azért vezették be, hogy kezelje ezeket a gyakori problémákat, mint például a kitartás, a tranzakciók integritása és a biztonság. Az EJB szabványos módon kezeli ezeket a háttérproblémákat, meghatározva, hogy az alkalmazáskiszolgálónak miként kell feldolgoznia a tranzakciókat, integrálódnia kell a JPA (Java Persistence API) szolgáltatásokkal, kezelnie az egyidejűség-vezérlést, kezelni a JMS (Java Message Service) eseményeket, megoldani a névadási problémákat a JNDI-vel (Java Naming and Directory Interface), fejlesszen ki biztonságos programokat a JCE (Java Cryptography Extension) és a JAAS (Java Authentication and Authorization Service) segítségével, telepítse az összetevőket, távolról kommunikáljon az RMI-IIOP (Java Remote Method Invocation interfésszel az Internet Inter-Orb Protocol protokollon keresztül),webes szolgáltatások fejlesztése, aszinkron módszerek meghívása és az Időzítő szolgáltatás használata.
EJB2
Az EJB2 (EJB 2.0) 2001. augusztus 22-én jelent meg. Leírja az elosztott objektum-orientált alkalmazások fejlesztését a Java-ban a különböző gyártók által fejlesztett eszközök kombinálásával. Az EJB2 egyik fő célja az volt, hogy lehetővé tegye a programozók számára, hogy könnyebben fejlesszék a vállalati alkalmazásokat anélkül, hogy meg kellene érteniük az alacsony szintű részleteket, például a többszálas menetrendet és a kapcsolatkészletet. A másik cél az volt, hogy lehetővé tegyék a programozók számára, hogy egyszer egy „Babot” írjanak, és bárhol fussanak újrafordítás nélkül (betartva a Java programozási nyelv „egyszer írj, fuss bárhova” szlogenjét). Ezenkívül az EJB2 célja az volt, hogy lehetővé tegye a különböző gyártók által kifejlesztett alkatrészek egyszerű interoperációját, és lehetővé tegye a gyártók számára, hogy az EJB-ket támogató kiterjesztéseket írhassanak termékeikhez.
EJB3
Az EJB3 (EJB 3.0) 2006. május 11-én jelent meg. Az EJB3 nagyon megkönnyítette a programozók életét azáltal, hogy lehetővé tette számukra, hogy a korábbi verziókban használt telepítési leírók helyett kommentárokat használhassanak. Az EJB3 tartalmaz egy üzleti felületet és egy speciális entitásbabot, amely képes megvalósítani az üzleti felületet, feleslegessé téve az otthoni / távoli interfészek és az ejb-jar.xml fájl használatának szükségességét. Az EJB3 teljes teljesítménye jóval jobb az EJB2-hez képest, és az EJB ezen kiadásában jelentősen nő a konfigurálhatóság, a rugalmasság és a hordozhatóság.
Mi a különbség az EJB2 és az EJB3 között?
Az EJB3-nak érezhetően javult a konfigurációja és a teljesítménye az EJB2-hez képest. Ennek a teljesítményjavulásnak az egyik oka a POJO (Plain Old Java Object) használata metaadatokkal és XML telepítési leírókkal az EJB3 részéről az EJB2-ben objektumhivatkozásokhoz használt JNDI keresések helyett. Az EJB3 konfigurálása sokkal egyszerűbb, mert a programozónak nincs szüksége otthoni / távoli interfészek és mások (pl. SessionBean) megvalósítására, ami feleslegessé teszi a konténeres visszahívási módszerek (például ejbActivate és ejbStore) használatát.
Ezenkívül az EJB3 jobb, mint az EJB2 a rugalmasság és a hordozhatóság terén. Például könnyű átalakítani az EJB3 entitásokat DAO -vá (Data Access Object) és fordítva, mert az EJB3 entitások könnyűek (szemben a nehézsúlyú EJB2 entitásokkal, amelyek a fent említett interfészeket valósítják meg). Az EJB3-ban írt adatbázis-lekérdezések nagyon rugalmasak, mivel finomított EJB-QL-t használ az EJB-QL régebbi verziója helyett, amelynek számos korlátja volt. Az EJB3 eltávolítja az EJB2 (amely adatbázis-hozzáféréshez entitásbabokat használ) összes hordozhatósági kérdését azáltal, hogy általánosabb JPA-t támogat minden adattranzakcióhoz.
Ellentétben az EJB2-vel, amelynek végrehajtásához EJB-tárolóra van szükség, az EJB3 független JVM-ben (Java Virtual Machine) futtatható anélkül, hogy tárolókat kellene használnia (ez azért lehetséges, mert nem valósít meg szabványos interfészeket). Az EJB2-vel ellentétben az EJB3 könnyen csatlakoztatható harmadik fél által kínált kitartás-szolgáltatókhoz. Egy másik fontos különbség az EJB3 és az EJB2 között az, hogy az EJB3 használhat annotáció alapú biztonságot, míg az EJB2 telepítési leíró alapú biztonságot. Ez azt jelenti, hogy a konfigurációs és beállítási feladatok sokkal könnyebbek az EJB3-ban, és az EJB2-hez képest jelentősen csökken a teljesítmény általános költsége.