Sviluppo web Java EE, da dove comincio e di quali competenze ho bisogno? [chiuso]


216

Voglio imparare, almeno a livello base, come costruire applicazioni web Java (provenienti da un background .NET). Vorrei essere in grado di creare, distribuire una semplice applicazione di tipo CMS da zero.

Cosa devo imparare esattamente?

Tomcat sembra essere un buon server web per Java.

Quali opzioni ci sono per il web? So che c'è Hibernate per un ORM.

Java ha MVC? Che mi dici di JSP ? Possono MVC e JSP stare insieme? NetBeans ?

Forse un libro che copre tutti questi?

Risposte:


261

(Aggiornato a marzo 2020)

Prima di tutto, "Java EE" da settembre 2019 è stato rinominato " Jakarta EE ", a partire dalla versione 8. Storicamente, c'era anche il termine "J2EE" che copriva le versioni da 1.2 a 1.4. "Java EE" copriva le versioni dalla 5 alla 8. Vedi anche Java Platform, Enterprise Edition, History su Wikipedia .

Cosa devo imparare esattamente?

Presumo che tu abbia già familiarità con le tecnologie lato client come HTML , CSS e JS , quindi non entrerò nei dettagli. Presumo anche che tu abbia già familiarità con Java di base. Segui i tutorial di Oracle su Java e, se possibile, procurati anche un libro o un corso OCP .

Quindi puoi iniziare con JSP / Servlet per apprendere i concetti di base dello sviluppo web Java. Buoni tutorial possono essere trovati nel tutorial Java EE 5 parte II capitoli 3 - 8 di Oracle e su Coreservlets.com ( Beginner-Intermediate e Advanced, anche JDBC ). Notare che a partire da Java EE 6, JSP è stato rimosso dal tutorial Java EE a favore di JSF e che JSP praticamente non è cambiato da allora. Ecco perché potresti usare tranquillamente il tutorial abbastanza vecchio Java EE 5 per questo. La cosa più importante riguardo a JSP è il fatto che la scrittura di codice Java semplice nei file JSP utilizzando <%scriptlet %>è ufficialmente scoraggiata dal 2003. Vedi anche Come evitare il codice Java nei file JSP? Quindi tutti i tutorial che trattano ancora gli scriptlet dovrebbero essere saltati in quanto ti porteranno sicuramente in una spirale discendente di apprendimento delle cattive pratiche.

Qui su Stack Overflow, puoi anche trovare belle pagine wiki su JSP , Servlet , JSTL ed EL dove puoi imparare gli elementi essenziali e trovare collegamenti più utili.


Tomcat sembra essere un buon server web per Java.

È. Tuttavia è limitato nelle capacità. È fondamentalmente un contenitore servlet barebone, che implementa solo le parti JSP / Servlet dell'enorme API Java EE. Se vuoi usare EJB o JPA, allora ne scegli un altro, ad esempio WildFly , TomEE , Payara , Liberty , WebLogic , ecc. Altrimenti devi usare Spring invece di Java EE. Non è cioè possibile installare EJB in un servlet container barebone senza modificare il motore principale, nel caso di Tomcat dovreste fondamentalmente reinventare TomEE. Vedi anche Cos'è esattamente Java EE? , Come installare e configurare correttamente le librerie JSF tramite Maven? e come installare e utilizzare CDI su Tomcat?


So che c'è Hibernate per un ORM.

In precedenza, durante l'era J2EE, quando JPA non esisteva ed EJB2 era terribile, Hibernate era un framework autonomo e spesso usato in combinazione con Spring per soppiantare EJB. Dall'introduzione di JPA in Java EE 5 (2006), Hibernate è diventata un'implementazione JPA. Puoi imparare JPA nella parte VIII del tutorial Jakarta EE . Inoltre, EJB3 è stato molto migliorato sulla base delle lezioni apprese da Spring. Vedi anche Quando è necessario o conveniente usare Spring o EJB3 o tutti insieme?


Java ha MVC? Che mi dici di JSP? Possono MVC e JSP stare insieme? JavaBeans?

Puoi , ma questa è una grande reinvenzione della ruota quando si tratta di legare il modello alla vista (conversione, convalida, modifica degli ascoltatori, ecc.). Il framework MVC di Java EE si chiama JSF . Prima di Java EE 6 veniva eseguito su JSP, che è una tecnologia di visualizzazione piuttosto legacy. JSP è stato sostituito da Facelets . Puoi imparare JSF al tutorial Jakarta EE parte III capitoli 7-17 . A proposito, puoi anche usare JSF su Tomcat, devi solo installarlo separatamente. Le istruzioni di installazione possono essere trovate sulla homepage di Mojarra. WildFly, TomEE, Payara, Liberty, WebLogic, ecc. Essendo un'implementazione completa di Java EE, forniscono già JSF (e CDI, BV, JSONP, JAX-RS, EJB, JPA, ecc.), Quindi non è necessario installalo separatamente. Vedi anche Come installare e configurare correttamente le librerie JSF tramite Maven?


Forse un libro che copre tutti questi?

Ci sono diversi libri. Consiglierei di iniziare con un libro incentrato su Jakarta EE in generale , un libro più incentrato su JSF e un libro più focalizzato su JPA . Assicurati di scegliere il libro più recente che tratta l'argomento. Prima esamina la versione più recente disponibile e poi assicurati che il libro scelto la copra. Quindi non scegliere assolutamente un vecchio libro per Java EE 5 o JSF 1.0 o giù di lì mentre sono già disponibili Jakarta EE 8 e JSF 2.3.

Ultimo ma non meno importante, si prega di ignorare i siti di scraping di frammenti di codice gestiti da dilettanti che si concentrano principalmente sugli introiti pubblicitari anziché sull'insegnamento, come roseindia, tutorialspoint, javabeat, journaldev, javatpoint, codejava, ecc. Sono facilmente riconoscibili da collegamenti pubblicitari disturbanti / banner e frammenti di codice JSP contenenti scriptlet .

Guarda anche:


Greate! utile, grazie. In .Net, di solito il libro di Wrox Press può coprire tutte le conoscenze in .net. Un libro molto spesso.
gfan

5
StackOverflow non ha una funzione di pubblicazione Pin? Vorrei che lo facesse, così potrei appuntare questa risposta. Grazie!
dww

DEVE esserci un'alternativa al tutorial JavaEE 5. So di essere un niubbo e probabilmente siete molto bravi. Ma ... Sto cercando di imparare da quel tutorial. È molto bloccato e dipende da determinate impostazioni. Quindi, ho bisogno di imparare NetBeans. quindi devo rinunciare al mio server e probabilmente passare a glassfish, cercando di trovare il codice di campionamento da eseguire e da cui imparare non è stato il più facile. Non potevo eseguire sul server. invece sono stato accolto con qualcosa chiamato maven build. Pensavo di aver provato il risultato di eclipse impazzito! a quanto pare ho bisogno di imparare anche Maven, e questo, quell'altro e il diavolo nonno ...
monello

@brat: la risposta contiene collegamenti ad alternative e libri.
BalusC

Bene. Solo uno che copre molto. Coreserv ... Ho dovuto raccogliere frammenti qua e là. Sono entrato in pieno con il tut ufficiale JavaEE ora :) Solo per scoprire l'SDK che è necessario scaricare, per eseguire il codice di esempio ha un server GlassFish che non funziona con JDK 10 :(, NullPointerException all'avvio. Trovato un hack stackoverflow.com / questions / 47458119 / ... e quindi ho bisogno di scaricare ... e così via e così via. Immagino di essere solo un po 'giù di morale e stronzo per dover fare i salti mortali per imparare. :(. Non lo rendono facile per noobs x). Cheers :)
brat

28

Cosa devo imparare esattamente?

Minimamente,

  • Java il linguaggio
  • Java l'API, incluso JDBC per l'accesso al database
  • Un IDE o un editor di testo + Ant
  • Java EE, fondamentalmente, servlet e JSP
  • Un servlet container (come Tomcat)

Tomcat sembra essere un buon server web per Java.

È "decente". Se non ti piacciono gli EJB, probabilmente non avrai bisogno di imparare nient'altro. Glassfish 3 sembra essere piuttosto interessante ultimamente, ma non ci ho ancora giocato molto. Nota, è "più" di un server web. È un contenitore servlet (il che significa che può eseguire app utilizzando la tecnologia servlet).

Quali opzioni ci sono per il web?

Circa un milione di framework diversi. In realtà, sceglierne uno è davvero "difficile". Si è tentati di provarli tutti, ma alla fine non è fattibile.

So che c'è l'ibernazione per un ORM.

Sono un po 'anti-ORM, ma Hibernate è ciò di cui hai bisogno se hai bisogno di un ORM "completo". Puoi anche provare ORM "parziali", come il supporto JDBC di Spring o iBatis.

Java ha MVC? che dire di JSP? possono MVC e JSP stare insieme? fagioli?

Sì, la maggior parte dei framework Web Java esegue MVC. L'MVC di Spring è carino, ma non posso consigliare nient'altro (soprattutto, non Struts 1!). JSP è solo un motore di template HTML (o XML). JSP vecchia scuola, con codice Java incorporato non è cool; il JSP moderno con file di tag e librerie è abbastanza buono.

Suppongo che la maggior parte dei framework ti consentirà di utilizzare JSP per rendere i tuoi V; MVC e Struts di Spring lo fanno. Alcuni ti permetteranno di usare anche qualcos'altro (Velocity, Freemarker, ecc.).

Beans è solo una convenzione per gli oggetti. Fondamentalmente, significa che stai usando getter e setter (o alcune alternative) e stai seguendo alcune regole. Questi dovrebbero consentire al tuo oggetto di essere manipolato da determinati strumenti. L'esempio tipico è una GUI, alcuni strumenti ti permetteranno di costruire componenti GUI per modificare i bean arbitrari (cioè renderanno un modulo per modificare i suoi campi).


16

Hai bisogno di HTML, CSS e JavaScript, tutti i soliti sospetti per lo sviluppo web.

Tomcat ha un server web integrato, ma è un motore servlet / JSP . Apache è il server web puro.

È necessario imparare JSP, che è un linguaggio di modellazione per la generazione di servlet che generano output HTML. Ti consigliamo di scriverli utilizzando JSTL, non scriptlet.

Se stai utilizzando applicazioni CRUD, dovrai imparare a utilizzare JDBC e database relazionali. Dovresti farlo prima di provare Hibernate o qualsiasi altro ORM, perché è la base su cui sono costruiti.

I JavaBeans sono solo standard per gli oggetti Java.

Se sei pronto, consiglierei il framework Spring.


dici che Tomcat ha un server web integrato, che altro è allora? pensavo fosse solo un server web?
mrblah

6
@mrblah - Tomcat è un motore servlet. È stato creato per elaborare le classi servlet (che sono ciò in cui vengono trasformati i jsp) e fornire l'output a un browser. Oltre a ciò, serve anche tutti i file normali (immagini, html, css, ecc.) Proprio come fa un server web. È paragonabile ad Apache con un modulo php.
Nemi

13

Java ha MVC?

Java ha diversi framework come Struts2 , Spring MVC

che dire di JSP?

JSP è una libreria di modelli. Ci sono poche alternative che potresti provare come FreeMarker e Velocity . AFAIK Freemarker è una buona libreria di modelli emergente. È leggero di JSP . Controlla questo FreeMarker : un'alternativa aperta a JSP - JavaWorld

possono MVC e JSP stare insieme?

Prendo MVC come un framework menzionato in precedenza. Tutti i framework supportano JSP ma è necessario verificare il supporto per altre librerie di modelli nella documentazione dei rispettivi framework. AFAIK Struts2 ha un ottimo supporto per Freemarker.

fagioli?

Non ne so molto. Ma usando i bean possiamo mappare direttamente i dati del modulo ai database.

Forse un libro che copre tutti questi?

Ogni framework ha il suo libro. Per Struts2 - Struts 2 in azione

String MVC - Dai un'occhiata a queste domande consigliando libri per Spring e Spring MVC. Suggerimenti per libri per Spring Framework e Spring Books: quale scegliere

Fremarker ha un'ottima documentazione - FreeMarker Manual

Per iniziare a sviluppare web in Java -

testo alternativo

http://www.amazon.com/SCWCD-Exam-Study-Kit-Certification/dp/1930110596


5

Considero la maggior parte delle tradizionali opzioni di sviluppo web Java piuttosto pesanti e ci sono alcune buone alternative:

  • Play è un framework MVC che si concentra sull'essere leggero, diretto e consentire uno sviluppo rapido, pur restando fedele a Java puro, al contrario di un linguaggio basato su JVM più dinamico. È abbastanza nuovo ma già impressionante e intorno ad esso si è creata rapidamente una buona comunità.

  • Grails è un framework MVC, ispirato a Ruby on Rails, che è scritto e utilizza Groovy , un linguaggio di scripting basato su Java. Grails è maturo, robusto e ampiamente rispettato, con una forte comunità. Groovy è fondamentalmente un superset di Java, con una migliore sintassi e alcune ottime funzionalità come le chiusure, quindi impararlo è un ottimo modo per imparare Java.

  • Se hai bisogno / vuoi creare siti / servizi / applicazioni RESTful , Restlet è un framework fantastico - sono un grande fan. È semplice, diretto e allo stesso tempo flessibile. Anche una grande comunità.

  • Anche App Engine di Google è un'opzione interessante. È ospitato, il che può interessare o meno, ma ha un'API abbastanza semplice e un buon SDK.

Sono sicuro che ce ne sono altri, ma questi sono quelli a cui riesco a pensare fuori dalla mia testa.

Buona fortuna e buon divertimento!


Oh, e ho appena scoperto Prudence l'altro giorno: threecrickets.com/prudence
Avi Flax

3

Sono un programmatore PHP / C e ho scoperto che mi ha permesso di saltare in Java senza imparare tutte le classi e i paradigmi inerenti alla programmazione Java. Groovy mi ha permesso di essere produttivo rapidamente, dedicando tempo per saperne di più su Java e su tutti gli strumenti / framework / librerie disponibili.


3

Se non vuoi lavorare con html, css, xml, javascript ecc ..

Prova il framework Vaadin , è ben documentato, facile da imparare e consente di creare un'interfaccia utente di bell'aspetto in modo semplice. (scrivi solo codice Java, ovviamente hai bisogno di un server servlet, Tomcat o Jetty andranno bene)


2

È meglio che impari Java, poi impari Servlet e JSP, quindi scegli MVC, vai su Struts o Spring o qualsiasi altro framework abilitato per Java / Java.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.