¿Necesito conocer servlets y JSP para aprender spring o hibernate o cualquier otro framework web java? [cerrado]

17

Le he preguntado a muchas personas dónde comenzar a aprender el desarrollo web de Java, ya conozco Core Java (Threading, Generics, Collections, un poco de experiencia con (JDBC)) pero no conozco JSP y servlets. Hice mi parte del desarrollo con varias aplicaciones basadas en la web usando PHP para el lado del servidor y HTML, CSS, Javascript, HTML5 para el lado del cliente.

La mayoría de las personas a las que les pregunté me dijeron que saltara directamente a Hibernate, mientras que algunos me dijeron que no necesitaba aprender servlets y jsps y que debería estudiar de inmediato el marco de Spring. ¿Es esto cierto? ¿No necesito aprender servlets y JSP para aprender hibernar o Spring?

Todas sus respuestas me confundieron y ahora estoy completamente perdido de qué aprender o estudiar. Siento que si me saltara el aprendizaje de JSP y servlets, me perdería muchos conceptos importantes que seguramente me ayudarán en el futuro.

Entonces, la pregunta, ¿necesito tener servlets de base / conocimiento y JSP para aprender spring o hibernate o cualquier otro framework web java?

KyelJmD
fuente
3
Tenga en cuenta que hibernate es solo una capa de abstracción de base de datos, nada más, y se puede usar para conectar una fuente de datos en cualquier tipo de aplicación java, no solo una aplicación web.
Ed Griebel
1
Conocer los servlets y JSP no estaría de más, eche un vistazo a "Head First - Servlets and JSP". Una lectura fácil de entender, pero también cubre mucho.
Jaydee
@ Jaydee Actualmente estoy dirigiendo Core Servlets y JSP por Marty Hall + los servlets de Murach y JSP.
KyelJmD
No creo que esta pregunta haya sido respondida adecuadamente. Bear Bibeault, un desarrollador y autores bien conocidos insiste en que uno aprenda JSP y Servlets antes de aprender CUALQUIER marco. ¿A alguien le importa mostrar por qué eso puede o no ser aplicable hoy? Aquí está su publicación - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat Sagdiyev
De acuerdo, obtuve algunas respuestas de Bear Bibeault. Vea estos dos enlaces: coderanch.com/t/633527/Spring/… y coderanch.com/t/633526/JSP/java/…
Borat Sagdiyev

Respuestas:

17

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.

GlenPeterson
fuente
¿Tienes algún enlace o tutorial donde pueda comenzar a aprender dichas tecnologías? o quizás una buena sugerencia para un libro. La mayoría de las aplicaciones que hice utiliza un RDBMS, desde SQL Server a un MySQl simple.
KyelJmD
Limpié mi respuesta y agregué enlaces según lo solicitado. Hibernate / JPA y los diversos marcos web toman tiempo para aprender y dominar. En la mayoría de las otras tecnologías, ya sabes lo suficiente como para poder trabajar en unas pocas horas o un día. No conozco Spring, pero revise la documentación en su sitio web u obtenga un libro altamente calificado en Amazon.
GlenPeterson
No veo cómo esto responde la pregunta. Bear Bibeault, un desarrollador y autores conocidos insiste en que uno aprenda JSP y Servlets antes de aprender CUALQUIER marco. ¿Le gustaría mostrar por qué eso puede o no ser aplicable hoy? Aquí está su publicación - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat Sagdiyev
@GlenPeterson, "Todo el marco original de Struts era un solo servlet". ¿sentido? ¿No ralentizaría cada llamada http?
Pacerier
@Pacerier Solíamos cargar Struts 1 en Tomcat como un servlet. El servlet Struts Controller enviaría diferentes solicitudes a diferentes subprocesos de la misma manera que lo haría un servidor web, solo en el nivel de servlet en lugar del nivel de contenedor. Me imagino que los gastos generales fueron mínimos. Lo que suele ser más lento son las llamadas a la base de datos. Segundo más lento, construyendo el HTML y devolviéndolo al cliente. En ese momento era popular usar un servidor separado para contenido estático para velocidad, por lo que funcionó.
GlenPeterson el
4

Sugeriría aprender sobre JSP y Servlets básicos, ya que le ayudará a comprender los conceptos que se simplifican en Spring. Dado que tiene experiencia con CGI basados ​​en PHP, la mayoría de los JSP / Servlets serán diferentes formas de hacer cosas con las que está familiarizado, por lo que deberían ir bastante rápido. Lo más difícil que puede encontrar será elegir modismos únicos en el mundo de Java.

En lo que respecta a Hibernate, estaré de acuerdo con MebAlone y le diré que lo aprenda si lo necesita, pero si ya está configurado, puede hacer el 90% de lo que necesitará con solo cimentar lo que otros han hecho.

Ed Griebel
fuente
2

Parece que quiere aprender el desarrollo web del lado del servidor con Java. Hay una serie de marcos. Spring MVC es, de hecho, el más popular, es maduro, muy completo y un buen marco para conocer. Spring MVC y otros marcos web de Java abstraen la API de servlet de Java del programador, por lo que técnicamente no necesita saberlo. Pero sugeriría aprender lo básico, particularmente las clases clave. Un día de estudio debería llevarte allí.

En cuanto a JSP, si conoces PHP ya entiendes lo esencial. JSP es la versión de Java de las secuencias de comandos del lado del servidor.

Hibernate es una implementación (la más popular) de JPA, que es la especificación de Java para objetos persistentes en RDBMS. Con la explosión en popularidad de los db de NOSQL (Hadoop, Mongo, etc.), Hibernate es mucho menos "imprescindible" que hace 18 meses. Personalmente, aprendo tecnologías de almacenamiento según sea necesario porque hay muchas de ellas y pierdes lo que no usas.

MebAlone
fuente
¿Qué libro podrías sugerir para Spring MVC? ¿Cuál es la diferencia apuesta Spring and Spring MVC?
KyelJmD
Spring es una pila de tecnología java que incluye una amplia variedad de proyectos. Spring MVC es el marco web del lado del servidor. La documentación en línea y las aplicaciones de muestra de Spring son la mejor manera de aprender Spring MVC.
MebAlone
2

Respuesta corta: no, no necesita aprender Servlets y JSP como requisito previo para Spring MVC y muchos otros frameworks web Java.

Primero saquemos a Hibernate de la imagen. Es un marco de capa de persistencia y no tiene nada que ver con Servlets y JSP.

Servlet API es el nivel más bajo para casi todos los frameworks web Java. Incluso los JSP se compilan en servlets.

Spring MVC es una capa superior a la API de Servlet con muchas extensiones útiles e integración con Spring Core. Puede usar JSP como mecanismo de representación para Spring MVC. El tutorial Spring MVC lo llevará desde cero para crear aplicaciones web. A medida que avance, aprenderá sobre JSP y estará bien equipado para comprender también la API de Servlet.

Yuriy Zubarev
fuente
¿Qué libro o video tutorial sugerirías para aprender Spring MVC?
KyelJmD
1
@YuriyZubarev: no veo cómo esto responde la pregunta. Bear Bibeault, un desarrollador y autores conocidos insiste en que uno aprenda JSP y Servlets antes de aprender CUALQUIER marco. ¿Le gustaría mostrar por qué eso puede o no ser aplicable hoy? Aquí está su publicación - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Borat Sagdiyev
-1

parece que estás atrapado en un problema que enfrenté recientemente. Mi objetivo era aprender el desarrollo del lado del servidor con Java. Entonces, comencé con servlets, entendí su funcionamiento y escribí algunos programas simples para ejecutar en el servidor TomCat. TomCat, es un requisito previo. Definitivamente debe estar familiarizado con TomCat si desea continuar. En lo que respecta a struts2 o Spring, struts2 y spring son marcos construidos sobre servlets, lo que hace que tener una comprensión profunda de los servlets sea esencial si quieres ser fuerte en lo básico. Comencé con los tutoriales de Java Brains. Para un principiante, estos tutoriales son increíbles. Algunos trabajos de Jakob Jenkov en su blog también son realmente increíbles. Struts2 y Spring se vuelven más simples cuando conoces servlets. En lo que respecta a la hibernación, le sugiero que comience a familiarizarse realmente con JDBC. Ir paso a paso, servlets, struts, JDBC, Spring, Hibernate. Espero que mi respuesta ayude :).

Chan_k
fuente
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito