EJB2 vs EJB3
EJB (Enterprise JavaBeans) è un'API Java (Application Programming Interface) che si trova all'interno delle specifiche Java EE (Java Platform, Enterprise Edition). EJB descrive un modello architettonico per lo sviluppo di applicazioni aziendali. Si tratta di un modello gestito sul lato server in grado di acquisire la logica aziendale dell'applicazione aziendale. IBM è il creatore originale di EJB che lo ha sviluppato nel 1997. Sun Microsystems lo ha adottato nel 1999.
Prima dell'introduzione di EJB, è stato rilevato che le soluzioni ai problemi riscontrati nel codice commerciale back-end venivano spesso re-implementate dai programmatori. Di conseguenza, EJB è stato introdotto per affrontare questi problemi comuni come persistenza, integrità transazionale e sicurezza. EJB fornisce metodi standard per gestire questi problemi di back-end, specificando in che modo il server delle applicazioni deve elaborare le transazioni, integrarsi con i servizi JPA (Java Persistence API), gestire il controllo della concorrenza, gestire gli eventi JMS (Java Message Service), risolvere i problemi di denominazione con JNDI ( Java Naming and Directory Interface), sviluppare programmi sicuri con JCE (Java Cryptography Extension) e JAAS (Java Authentication and Authorization Service), distribuire componenti, comunicare in remoto con RMI-IIOP (interfaccia Java Invocation Method Remote tramite Internet Inter-Orb Protocol) , sviluppare servizi Web, richiamare metodi asincroni e utilizzare il servizio Timer.
EJB2
EJB2 (EJB 2.0) è stato rilasciato il 22 agosto 2001. Descrive le specifiche per lo sviluppo di applicazioni distribuite orientate agli oggetti in Java combinando strumenti sviluppati da diversi fornitori. Uno degli obiettivi principali di EJB2 era consentire ai programmatori di sviluppare più facilmente le applicazioni aziendali senza dover comprendere dettagli di basso livello, come il multi-threading e il pool di connessioni. Un altro obiettivo era quello di consentire ai programmatori di scrivere una "Bean" una volta e di eseguire ovunque senza ricompilazione (aderendo allo slogan "scrivi una volta, esegui ovunque" del linguaggio di programmazione Java). Inoltre, EJB2 intendeva consentire l'interoperabilità dei componenti sviluppati da diversi fornitori e consentire ai fornitori di scrivere estensioni per i loro prodotti in grado di supportare EJB.
EJB3
EJB3 (EJB 3.0) è stato rilasciato l'11 maggio 2006. EJB3 ha reso la vita dei programmatori molto semplice consentendo loro di utilizzare annotazioni al posto di descrittori di deployment che sono stati utilizzati nelle versioni precedenti. EJB3 contiene un'interfaccia di business e un bean di entità specifico che può implementare tale interfaccia aziendale, eliminando la necessità di utilizzare le interfacce home / remote e il file ejb-jar.xml. Le prestazioni complessive di EJB3 sono molto migliorate rispetto a EJB2 e in questa versione di EJB c'è un notevole aumento di configurabilità, flessibilità e portabilità.
Qual è la differenza tra EJB2 e EJB3?
EJB3 ha un notevole miglioramento nella configurazione e nelle prestazioni rispetto a EJB2. Una ragione per questo miglioramento delle prestazioni è l'uso del POJO (Plain Old Java Object) con metadati e descrittori di distribuzione XML di EJB3 invece delle ricerche JNDI utilizzate in EJB2 per i riferimenti a oggetti. La configurazione di EJB3 è molto più semplice perché il programmatore non ha bisogno di implementare interfacce Home / Remote e altre (ad esempio SessionBean), che rimuove la necessità di utilizzare metodi di callback del contenitore (come ejbActivate ed ejbStore).
Inoltre, EJB3 è migliore di EJB2 nelle aree di flessibilità e portabilità. Ad esempio, è facile convertire le entità EJB3 in DAO (Data Access Object) e viceversa perché le entità EJB3 sono leggere (al contrario delle entità EJB2 pesanti, che implementano le interfacce sopra menzionate). Le query di database scritte in EJB3 sono molto flessibili perché utilizzano un EJB-QL perfezionato, al posto della versione precedente di EJB-QL, che aveva diverse limitazioni. EJB3 rimuove tutti i problemi di portabilità di EJB2 (che utilizza bean di entità per l'accesso al database) supportando un JPA più generalizzato per tutte le transazioni di dati.
A differenza di EJB2, che necessita di un contenitore EJB da eseguire, EJB3 può essere eseguito in una JVM indipendente (Java Virtual Machine) senza dover utilizzare contenitori (ciò è possibile perché non implementa interfacce standard). A differenza di EJB2, EJB3 è facilmente collegabile con i provider di persistenza offerti da terze parti. Un'altra importante differenza tra EJB3 e EJB2 è che EJB3 può utilizzare la sicurezza basata sull'annotazione, mentre EJB2 utilizza la sicurezza basata sui descrittori di distribuzione. Ciò significa che le attività di configurazione e configurazione sono molto più semplici in EJB3 e vi è una notevole riduzione dei costi generali delle prestazioni rispetto a EJB2.