Desarrollo web Java EE, ¿por dónde empiezo y qué habilidades necesito? [cerrado]

216

Quiero aprender, al menos a un nivel básico, cómo construir aplicaciones web Java (provenientes de un fondo .NET). Me gustaría poder construir, implementar una aplicación simple de tipo CMS desde cero.

¿Qué necesito aprender exactamente?

Tomcat parece ser un buen servidor web para Java.

¿Qué opciones hay para la web? Sé que hay Hibernate para un ORM.

¿Java tiene MVC? ¿Qué hay de JSP ? ¿Pueden MVC y JSP estar juntos? NetBeans ?

¿Quizás un libro que cubre todo esto?

mrblah
fuente

Respuestas:

261

(Actualizado en marzo de 2020)

En primer lugar, "Java EE" ha sido renombrado desde septiembre de 2019 a " Jakarta EE ", comenzando con la versión 8. Históricamente, también existía el término "J2EE" que abarcaba las versiones 1.2 hasta 1.4. El "Java EE" cubrió las versiones 5 hasta 8. Ver también Java Platform, Enterprise Edition, History en Wikipedia .

¿Qué necesito aprender exactamente?

Supongo que ya está familiarizado con las tecnologías del lado del cliente como HTML , CSS y JS , por lo que no voy a entrar en detalles con eso. También supongo que ya estás familiarizado con Java básico. Siga los Tutoriales de Java de Oracle y, si es posible, obtenga un libro o curso de OCP también.

Luego puede comenzar con JSP / Servlet para aprender los conceptos básicos del desarrollo web Java. Se pueden encontrar buenos tutoriales en el tutorial de Oracle EE 5 de Java, parte II, capítulos 3 - 8 y en Coreservlets.com ( Principiante-Intermedio y Avanzado, también JDBC ). Tenga en cuenta que desde Java EE 6, JSP se elimina del tutorial de Java EE a favor de JSF y que JSP básicamente no ha cambiado desde entonces. Es por eso que puedes usar con seguridad el tutorial bastante antiguo de Java EE 5 para esto. Lo más importante con respecto a JSP es el hecho de que escribir código Java simple en archivos JSP utilizando <%scriptlets %>se desaconseja oficialmente desde 2003. Consulte también ¿Cómo evitar el código Java en archivos JSP? Por lo tanto, se deben omitir los tutoriales que todavía cubren scriptlets, ya que definitivamente lo llevarán a una espiral descendente de aprendizaje de malas prácticas.

Aquí en Stack Overflow, también puede encontrar buenas páginas wiki sobre JSP , Servlets , JSTL y EL donde puede aprender lo esencial y encontrar enlaces más útiles.


Tomcat parece ser un buen servidor web para Java.

Es. Sin embargo, tiene capacidades limitadas. Básicamente es un contenedor de servlet básico, que implementa solo las partes JSP / Servlet de la enorme API Java EE. Si alguna vez quiere ir a EJB o JPA, le gustaría elegir otro, por ejemplo, WildFly , TomEE , Payara , Liberty , WebLogic , etc. De lo contrario, debe usar Spring en lugar de Java EE. Es decir, no es posible instalar EJB en un contenedor de servlet barebones sin modificar el motor central, en el caso de que Tomcat básicamente esté reinventando TomEE. Consulte también ¿Qué es exactamente Java EE? , ¿Cómo instalar y configurar correctamente las bibliotecas JSF a través de Maven? y ¿Cómo instalar y usar CDI en Tomcat?


Sé que hay Hibernate para un ORM.

Anteriormente, durante la era J2EE, cuando JPA no existía y EJB2 era terrible, Hibernate era un marco independiente y a menudo se usaba en combinación con Spring para suplantar a EJB. Desde la introducción de JPA en Java EE 5 (2006), Hibernate se ha convertido en una implementación de JPA. Puedes aprender JPA en el tutorial de Yakarta EE, parte VIII . Además, EJB3 mejoró mucho según las lecciones aprendidas de Spring. Consulte también ¿ Cuándo es necesario o conveniente usar Spring o EJB3 o todos juntos?


¿Java tiene MVC? ¿Qué hay de JSP? ¿Pueden MVC y JSP estar juntos? JavaBeans?

Puede , pero eso es una gran reinvención de la rueda cuando se trata de vincular el modelo con la vista (conversión, validación, cambio de oyentes, etc.). El marco MVC de Java EE se llama JSF . Antes de Java EE 6, solía ejecutarse en JSP, que es una tecnología de visualización bastante heredada. JSP ha sido reemplazado por Facelets . Puede aprender JSF en el tutorial de Jakarta EE, parte III, capítulos 7-17 . Por cierto, también puede usar JSF en Tomcat, solo tiene que instalarlo por separado. Las instrucciones de instalación se pueden encontrar en la página de inicio de Mojarra. WildFly, TomEE, Payara, Liberty, WebLogic, etc., al ser una implementación completa de Java EE ya proporcionan JSF (y CDI, BV, JSONP, JAX-RS, EJB, JPA, etc.) listos para usar, por lo que no necesita instálalo por separado. Consulte también ¿Cómo instalar y configurar correctamente las bibliotecas JSF a través de Maven?


¿Quizás un libro que cubre todo esto?

Hay varios libros Recomendaría comenzar con un libro centrado en Jakarta EE en general , un libro más centrado en JSF y un libro más centrado en JPA . Asegúrese de elegir el libro más reciente que cubra el tema. Primero investigue la versión más reciente disponible y luego asegúrese de que el libro elegido cubra eso. Por lo tanto, definitivamente no elija un libro antiguo para Java EE 5 o JSF 1.0 más o menos, mientras que actualmente ya está disponible Jakarta EE 8 y JSF 2.3.

Por último, pero no menos importante, ignore los sitios de raspado de fragmentos de código mantenidos por aficionados con un enfoque principal en los ingresos publicitarios en lugar de la enseñanza, como roseindia, tutorialspoint, javabeat, journaldev, javatpoint, codejava, etc. Son fácilmente reconocibles al alterar los enlaces publicitarios / banners y fragmentos de código JSP que contienen scriptlets .

Ver también:

BalusC
fuente
Greate! útil, gracias. En .Net, por lo general, el libro de Wrox Press puede cubrir todos los conocimientos en .net. Un libro muy grueso.
gfan
55
¿StackOverflow no tiene una función de publicación de PIN? Ojalá lo hiciera, para poder fijar esta respuesta. ¡Gracias!
dww
Tiene que haber una alternativa al tutorial JavaEE 5. Sé que soy un novato, y todos son muy buenos en eso. Pero ... tratando de aprender de ese tutorial. Está muy bloqueado y depende de ciertas configuraciones. Entonces, necesito aprender NetBeans. entonces necesito darme por vencido en mi servidor y mudarme prolijamente a glassfish, tratando de encontrar el código de muestra para ejecutar y aprender no fue lo más fácil. No pude ejecutar en el servidor. En cambio, me encontré con algo llamado Maven Build. ¡Pensé que lo intenté, lo que resultó en que el eclipse se volviera loco! Aparentemente necesito aprender Maven también, y esto, que el otro y la abuela de los demonios ...
mocoso
@brat: la respuesta contiene enlaces a alternativas y libros.
BalusC
Bien. Solo uno que cubre mucho. Coreserv ... Tuve que recoger fragmentos aquí y allá. Entré ahora con el oficial JavaEE tut ahora :) Solo para descubrir el SDK que uno necesita descargar, para ejecutar el código de ejemplo tiene un servidor GlassFish que no funciona con JDK 10 :(, NullPointerException al inicio. Encontré un hack stackoverflow.com / preguntas / 47458119 / ... y entonces necesito descargar ... y así sucesivamente. Supongo que estoy un poco deprimido y molesto por tener que saltar a través de los aros para aprender. :(. No lo hacen fácil para noobs x). Saludos :)
mocoso
28

¿Qué necesito aprender exactamente?

Mínimamente

  • Java el lenguaje
  • Java, la API, incluido JDBC para el acceso a la base de datos
  • Un IDE, o un editor de texto + Ant
  • Java EE, básicamente, servlets y JSP
  • Un contenedor de servlet (como Tomcat)

Tomcat parece ser un buen servidor web para Java.

Es "decente". Si no le gustan los EJB, probablemente no necesite aprender nada más. Glassfish 3 parece estar muy bien últimamente, pero todavía no he jugado mucho con él. Tenga en cuenta que es "más" que un servidor web. Es un contenedor de servlets (lo que significa que puede ejecutar aplicaciones utilizando la tecnología de servlets).

¿Qué opciones hay para la web?

Acerca de un billón de marcos diferentes. Realmente, elegir uno es realmente "difícil". Es muy tentador probarlos todos, pero en última instancia no es factible.

Sé que hay hibernación para un ORM.

Soy algo anti-ORM, pero Hibernate es lo que necesita si necesita un ORM "completo". También puede probar ORM "parciales", como el soporte JDBC de Spring o iBatis.

¿Java tiene MVC? ¿Qué hay de JSP? ¿pueden MVC y JSP estar juntos? ¿frijoles?

Sí, la mayoría de los frameworks web Java hacen MVC. El MVC de Spring es bueno, pero no puedo recomendar nada más (especialmente, ¡no Struts 1!). JSP es solo un motor de plantillas HTML (o XML). El JSP de la vieja escuela, con código Java incrustado, no es genial; JSP moderno con archivos de etiquetas y bibliotecas es bastante bueno.

Supongo que la mayoría de los frameworks te permitirán usar JSP para renderizar tus Vs; Spring's MVC y Struts lo hacen. Algunos también te permitirán usar algo más (Velocity, Freemarker, etc.).

Beans es solo una convención para los objetos. Básicamente, significa que está utilizando getters y setters (o algunas alternativas) y está siguiendo algunas reglas. Estos deberían permitir que su objeto sea manipulado por ciertas herramientas. El ejemplo típico es una GUI, algunas herramientas le permitirán crear componentes de la GUI para editar beans arbitrarios (es decir, generarán un formulario para editar sus campos).

alex
fuente
16

Necesita HTML, CSS y JavaScript, todos los sospechosos habituales para el desarrollo web.

Tomcat tiene un servidor web incorporado, pero es un motor servlet / JSP . Apache es el servidor web puro.

Debe aprender JSP, que es un lenguaje de plantillas para generar servlets que generan salida HTML. Querrás escribirlos usando JSTL, no scriptlets.

Si está haciendo aplicaciones CRUD, necesitará aprender JDBC y bases de datos relacionales. Debería hacerlo antes de probar Hibernate o cualquier otro ORM, porque es la base sobre la que están construidos.

JavaBeans son solo estándares para objetos Java.

Si estás preparado, te recomiendo el marco Spring.

duffymo
fuente
Usted dice que Tomcat tiene un servidor web incorporado, ¿qué más es entonces? pensé que todo era un servidor web?
mrblah
66
@mrblah: Tomcat es un motor servlet. Fue hecho para procesar clases de servlet (que son en lo que se convierten los jsp) y servir la salida a un navegador. Junto con eso, también sirve todos los archivos normales (imágenes, html, css, etc.) tal como lo hace un servidor web. Es comparable a Apache con un módulo php.
Nemi
13

¿Java tiene MVC?

Java tiene diferentes marcos como Struts2 , Spring MVC

¿Qué hay de JSP?

JSP es una biblioteca de plantillas. Hay pocas alternativas que puede probar, como FreeMarker y Velocity . AFAIK Freemarker es una biblioteca de plantillas emergente como buena. Es ligero que JSP . Consulte este FreeMarker : una alternativa abierta a JSP - JavaWorld

¿pueden MVC y JSP estar juntos?

Tomo MVC como un marco mencionado anteriormente. Todos los marcos tienen soporte para JSP pero debe verificar el soporte para otras bibliotecas de plantillas en la documentación de marcos respectivos. AFAIK Struts2 to tiene un muy buen soporte para Freemarker.

¿frijoles?

No sé mucho al respecto. Pero usando beans podemos asignar directamente datos de formulario a bases de datos.

¿Quizás un libro que cubre todo esto?

Cada marco tiene su propio libro. Para Struts2 - Struts 2 en acción

String MVC - Echa un vistazo a estas preguntas recomendando libros para Spring y Spring MVC. Sugerencia de libro para Spring Framework y Spring Books: cuál elegir

Fremarker tiene una muy buena documentación - Manual de FreeMarker

Para comenzar con el desarrollo web en Java :

texto alternativo

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

Xinus
fuente
5

Considero que la mayoría de las opciones tradicionales de desarrollo web de Java son bastante pesadas, y hay algunas buenas alternativas:

  • Play es un marco MVC que se enfoca en ser liviano, directo y permitir un desarrollo rápido, mientras se mantiene con Java puro, en lugar de un lenguaje basado en JVM más dinámico. Es bastante nuevo pero ya impresionante, y una buena comunidad se ha desarrollado a su alrededor rápidamente.

  • Grails es un marco MVC, inspirado en Ruby on Rails, que está escrito y utiliza Groovy , un lenguaje de secuencias de comandos basado en Java. Grails es maduro, robusto y ampliamente respetado, con una comunidad fuerte. Groovy es básicamente un superconjunto de Java, con una mejor sintaxis y algunas características excelentes, como los cierres, por lo que aprender es una excelente manera de aprender Java.

  • Si necesita / desea crear sitios web / servicios / aplicaciones RESTful, Restlet es un marco fantástico: soy un gran admirador. Es simple, directo y flexible. Gran comunidad también.

  • App Engine de Google también es una opción interesante. Está alojado, lo que puede ser de interés o no, pero tiene una API bastante simple y un buen SDK.

Estoy seguro de que hay otros, pero estos son los que puedo pensar fuera de mi cabeza.

¡Buena suerte y diviertete!

Avi Flax
fuente
Ah, y acabo de descubrir Prudence el otro día: threecrickets.com/prudence
Avi Flax
3

Soy un programador PHP / C y he descubierto que Groovy me permite saltar a Java sin aprender todas las clases y paradigmas inherentes a la programación Java. Groovy me permitió ser productivo rápidamente, mientras me tomaba el tiempo para aprender más sobre Java y todas las herramientas / marcos / bibliotecas disponibles.

señor-sk
fuente
3

Si no va a trabajar con html, css, xml, javascript, etc.

Pruebe el marco Vaadin , está bien documentado, es fácil de aprender y permite crear una interfaz de usuario atractiva de una manera simple. (solo escriba el código Java, por supuesto necesita un servidor servlet, Tomcat o Jetty estarán bien)

mokrzu
fuente
2

Mejor aprende Java. Luego aprendes Servlets y JSP. Luego, para MVC, ve a Struts o Spring o cualquier otro marco habilitado para Java / Java.

SIVAKUMAR.J
fuente
0

Como eres nuevo en Java, te recomiendo que primero aprendas el lenguaje básico. Esto lo ayudará independientemente de la tecnología que elija para hacer su aplicación web.

Un buen recurso en línea es el Tutorial de Sun Java: http://java.sun.com/docs/books/tutorial/

Thorbjørn Ravn Andersen
fuente