Se hai una buona conoscenza di HTML, CSS e JavaScript, hai un vantaggio su molte persone che finiscono per fare lo sviluppo web. I concetti alla base di JSP sono molto simili a PHP. Le stranezze sono diverse. Un servlet è il nome di un blocco di codice Java che serve una richiesta. È proprio così. L'intero framework originale Struts era un singolo servlet.
Vorrei aggiungere Tomcat o Jetty al tuo elenco di tecnologie per imparare. Tomcat è l'implementazione originale di Java Servlet Container e sembra essere anche un server Web completo e piuttosto popolare. GlassFish è costruito su di esso. Ho usato Jetty invece di Tomcat nei miei progetti più recenti perché è più semplice, più flessibile e più veloce. Jetty è stato progettato per rendere i servizi Web invece delle app Web. Ma un'app Web è solo un servizio Web che serve HTML in risposta a richieste HTTP non elaborate, quindi se capisci l'HTTP (di cui puoi imparare le parti importanti in poche ore al giorno), è molto facile lavorare.
Puoi creare un piccolo sito Web con Tomcat e JSP ( tutorial qui o JSF) sapendo esattamente quello che sai e trascorrendo alcune ore a seguire i tutorial. In questo modo puoi iniziare da dove ti senti a tuo agio prima di allungarti. Quindi crea un javax.servlet.http.HttpServlet che scrive "<html> <head> <title> Ciao </title> </head> <body> <h1> Hello World </h1> </body> </ html > "all'oggetto risposta, elencalo nel tuo Tomcat web.xml e invia una richiesta HTTP da un browser web. Non è scienza missilistica. Tutti i framework Web Java sono variazioni su queste due attività di base.
Se segui il percorso del molo, è ancora meno strutturato. Dai un'occhiata a questo esempio di Hello Jetty .
Se hai intenzione di creare un blog o un sito di e-commerce standard, inizierei con SquareSpace o Wordpress o qualcosa del genere. Ottieni così tanto dallo scaffale, non c'è più modo di giustificare la codifica personalizzata.
Il punto di forza di Java per le applicazioni Web è la sua affidabilità, manutenibilità e prestazioni. PHP o Ruby / Rails è più semplice, ma Java ridimensionerà quanto vuoi. Non sono ammaliato da nessuno dei framework web Java. Quando hai un team di persone che lavora su una grande applicazione web o devi usare Hibernate, allora un framework come Spring brilla davvero. La primavera è la più popolare. Quando hai familiarità con i servlet e JSP / JSF, allora impara come Spring li lega a un modello di dati.
Se stai creando un blog o un sistema di gestione dei contenuti, forse puoi cavartela con un database NoSQL. Ma direi che i database NoSQL sono fondamentalmente solo un livello di memorizzazione nella cache su un file system, piuttosto che sostituire i database relazionali. Penso che sia raro che un progetto adatto a un database NoSQL sarà appropriato per lo sviluppo in Java.
Le cose che richiedono ancora un codice personalizzato e ad alte prestazioni (in Java, PHP, qualunque cosa) probabilmente avranno un database relazionale / SQL che li alimenta. Ti consiglierei di acquisire prima una conoscenza di base di SQL e JDBC (Java Database Connectivity). Dopo aver acquisito familiarità con il mondo degli oggetti Java e il mondo dei database relazionali e di SQL, è possibile apprendere Ebean / JPA (Java Persistence API) / ORM (Object to Relational Mapping) che collega il mondo degli oggetti al mondo relazionale.
Gli ORM sono difficili e strani. La maggior parte alla fine vale la pena. Ebean è il più semplice che conosca. Mi sento più a mio agio dopo 8 mesi di quanto non lo sia con Hibernate dopo 12 anni. Conosco un sacco di persone che usano Spring con Hibernate e non sembrano avere alcun problema, o anche essere particolarmente consapevoli di ciò che è o fa Hibernate, quindi direi che se hai intenzione di usare Hibernate, fallo attraverso la primavera. Forse solo perché ci ho lavorato più a lungo, sono riuscito a stubare completamente Hibernate con un paio di mappe hash per i test, il che è fantastico (panoramica disponibile su richiesta).
Hai già alcune delle abilità più importanti. Prendi gli altri uno alla volta e cerca di non essere sopraffatto.