EJB2 vs EJB3
EJB (Enterprise JavaBeans) on Java API (Application Programming Interface), joka löytyy Java EE (Java Platform, Enterprise Edition) -spesifikaatiosta. EJB kuvaa arkkitehtonisen mallin yrityssovellusten kehittämiseen. Tämä on hallittu palvelinpuolen malli, joka pystyy kaappaamaan yrityssovelluksen liiketoimintalogiikan. IBM on EJB:n alkuperäinen luoja, joka kehitti sen vuonna 1997. Sun Microsystems otti sen käyttöön vuonna 1999.
Ennen EJB:n käyttöönottoa havaittiin, että ohjelmoijat ottivat usein uudelleen käyttöön ratkaisuja taustaliiketoimintakoodissa löydettyihin ongelmiin. Tämän seurauksena EJB otettiin käyttöön näiden yleisten ongelmien, kuten pysyvyyden, tapahtumien eheyden ja turvallisuuden, ratkaisemiseksi. EJB tarjoaa tavallisia tapoja käsitellä näitä tausta-ongelmia määrittämällä, kuinka sovelluspalvelimen tulee käsitellä tapahtumia, integroitua JPA (Java Persistence API) -palveluihin, käsitellä samanaikaisuuden hallintaa, käsitellä JMS (Java Message Service) -tapahtumia, ratkaista nimeämisongelmia JNDI:n kanssa (Java Naming and Directory Interface), kehitä suojattuja ohjelmia JCE:n (Java Cryptography Extension) ja JAAS:n (Java Authentication and Authorization Service) avulla, ota käyttöön komponentteja, kommunikoi etäyhteydellä RMI-IIOP:n (Java Remote Method Invocation -liitäntä Internet Inter-Orb Protocol -protokollan kautta), kehittää verkkopalveluita, kutsua asynkronisia menetelmiä ja käyttää ajastinpalvelua.
EJB2
EJB2 (EJB 2.0) julkaistiin 22. elokuuta 2001. Se kuvaa spesifikaatioita hajautettujen oliosovellusten kehittämiseen Javassa yhdistämällä eri valmistajien kehittämiä työkaluja. Yksi EJB2:n tärkeimmistä tavoitteista oli antaa ohjelmoijille mahdollisuus kehittää yrityssovelluksia helpommin ilman, että heidän tarvitsee ymmärtää matalan tason yksityiskohtia, kuten monisäikeisyyttä ja yhteyden yhdistämistä. Toinen tavoite oli antaa ohjelmoijille mahdollisuus kirjoittaa "Bean" kerran ja suorittaa missä tahansa ilman uudelleenkääntämistä (noudattamalla Java-ohjelmointikielen "kirjoita kerran, suorita missä tahansa" iskulausetta). Lisäksi EJB2:n tarkoituksena oli mahdollistaa eri valmistajien kehittämien komponenttien helppo yhteentoimivuus ja toimittajat voivat kirjoittaa tuotteilleen laajennuksia, jotka voivat tukea EJB:tä.
EJB3
EJB3 (EJB 3.0) julkaistiin 11. toukokuuta 2006. EJB3 teki ohjelmoijien elämästä erittäin helppoa sallimalla heidän käyttää huomautuksia aiemmissa versioissa käytettyjen käyttöönottokuvausten sijaan. EJB3 sisältää liiketoimintaliittymän ja tietyn entiteettipavun, joka voi toteuttaa kyseisen liikerajapinnan, mikä poistaa kodin/etäliitäntöjen ja ejb-jar.xml-tiedoston käytön tarpeen. EJB3:n kokonaissuorituskyky on paljon parantunut verrattuna EJB2:een, ja tässä EJB:n julkaisussa konfiguroitavuus, joustavuus ja siirrettävyys lisääntyvät huomattavasti.
Mitä eroa on EJB2:lla ja EJB3:lla?
EJB3:n kokoonpanossa ja suorituskyvyssä on huomattava parannus EJB2:een verrattuna. Yksi syy tähän suorituskyvyn parantamiseen on EJB3:n POJO:n (Plain Old Java Object) käyttö metadatan ja XML-käyttöönoton kuvaajien kanssa EJB2:ssa objektiviittauksissa käytettyjen JNDI-hakujen sijaan. EJB3:n konfigurointi on paljon yksinkertaisempaa, koska ohjelmoijan ei tarvitse ottaa käyttöön Home/Remote-rajapintoja ja muita (esim. SessionBean), mikä poistaa tarpeen käyttää säilön takaisinkutsumenetelmiä (kuten ejbActivate ja ejbStore).
Lisäksi EJB3 on parempi kuin EJB2 joustavuuden ja siirrettävyyden os alta. Esimerkiksi EJB3-entiteetit on helppo muuntaa DAO:ksi (Data Access Object) ja päinvastoin, koska EJB3-entiteetit ovat kevyitä (toisin kuin raskaat EJB2-entiteetit, jotka toteuttavat edellä mainitut rajapinnat). EJB3:lla kirjoitetut tietokantakyselyt ovat erittäin joustavia, koska se käyttää hienostunutta EJB-QL:ää EJB-QL:n vanhemman version tilalla, jolla oli useita rajoituksia. EJB3 poistaa kaikki EJB2:n (joka käyttää entiteettipapuja tietokantojen käyttöön) siirrettävyysongelmat tukemalla yleisempää JPA:ta kaikissa datatapahtumissa.
Toisin kuin EJB2, jonka suorittamiseen tarvitaan EJB-säilö, EJB3 voidaan suorittaa itsenäisessä JVM:ssä (Java Virtual Machine) ilman säiliöitä (tämä on mahdollista, koska se ei toteuta vakiorajapintoja). Toisin kuin EJB2, EJB3 on helppo liittää kolmansien osapuolten tarjoamiin pysyvyystarjoajiin. Toinen tärkeä ero EJB3:n ja EJB2:n välillä on, että EJB3 voi käyttää merkintöihin perustuvaa suojausta, kun taas EJB2 käytti käyttöönoton kuvauksiin perustuvaa suojausta. Tämä tarkoittaa, että konfigurointi- ja asennustehtävät ovat paljon helpompia EJB3:ssa, ja suorituskyvyn yleiskustannukset ovat huomattavasti pienemmät verrattuna EJB2:een.