2011-01-12 3 views
11

Completerò il corso Java di base e ora devo passare al lato Java EE. Sono così tanto confuso che dovrei semplicemente andare con Java EE 6 perché ho i libri che insegnano facilmente dall'inizio alla fine e tutto è lì.Devo andare per Spring o stick con Java EE 6?

Oppure devo iniziare solo con Spring?

Perché come devo ricominciare da zero, va bene, seguo la tendenza che è buona e più orientata al lavoro.

O anche se faccio solo Java EE e poi se devo passare a Spring sarà veloce o viceversa.

Anche dove si trova tra Hibernate? Voglio dire se uso Java EE 6, ho ancora bisogno di Hibernate o in Java EE 6, non ne ho bisogno.

Sarò in svantaggio se non utilizzo Spring o Spring per rendere la mia applicazione web di costruzione più semplice del core Java EE/JSF framework.

+0

La primavera è solo uno strumento. Spesso, più strumenti sai come usare meglio sarà. – DwB

risposta

15

Anche se la tua domanda suggerisce che Spring e Java EE sono due cose diverse, in realtà non lo sono. È possibile utilizzare molti componenti Java EE come

  • servlet e JSP per Spring MVC,
  • JPA per la primavera DAO.
  • JTA per la sicurezza primavera

L'unica grande molla cosa sostituisce nello stack Java EE è il EJB. A meno che non insisti sull'utilizzo di EJB, Spring dovrebbe essere la strada da percorrere.Anche Spring fornisce supporto integrato per i servizi web e altre cose.

Controllare anche il Groovy e il Grails che utilizzano Spring come base.

Infine, direi che entrambe le funzionalità fanno lo stesso. È il codice (Java EE) rispetto alla configurazione (Spring), una questione di preferenze davvero.

+0

Con l'ultima affermazione si sta facendo un suggerimento JEE 6 non supporta la configurazione avanzata, che non sono d'accordo. JEE6, credo che segua il principio di "convenzione sulla confiurazione" –

+0

Sì, con le Annotazioni puoi fare molta configurazione, ma non puoi ottenere il codice di inizializzazione e "Boilerplate" con JEE da solo. – Manoj

+2

+1 per "Anche se la tua domanda suggerisce che Spring e JEE sono due cose diverse, in realtà non lo sono." – Ralph

7

Tutti i miei commenti dovrebbero essere presi con un pizzico di sale. Sono stato un utente Spring dalla versione 1.0; Non ho mai utilizzato alcuna versione di EJB in produzione, dalla versione 1.0 ad oggi.

La primavera mi ha servito bene: qualsiasi tecnica che vorrei applicare da Java EE è disponibile per me in primavera. Ho utilizzato i servizi Web, LDAP, messaggistica e moduli portlet insieme ai soliti sospetti di persistenza, servizi remoti e web MVC. Il codice è eccellente. Trovo che l'enfasi sulla stratificazione, sulla codifica per le interfacce, sull'integrazione delle dipendenze e sulla programmazione orientata all'aspetto sia vantaggiosa per i miei progetti.

La verità è che puoi scegliere o farlo funzionare. C'è poco vantaggio o svantaggio a questo punto, perché EJB 3 ha preso così tanto da Spring che dovrebbero essere simili. Non posso dirlo per esperienza personale, perché non ho usato EJB 3.

Nessuno dei miei datori di lavoro o clienti chiedono a gran voce l'EJB 3. Le persone nel mio mercato utilizzano Spring o .NET per parlare con i servizi web su HTTP.

Gli EJB richiedono l'utilizzo di RMI o CORBA come protocollo di rete. Credo che i protocolli basati su HTTP, che si tratti di RPC-XML, SOAP o REST, stanno vincendo, perché di solito è semplice e aperto.

Nessuno può predire il futuro, quindi la consulenza sul lavoro non vale nulla. Le tue condizioni di mercato locali potrebbero non essere le stesse di quelle del mio. Puoi proteggere le tue scommesse e imparare entrambi. Qualunque sia la tua scelta, è quasi certo che dovrai imparare qualcosa di nuovo in futuro che non sarà né EJB né Spring. Quindi sceglierne uno e sii pronto a cambiare.

+2

+1 "Nessuno dei miei datori di lavoro o clienti chiedono a gran voce l'EJB 3" <- Convenuto! – Casey

0

Spring e Java EE 6 è in un certo senso simile. Si fanno strada in parallelo. Penso che sarà meglio se impari Java EE 6 e poi (se vuoi/hai bisogno) impari Spring.

In Java EE esiste una persistenza Java che funziona molto bene per diversi scopi di query del database.

1

Dalla mia esperienza personale dall'apprendimento della programmazione Java EE/Web dal solo standard Java, ho cercato di passare direttamente ad alcuni framework senza una chiara comprensione di come funzionavano le risorse Java EE/Web. Sebbene non tutto Java EE sia rilevante se si utilizza un framework come Spring, penso che sia una buona idea avere una buona conoscenza di alcune delle tecnologie sottostanti. Non devi esagerare, ma comprendere alcune delle nozioni di base è una buona idea.

Quando qualcosa non è configurato correttamente nelle librerie (come Spring) a volte assume un certo livello di conoscenza sulla parte dell'utente. Dopo aver lottato con alcuni problemi di base, ho passato un po 'di tempo e sono tornato alle basi. Successivamente sono stato in grado di gestire meglio i framework.

Mi piacerebbe comunque rinunciare al percorso EJB.

0

Prima di tutto comprendere che Java EE non è una singola specifica, ma un insieme di specifiche. Mentre la primavera è un quadro. Spring ha una perfetta integrazione con molte specifiche Java EE incluso EJBs. L'idea di utilizzare le specifiche è rendere la vostra applicazione portatile tra diverse implementazioni di questa specifica. Sfortunatamente questo non funziona molto bene nella vita reale.
Ora per quanto riguarda Hibernate. Di nuovo: è un quadro. Java EE include una specifica chiamata JPA. Hibernate implementa JPA. Potresti trovare altre implementazioni. Quindi se stai usando un'altra implementazione, non hai bisogno di Hibernate.

Ora, probabilmente vorrai conoscere la linea di fondo. Non ce l'ho davvero. Se stai studiando Java, più sai, meglio sarà.
Se stai cercando tecnologie per avviare una nuova applicazione web, credo che sia meglio utilizzare Spring con un contenitore servlet (il contenitore servlet fa parte di Java EE!) Come Jetty o Tomcat + per utilizzare JPA (implementazione di Hibernate) per la persistenza .

0

Non c'è davvero alcun motivo per andare con Spring su un nuovo progetto. Ci sono un sacco di applicazioni là fuori che ancora lo usano però. Dovresti sicuramente imparare Java EE prima del Spring. Spring utilizzato per semplificare lo sviluppo. A questo punto però è più facile lavorare con lo Java EE e si può anche eliminare la dipendenza Spring.