EJB2 prieš EJB3
EJB (Enterprise JavaBeans) yra Java API (Application Programming Interface), randama Java EE (Java Platform, Enterprise Edition) specifikacijoje. EJB aprašo architektūrinį įmonių taikomųjų programų kūrimo modelį. Tai valdomas serverio modelis, galintis užfiksuoti įmonės taikomosios programos verslo logiką. IBM yra pirminis EJB kūrėjas, kuris jį sukūrė 1997 m. Sun Microsystems jį priėmė 1999 m.
Prieš pristatant EJB, buvo nustatyta, kad programuotojai dažnai iš naujo įgyvendindavo problemų sprendimus, rastus pagrindiniame verslo kode. Dėl to EJB buvo pristatytas siekiant išspręsti tokias įprastas problemas, kaip patvarumas, operacijų vientisumas ir saugumas. EJB pateikia standartinius būdus, kaip spręsti šias galines problemas, nurodydamas, kaip programų serveris turi apdoroti operacijas, integruotis su JPA (Java Persistence API) paslaugomis, valdyti lygiagretumą, tvarkyti JMS (Java pranešimų paslaugos) įvykius, išspręsti pavadinimo problemas naudojant JNDI („Java“pavadinimo ir katalogų sąsaja), kurti saugias programas su JCE („Java Cryptography Extension“) ir JAAS („Java“autentifikavimo ir autorizacijos tarnyba), diegti komponentus, bendrauti nuotoliniu būdu su RMI-IIOP („Java Remote Method Invocation“sąsaja per interneto „Inter-Orb“protokolą)., kurti žiniatinklio paslaugas, iškviesti asinchroninius metodus ir naudoti laikmačio paslaugą.
EJB2
EJB2 (EJB 2.0) buvo išleistas 2001 m. rugpjūčio 22 d. Jame aprašomos paskirstytų objektinių programų kūrimo Java, derinant skirtingų tiekėjų sukurtus įrankius, specifikacijos. Vienas iš pagrindinių EJB2 tikslų buvo leisti programuotojams lengviau kurti įmonės taikomąsias programas, nesuvokiant žemo lygio detalių, tokių kaip kelių gijų ir ryšių telkimas. Kitas tikslas buvo leisti programuotojams vieną kartą parašyti „Bean“ir paleisti bet kur be perkompiliavimo (laikantis Java programavimo kalbos šūkio „rašyti vieną kartą, paleisti bet kur“). Be to, EJB2 skirta leisti skirtingų pardavėjų sukurtiems komponentams lengvai sąveikauti ir leisti pardavėjams rašyti savo produktų plėtinius, kurie gali palaikyti EJB.
EJB3
EJB3 (EJB 3.0) buvo išleistas 2006 m. gegužės 11 d. EJB3 labai palengvino programuotojų gyvenimą, nes vietoj ankstesnėse versijose naudotų diegimo deskriptorių galėjo naudoti anotacijas. EJB3 yra verslo sąsaja ir konkretus subjektas, kuris gali įdiegti tą verslo sąsają, todėl nebereikia naudoti namų / nuotolinių sąsajų ir failo ejb-jar.xml. Bendras EJB3 našumas yra daug geresnis, palyginti su EJB2, ir šioje EJB laidoje žymiai padidėjo konfigūravimo, lankstumo ir perkeliamumo galimybės.
Kuo skiriasi EJB2 ir EJB3?
EJB3 konfigūracija ir našumas pastebimai pagerėjo, palyginti su EJB2. Viena iš šio našumo gerinimo priežasčių yra POJO (paprastas senas Java objektas) su metaduomenimis ir XML diegimo deskriptoriais, naudojant EJB3, o ne JNDI peržvalgas, naudojamas EJB2 objektų nuorodoms. EJB3 konfigūravimas yra daug paprastesnis, nes programuotojui nereikia įdiegti namų / nuotolinio valdymo sąsajų ir kitų (pvz., SessionBean), todėl nebereikia naudoti konteinerio atgalinio iškvietimo metodų (tokių kaip ejbActivate ir ejbStore).
Be to, EJB3 yra geresnis už EJB2 lankstumo ir perkeliamumo srityse. Pavyzdžiui, lengva konvertuoti EJB3 objektus į DAO (duomenų prieigos objektą) ir atvirkščiai, nes EJB3 objektai yra lengvi (priešingai nei sunkiasvoriai EJB2 objektai, kurie įgyvendina aukščiau minėtas sąsajas). Duomenų bazės užklausos, parašytos EJB3, yra labai lanksčios, nes vietoj senesnės EJB-QL versijos, kuri turėjo keletą apribojimų, naudojama patobulinta EJB-QL. EJB3 pašalina visas perkeliamumo problemas, susijusias su EJB2 (kuris naudoja objektų pupeles prieigai prie duomenų bazės), palaikydamas labiau apibendrintą JPA visoms duomenų operacijoms.
Skirtingai nei EJB2, kuriam vykdyti reikalingas EJB konteineris, EJB3 galima vykdyti nepriklausomame JVM („Java Virtual Machine“) nenaudojant konteinerių (tai įmanoma, nes jame nėra standartinių sąsajų). Skirtingai nuo EJB2, EJB3 yra lengvai prijungiamas prie trečiųjų šalių siūlomų patvarumo tiekėjų. Kitas svarbus skirtumas tarp EJB3 ir EJB2 yra tas, kad EJB3 gali naudoti anotacijomis pagrįstą saugą, o EJB2 naudojo diegimo deskriptoriais pagrįstą saugą. Tai reiškia, kad naudojant EJB3 konfigūravimo ir sąrankos užduotys yra daug paprastesnės, o našumo sąnaudos žymiai sumažėja, palyginti su EJB2.