Java Platform, Enterprise Edition (Java EE)
Lecturas
- Introducción a las aplicaciones Web con JAVA y JSP, JSTL y XML: Tecnologías en la capa de Presentación: por Macario Polo y Daniel Villafranca.
- Introduccion a Java EE: de la materia Sistemas Cliente-Servidor y Procesos Cooperativos en el Área de Ciencias de la Computación e Inteligencia Artificial de la Universidad de Vigo.
- Introducción a Java EE: por Juan Pavón Mestras.
- Tutorial básico de Java EE
y su actualización:
por Abraham Otero.
"El tutorial es un gran documento con más de 200 páginas que explica desde cero cómo funciona una aplicación web, para luego describir a detalle como programar una usando el estándar Java Edición Empresarial. Así que si tienes duda de cómo usar Servlets, JSP, Tags, Filtros, JDBC y por supuesto si te interesa aplicar correctamente el patrón MVC con Java, este tutorial es para ti. En el tutorial se usa Netbeans como herramienta de desarrollo y Glassfish como servidor de aplicaciones JEE, en los vídeos se habla un poco más acerca de como funcionan"
- Arquitectura Java Sólida:
por Cecilio Álvarez Caules.
El objetivo de este libro es permitir al lector obtener una visión global sobre la plataforma JEE. Adquiriendo los conocimientos necesarios para comenzar a trabajar con los distintos frameworks que soporta (Hibernate, Spring, JSF, etc.).
Observaciones
Existen otras alternativas para el desarrollo web sobre JEE, algunas de ellas haciendo uso de otro lenguaje de programación en lugar del lenguaje de programación Java. Ejemplos de estos:
- Con el lenguaje de programación Java:
- JavaServer Faces (JSF)
- Play!
- Apache Struts
- Apache Wicket
- Spring MVC
- Stripes
- Vaadin
- Con el lenguaje de programación Groovy:
- Grails
- Con el lenguaje de programación Scala:
- Play!
- Scalatra
Una de las tecnologías que conforman a JEE es, precisamente, JavaServer Faces(JSF), considerada por Oracle la "nueva forma" de desarrollar aplicaciones web con Java, quedando "desaconsejando" el uso de JavaServer Pages (JSP). Sin embargo JSP sigue teniendo un mayor uso en comparación con JSF. Lectura recomendada al respecto: ¿Tiene futuro JSF? por Cecilio Álvarez Caules.
Todas las alternativas indicadas son frameworks para el desarrollo de aplicaciones web y puedes encontrar una tabla comparativa de los mismos en la Wikipedia. Lectura recomendada: ¿Qué es un ‘framework’? por Jordi Sánchez.
De igual forma podrás encontrar un reporte mucho más amplio sobre dichos frameworks en:
- Top 20 Web Frameworks for the JVM.
- The Curious Coder’s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF
- Top 4 Java Web Frameworks Revealed: Real Life Usage Data of Spring MVC, Vaadin, GWT and JSF (Los 4 Framework Web Java mas usados)
De cualquier forma, Servlets y JavaServer Pages es visto como la forma de empezar a entender la programación web en Java.
Consideraciones
Java Enterprise Edition nació entre 1998 y 1999, hace más de 15 años, y ha sufrido de complejidad.
Con complejidad me refiero a los siguientes puntos:
- Comprender a JEE: algunas tecnologías que la conforman no tienen un uso inmediatamente práctico para alguien que solo quiere hacer una aplicación web y la documentación está muy enfocada a entornos empresariales.
- Configuración y uso: basado en archivos XML sobre la lentitud de la máquina virtual de Java.
- Requerimientos: la infraestructura (hardware+software+personal calificado) para poner en funcionamiento un sitio o aplicación web.
- Lenguaje de programación: Java ha sido criticado por ser un lenguaje de programación muy verboso y con una tendencia a la ingeniería excesiva.
En pocas palabras, JEE es complejo, lento y aburrido ;-)
Hago mención de lo anterior ya que las alternativas (frameworks para aplicaciones web) previamente mencionadas buscan evitar caer en la complejidad inherente a JEE.
Finalmente, otros lenguajes de programación nacieron sin ser empresariales que ofrecían/ofrecen una alternativa más viable (tecnológica y económicamente) que JEE para pequeñas empresas/organizaciones:
- Perl: lenguaje de programación que toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación. Apareció en 1987. - Wikipedia
- Python: lenguaje de programación multiparadigma, interpretado, usa tipado dinámico y es multiplataforma. Apareció en 1991. - Wikipedia
- PHP: lenguaje de programación de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Apareció en 1995. - Wikipedia.
- Ruby: lenguaje de programación interpretado, reflexivo y orientado a objetos. Apareció en 1995. - Wikipedia
- ECMAScript(JavaScript) / Node.js: ECMAScript define un lenguaje de tipos dinámicos ligeramente inspirado en Java y otros lenguajes del estilo de C, apareció en 1997. Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto basado en el lenguaje de programación ECMAScript, apareció en 2009.
Todo lo anterior ha dado como resultado que exista mayor interés por las alternativas y la documentación de las últimas versiones de JEE exista en mayor número en ingles que en español.
Cada tecnología web en el lado del servidor tiene características que la hacen propicia para ciertos entornos.
JEE (junto con .NET, de Microsoft) ha gozado de preferencia en entornos empresariales (bancos, empresas mercantiles, industrias, hospitales, gobiernos, etc) mientras que PHP, Python, Perl y Ruby han ganado preferencias en PYMES, ONGs, freelancers, startups, etc. Aunque en últimos años se ha observado que empresas grandes se interesan por estos últimos lenguajes de programación.
Glassfish, a diferencia de Apache Tomcat, es un servidor de aplicaciones que implementa las tecnologías especificadas por JEE. Se diferencian en la cantidad de tecnologías que implementan, siendo Apache Tomcat el que implementa menos (Servlet+JSP+EL) pero las suficientes para desarrollar aplicaciones web.
No solo existe Apache Tomcat y Glassfish, otros son:
- Jetty de la Fundación Eclipse, los mismos encargados del IDE Eclipse.
- WildFly (originalmente llamado JBoss AS) de la empresa Red Hat, la misma encargada de Red Hat Linux, Fedora Linux y Centos.
- Apache TomEE de The Apache Software Foundation, la misma detrás de Apache Tomcat.
- WebLogic Application Server de la empresa Oracle, la misma detrás de Java, JRE/JDK, JEE, etc.
- WebSphere Application Server de la empresa IBM, la que creó al IDE Eclipse y mejor conocida por sus servidores (hardware).
Puedes encontrar un reporte al respecto en The Great Java Application Server Debate with Tomcat, JBoss, GlassFish, Jetty and Liberty Profile.
Enlaces
- Página oficial de Java Platform, Enterprise Edition en el sitio web de Oracle.
- Documentación oficial de JEE. Aquí encontrarás dos tutoriales en ingles:
- Your First Cup: An Introduction to the JEE Platform
- The JEE 7 Tutorial
- API de JEE: similar a la API de Java.
- Tecnologías que conforman a JEE. Las dos áreas de tu interés son JEE Platform y Web Application Technologies. La primera encargada de especificar los elementos que la contemplan para desarrollar aplicaciones empresariales, mientras que la segunda se centra en las tecnologías para el desarrollo web de aplicaciones empresariales, de esta te interesaría Java Servlet, JavaServer Pages (JSP) y Expression Language (EL). Te recomiendo que estas tres tecnologías las compares con la tabla expuesta en http://tomcat.apache.org/whichversion.html. Dentro de Web Application Technologies existe otra tecnología común (pero opcional), usada junto con JSP: Standard Tag Library for JavaServer Pages (JSTL), disponible en http://tomcat.apache.org/taglibs/. Lectura recomendada: Modelos de desarrollo de aplicaciones web en Java.