2015-03-16 22 views
8

Attualmente sto preparando il mio studio finale del progetto. Devo sviluppare un'applicazione distribuita per la gestione delle risorse umane, ma sul mio punto di riferimento per le tecnologie da utilizzare ho trovato confuso decidere tra Spring o EJB 3.1.Spring vs EJB (vantaggio e svantaggio)

Non so quale sarà il più adatto e più facile da usare. Sono un principiante per entrambe le tecnologie e quindi spero che qualcuno possa aiutarmi.

+2

http://stackoverflow.com/questions/7076144/ejb-3-1-or-spring-3-when-to-choose-which-one – elsadek

risposta

34

Non si sceglie tra EJB e Spring, in realtà si sceglie tra Java EE e Spring perché EJB è solo una parte di Java EE che include anche altri componenti come JMS, Servlet, JSP, JSF, CDI, ecc. I primi giorni (J2EE 1.4), il modello di programmazione dell'edizione enterprise di Java aveva molti difetti e carenze, ma i più importanti erano che era noioso e prolisso con un sacco di codice della piastra della caldaia e tonnellate di configurazioni xml. La primavera è stata introdotta come una struttura alternativa che privilegia il principio della convenzione sulla configurazione. In altre parole, in primavera c'erano alcune impostazioni predefinite che potevano essere riconfigurate se ne avete bisogno. Java EE 5 ha introdotto cambiamenti significativi adottando lo stesso principio di convenzione-over-configuration di Spring riducendo drasticamente la quantità di codice e la complessità necessaria per far funzionare le cose, quindi in questo settore Spring non ha più alcun vantaggio sensazionale.

È anche importante ricordare che Java EE è solo una specifica. Per creare un'app per il mondo reale è necessaria un'implementazione e ce ne sono molte oggi - Glassfish, JBoss, TomcatEE, ecc. Forniscono tutte diverse implementazioni delle specifiche Java EE introducendo una complessità aggiuntiva - Voglio dire, ora devi scegliere quale implementazione Java EE scegliere. Puoi costruirlo con Spring che proviene da un'unica fonte.

Entrambi i framework offrono praticamente funzionalità simili. Tutte le transazioni di supporto, ORM, forniscono strumenti per la creazione di business logic, supporto CDI, AOP. Sia in Spring che in Java EE è possibile utilizzare solo le parti di cui si ha bisogno, in altre parole non è necessario utilizzare l'intero framework. Puoi persino usarli insieme: possono interagire. Grazie all'introduzione di contenitori incorporabili ora è possibile utilizzare anche le funzionalità Java EE necessarie in aree come le applicazioni desktop che tradizionalmente erano il regno di Spring.

Ma un'area in cui Java EE manca ancora in primavera è testabilità confortevole. Non è facile scrivere test unitari per EJB - per questo devi usare uno speciale framework di terze parti (Arquillian) e scrivere un codice di codice all'interno dei tuoi test (ad es. Per costruire il pacchetto di distribuzione di test e distribuirlo sul contenitore, ecc. .). Infatti, Java EE non ha alcun supporto per testare EJB fuori dalla scatola. Al contrario, Spring è costruito con testabilità e TDD in mente. Testare i bean Spring è facile dato che Spring include il supporto in bundle sia per i test (unit test, test di integrazione) di tutte le parti dell'applicazione che per il mocking.

+0

grazie per la risposta, è stato molto utile – Informatique2015

+1

Ottima risposta . A volte sembra che ogni volta che qualcuno chiede l'infame "primavera o ejb", la domanda finisce in una sorta di discussione religiosa infondata –

Problemi correlati