EJB2 vs EJB3
EJB (Enterprise JavaBeans) és una API de Java (Interfície de programació d'aplicacions) que es troba dins de l'especificació de Java EE (Java Platform, Enterprise Edition). EJB descriu un model arquitectònic per al desenvolupament d'aplicacions empresarials. Aquest és un model gestionat del costat del servidor que és capaç de capturar la lògica empresarial de l'aplicació empresarial. IBM és el creador original d'EJB que el va desenvolupar el 1997. Sun Microsystems el va adoptar el 1999.
Abans de la introducció de l'EJB, es va trobar que les solucions als problemes trobats en el codi empresarial de fons eren sovint reimplementades pels programadors. Com a resultat, es va introduir EJB per abordar aquests problemes comuns com ara la persistència, la integritat transaccional i la seguretat. EJB proporciona maneres estàndard de gestionar aquests problemes de fons, especificant com el servidor d'aplicacions ha de processar les transaccions, integrar-se amb els serveis JPA (Java Persistence API), gestionar el control de concurrència, gestionar els esdeveniments JMS (Java Message Service), resoldre problemes de noms amb JNDI (Java Naming and Directory Interface), desenvolupar programes segurs amb JCE (Java Cryptography Extension) i JAAS (Java Authentication and Authorization Service), implementar components, comunicar-se de forma remota amb RMI-IIOP (Java Remote Method Invocation interface a través del Internet Inter-Orb Protocol), desenvolupeu serveis web, invoqueu mètodes asíncrons i utilitzeu el servei Timer.
EJB2
EJB2 (EJB 2.0) es va publicar el 22 d'agost de 2001. Descriu l'especificació per desenvolupar aplicacions distribuïdes orientades a objectes en Java mitjançant la combinació d'eines desenvolupades per diferents venedors. Un dels objectius principals d'EJB2 era permetre als programadors desenvolupar aplicacions empresarials amb més facilitat sense haver d'entendre detalls de baix nivell, com ara el multi-threading i l'agrupació de connexions. Un altre objectiu era permetre als programadors escriure un "Bean" una vegada i executar-se a qualsevol lloc sense recompilar (adherint-se a l'eslògan "Escriure una vegada, executar en qualsevol lloc" del llenguatge de programació Java). A més, EJB2 pretenia permetre que els components desenvolupats per diferents venedors interaccionin fàcilment i permetre als venedors escriure extensions per als seus productes que puguin suportar EJB.
EJB3
EJB3 (EJB 3.0) va ser llançat l'11 de maig de 2006. EJB3 va facilitar la vida als programadors ja que els va permetre utilitzar anotacions en lloc dels descriptors de desplegament que s'utilitzaven en versions anteriors. L'EJB3 conté una interfície empresarial i un bean d'entitat específic que pot implementar aquesta interfície empresarial, eliminant la necessitat d'utilitzar interfícies domèstiques/remotes i el fitxer ejb-jar.xml. El rendiment general de l'EJB3 ha millorat molt en comparació amb l'EJB2, i hi ha un augment considerable de la configurabilitat, la flexibilitat i la portabilitat en aquesta versió d'EJB.
Quina diferència hi ha entre EJB2 i EJB3?
EJB3 té una millora notable en la configuració i el rendiment respecte a EJB2. Una de les raons d'aquesta millora de rendiment és l'ús del POJO (Plain Old Java Object) amb metadades i descriptors de desplegament XML per part de l'EJB3 en comptes de les cerques JNDI utilitzades a l'EJB2 per a referències d'objectes. La configuració d'EJB3 és molt més senzilla perquè el programador no necessita implementar interfícies Home/Remote i altres (per exemple, SessionBean), la qual cosa elimina la necessitat d'utilitzar mètodes de devolució de trucada del contenidor (com ara ejbActivate i ejbStore).
A més, EJB3 és millor que EJB2 en les àrees de flexibilitat i portabilitat. Per exemple, és fàcil convertir entitats EJB3 a DAO (Data Access Object) i viceversa perquè les entitats EJB3 són lleugeres (a diferència de les entitats EJB2 pesades, que implementen les interfícies esmentades anteriorment). Les consultes de bases de dades escrites a EJB3 són molt flexibles perquè utilitza un EJB-QL perfeccionat, en lloc de la versió anterior d'EJB-QL, que tenia diverses limitacions. EJB3 elimina tots els problemes de portabilitat d'EJB2 (que utilitza beans d'entitat per a l'accés a la base de dades) donant suport a JPA més generalitzat per a totes les transaccions de dades.
A diferència d'EJB2, que necessita un contenidor EJB per executar-se, l'EJB3 es pot executar en una JVM independent (Java Virtual Machine) sense haver d'utilitzar contenidors (això és possible perquè no implementa interfícies estàndard). A diferència d'EJB2, EJB3 es pot connectar fàcilment amb proveïdors de persistència oferts per tercers. Una altra diferència important entre EJB3 i EJB2 és que EJB3 pot utilitzar seguretat basada en anotacions, mentre que EJB2 utilitza seguretat basada en descriptors de desplegament. Això vol dir que les tasques de configuració i configuració són molt més fàcils a EJB3, i hi ha una reducció considerable de les despeses generals de rendiment en comparació amb EJB2.