Si tiene una buena comprensión de HTML, CSS y JavaScript, tiene ventaja sobre muchas personas que terminan haciendo desarrollo web. Los conceptos detrás de JSP son muy similares a PHP. Las peculiaridades son diferentes. Un servlet es el nombre de un fragmento de código Java que sirve una solicitud. Eso es todo realmente. Todo el marco original de Struts era un solo servlet.
Agregaría Tomcat o Jetty a su lista de tecnologías para aprender. Tomcat es la implementación original de Java Servlet Container y también es un servidor web con todas las funciones y bastante popular. GlassFish está construido encima. He estado usando Jetty en lugar de Tomcat en mis proyectos más nuevos porque es más simple, más flexible y más rápido. Jetty fue diseñado para hacer servicios web en lugar de aplicaciones web. Pero una aplicación web es solo un servicio web que sirve HTML en respuesta a solicitudes HTTP sin procesar, por lo que si comprende HTTP (del cual puede aprender las partes importantes en unas pocas horas al día), es muy fácil trabajar con él.
Puede crear un pequeño sitio web con Tomcat y JSP ( tutorial aquí o JSF) sabiendo exactamente lo que sabe y pasando unas horas revisando tutoriales. De esa manera, puede comenzar donde se sienta cómodo antes de estirarse. Luego haga un javax.servlet.http.HttpServlet que escriba "<html> <head> <title> Hi </title> </head> <body> <h1> Hello World </h1> </body> </ html > "al objeto de respuesta, enumérelo en su Tomcat web.xml y envíe una solicitud HTTP desde un navegador web. No es una ciencia exacta. Todos los marcos web Java son variaciones de esas dos actividades básicas.
Si va por la ruta Jetty, es aún menos estructurada. Mira este ejemplo de Hello Jetty .
Si solo va a hacer un blog o un sitio de comercio electrónico estándar, comenzaría con SquareSpace o Wordpress o algo así. Obtiene mucho de la plataforma, ya no hay forma de justificar la codificación personalizada.
La fortaleza de Java para aplicaciones web es su confiabilidad, mantenibilidad y rendimiento. PHP o Ruby / Rails es más simple, pero Java se escalará tanto como quieras. Ninguno de los marcos web de Java me deja boquiabierto. Cuando tienes un equipo de personas trabajando en una gran aplicación web, o necesitas usar Hibernate, entonces un marco como Spring realmente brilla. La primavera es la más popular. Cuando esté familiarizado con los servlets y JSP / JSF, aprenda cómo Spring los une con un modelo de datos.
Si está creando un blog o un sistema de gestión de contenido, tal vez pueda salirse con una base de datos NoSQL. Pero diría que las bases de datos NoSQL son básicamente una capa de almacenamiento en caché en un sistema de archivos, en lugar de reemplazar las bases de datos relacionales. Creo que es raro que un proyecto que se ajuste bien a una base de datos NoSQL sea apropiado para desarrollarse en Java.
Las cosas que todavía requieren un código personalizado de alto rendimiento (en Java, PHP, lo que sea) probablemente tendrán una base de datos relacional / SQL que las alimentará. Te recomendaría que primero te familiarices con SQL y JDBC (Java Database Connectivity). Después de que se sienta cómodo con el mundo de los objetos Java y el mundo de las bases de datos relacionales y SQL, puede aprender Ebean / JPA (Java Persistence API) / ORM (Object to Relational Mapping) que conecta el mundo de objetos con el mundo relacional.
Los ORM son difíciles y extraños. La mayoría finalmente vale la pena la lucha. Ebean es el más simple que conozco. Me siento más cómodo con él después de 8 meses que con Hibernate después de 12 años. Conozco a muchas personas que usan Spring con Hibernate y no parecen tener ningún problema, ni siquiera son particularmente conscientes de lo que Hibernate es o hace, así que diría que si vas a usar Hibernate, hazlo hasta la primavera. Tal vez solo porque trabajé con él durante más tiempo, logré desconectar por completo a Hibernate con un par de mapas hash para probar, lo cual es increíble (visión general disponible a pedido).
Ya tienes algunas de las habilidades más importantes. Tome a los demás uno a la vez y trate de no sentirse abrumado.