EJB2 vs EJB3
Ang EJB (Enterprise JavaBeans) ay isang Java API (Application Programming Interface) na makikita sa loob ng detalye ng Java EE (Java Platform, Enterprise Edition). Inilalarawan ng EJB ang isang modelo ng arkitektura para sa pagbuo ng mga aplikasyon ng enterprise. Ito ay isang pinamamahalaang modelo sa panig ng server na nakakakuha ng lohika ng negosyo ng enterprise application. Ang IBM ang orihinal na tagalikha ng EJB na bumuo nito noong 1997. Pinagtibay ito ng Sun Microsystems noong 1999.
Bago ang pagpapakilala ng EJB, nalaman na ang mga solusyon sa mga problemang makikita sa back-end na business code ay madalas na muling ipinapatupad ng mga programmer. Bilang resulta, ipinakilala ang EJB upang tugunan ang mga karaniwang problemang ito tulad ng pagtitiyaga, integridad ng transaksyon at seguridad. Nagbibigay ang EJB ng mga karaniwang paraan upang mahawakan ang mga problemang ito sa back end, sa pamamagitan ng pagtukoy kung paano dapat magproseso ang application server ng mga transaksyon, isama sa mga serbisyo ng JPA (Java Persistence API), pangasiwaan ang concurrency control, pangasiwaan ang JMS (Java Message Service) Events, lutasin ang mga isyu sa pagbibigay ng pangalan sa JNDI (Java Naming and Directory Interface), bumuo ng mga secure na programa na may JCE (Java Cryptography Extension) at JAAS (Java Authentication and Authorization Service), mag-deploy ng mga bahagi, makipag-ugnayan nang malayuan sa RMI-IIOP (Java Remote Method Invocation interface sa Internet Inter-Orb Protocol), bumuo ng mga serbisyo sa web, gumamit ng mga asynchronous na pamamaraan at gamitin ang serbisyo ng Timer.
EJB2
Ang EJB2 (EJB 2.0) ay inilabas noong Agosto 22, 2001. Inilalarawan nito ang detalye para sa pagbuo ng mga distributed object-oriented na application sa Java sa pamamagitan ng pagsasama-sama ng mga tool na binuo ng iba't ibang vendor. Ang isa sa mga pangunahing layunin ng EJB2 ay upang payagan ang mga programmer na bumuo ng mga enterprise application nang mas madali nang hindi kinakailangang maunawaan ang mga detalye ng mababang antas, tulad ng multi-threading at connection pooling. Ang isa pang layunin ay payagan ang mga programmer na magsulat ng isang "Bean" nang isang beses at tumakbo kahit saan nang walang recompilation (pagsunod sa "magsulat ng isang beses, tumakbo kahit saan" slogan ng Java programming language). Higit pa rito, nilayon ng EJB2 na payagan ang mga bahaging binuo ng iba't ibang vendor na madaling mag-interoperate, at payagan ang mga vendor na magsulat ng mga extension para sa kanilang mga produkto na maaaring suportahan ang mga EJB.
EJB3
Ang EJB3 (EJB 3.0) ay inilabas noong 11 Mayo, 2006. Pinadali ng EJB3 ang buhay ng mga programmer sa pamamagitan ng pagpapahintulot sa kanila na gumamit ng mga anotasyon bilang kapalit ng mga deskriptor ng deployment na ginamit sa mga nakaraang bersyon. Ang EJB3 ay naglalaman ng interface ng negosyo at isang partikular na entity bean na maaaring ipatupad ang interface ng negosyo na iyon, na inaalis ang pangangailangan para sa paggamit ng mga home/remote interface at ang ejb-jar.xml file. Ang pangkalahatang pagganap ng EJB3 ay higit na napabuti kumpara sa EJB2, at mayroong isang malaking pagtaas sa configurability, flexibility at portability sa paglabas na ito ng EJB.
Ano ang pagkakaiba ng EJB2 at EJB3?
Ang EJB3 ay may kapansin-pansing pagpapabuti sa configuration at performance kaysa sa EJB2. Ang isang dahilan para sa pagpapahusay ng pagganap na ito ay ang paggamit ng POJO (Plain Old Java Object) na may metadata at XML Deployment Descriptors ng EJB3 sa halip na JNDI lookup na ginamit sa EJB2 para sa mga object reference. Ang pag-configure ng EJB3 ay mas simple dahil hindi kailangang ipatupad ng programmer ang mga interface ng Home/Remote at iba pa (hal. SessionBean), na nag-aalis ng pangangailangang gumamit ng mga paraan ng callback ng container (gaya ng ejbActivate at ejbStore).
Higit pa rito, ang EJB3 ay mas mahusay kaysa sa EJB2 sa mga lugar ng flexibility at portability. Halimbawa, madaling i-convert ang EJB3 entity sa DAO (Data Access Object) at vice versa dahil magaan ang EJB3 entity (kumpara sa heavyweight EJB2 entity, na nagpapatupad ng mga nabanggit na interface). Ang mga query sa database na nakasulat sa EJB3 ay napaka-flexible dahil gumagamit ito ng isang pinong EJB-QL, bilang kapalit ng mas lumang bersyon ng EJB-QL, na may ilang mga limitasyon. Inaalis ng EJB3 ang lahat ng isyu sa portability ng EJB2 (na gumagamit ng entity beans para sa pag-access sa database) sa pamamagitan ng pagsuporta sa mas pangkalahatang JPA para sa lahat ng transaksyon ng data.
Hindi tulad ng EJB2, na nangangailangan ng EJB container upang maipatupad, ang EJB3 ay maaaring isagawa sa isang independiyenteng JVM (Java Virtual Machine) nang hindi kinakailangang gumamit ng mga container (posible ito dahil hindi ito nagpapatupad ng mga karaniwang interface). Hindi tulad ng EJB2, ang EJB3 ay madaling mai-plug sa mga provider ng persistence na inaalok ng mga third party. Ang isa pang mahalagang pagkakaiba sa pagitan ng EJB3 at EJB2 ay ang EJB3 ay maaaring gumamit ng annotation based security, habang ang EJB2 ay gumamit ng deployment descriptors based security. Nangangahulugan ito na ang mga gawain sa pagsasaayos at pag-setup ay mas madali sa EJB3, at may malaking pagbawas sa mga overhead ng pagganap kumpara sa EJB2.