miércoles, 13 de febrero de 2013

Que es J2EE

Pensando en como abordar la utilización de framework complejos como struts 2, spring o hibernate de una manera practica donde los navegantes puedan obtener el conocimiento necesario me pregunte si el tipo que esta leyendo es de una locación geográfica donde no existe ofertas educativas adecuadas en desarrollo de software,  si fuera el caso estoy seguro que no contaría con la orientación necesaria para poder realizar aunque sea una autoformacion con internet por lo que de seguro no sabría para donde ir o por donde iniciar por la gran cantidad de contenido que encontramos en internet. 

De seguro tendría al tipo intentando entender arrancar con modelo MVC sin haber escuchado de servlet y JSP lo cual de seguro dificultaría la curva de aprendizaje.

¿Por dónde empezamos?

Como todo libros sobre la plataforma Java EE la mayoría de libros comienzan con una introducción bastante detallada sobre lo que es la plataforma Java EE y acto seguido con el uso de algunas tecnologías o framework basado en MVC que utiliza JSP y servlets como base, y nosotros aún no sabemos lo que es un  servlet lo que dificulta nuestra curva de aprendizaje.

Vamos a empezar por lo más básico de lo básico, los servlets, e iremos escalando poco a poco, la experiencia me indica que e tenido programadores conmigo trabajando con framework modernos pero cuando se topan con una arquitectura tradicional jsp + servlet + JDBC caminan por las paredes por que su curva de aprendizaje fue mecánica sin la inducción adecuada, les garantizo que si vamos paso a paso entender el mundo web de java va ser mucho mas sencillo.


Plataforma Java EE

La plataforma Java EE está destinada a desarrollar aplicaciones empresariales distribuidas, con una arquitectura multi-capa, escritas en el lenguaje de programación Java y que se ejecutan en un servidor de aplicaciones como Tomcat, weblogic, jboss..etc.

Es un conjunto de especificaciones que permiten soluciones para el desarrollo, despliegue y gestión de aplicaciones multicapa centradas en servidor.


¿Que es una especificación?

Una especificación no es más que el detalle de cada una de las tecnologías dentro de la plataforma Java EE. Un conjunto de reglas que dictan como debe desarrollarse ese producto de tal forma que se pueda garantizar que una aplicación desarrollada siguiendo las especificaciones de Java EE pueda desplegarse y ejecutarse.

Tecnologías de la plataforma Java EE

Enterprise JavaBeans (EJB).
Java Servlet
JavaServer Page (JSP)
JavaServer Pages Standard Tag Library (JSTL).
JavaServer Faces (JSF)
Java Message Service (JMS).
Java Transaction API (JTA).
JavaMail API y JavaBeans Activation Framework (JAF).
Tecnologías XML (JAXP, JAX-RPC, JAX-WS, JAXB, SAAJ, JAXR)
JPA, JDBC API
Java Naming and Directory Interface (JNDI)
Java Authentication and Authorization Service (JAAS)


Aplicación multi-capa

Hemos dicho que la plataforma Java EE está destinada a desarrollar aplicaciones distribuidas con una arquitectura multi-capa. Esto quiere decir que podemos separar el desarrollo de la aplicación en diferentes capas según su función. Las aplicaciones Java EE suelen ser consideradas aplicaciones de tres capas porque se distribuyen en tres localizaciones, ordenadores clientes, el sistema donde se ejecuta el servidor de aplicaciones, y el sistema donde reside la base de datos.


  • La capa del cliente (Client-tier) que es la capa destinada a mostrar la interfaz gráfica de usuario. Las aplicaciones Java EE pueden ser una aplicación Java Swing normal, o una aplicación Web renderizada en un navegador. Esta capa se ejecuta en el ordenador cliente.
  • La capa de la lógica de negocio (Business-tier) y la capa de la lógica de presentación (Web-tier). Estas capas se ejecutan en el servidor de aplicaciones.
  • La capa de los datos (Data-tier) que es la capa destinada a la gestión de los datos. Esta capa puede separarse a su vez en una o más capas.
Servidor de aplicaciones y contenedores

Como hemos dicho, las aplicaciones empresariales se ejecutan en un servidor de aplicaciones.

Una aplicación empresarial Java EE está formada por un conjunto de módulos donde cada módulo es un conjunto de uno o más componentes que se ejecutan en el mismo contenedor.

Un componente no es más que una unidad de software, puede ser un componente web como una página JSP o un servlet, un componente EJB, etc. Estos componentes se ejecutan dentro de sus correspondiente contenedor dentro del servidor de aplicaciones.

El contenedor no es más que un entorno de ejecución que gestiona los componentes, por eso, los componentes deben de cumplir el contrato que establece el contenedor. Ese contrato no es más que un conjunto de métodos que debe implementar el componente y que permite al contenedor interactuar con él.



Existen dos tipos de contenedores dentro de un servidor de aplicaciones:

  • Contenedor WEB encargado de gestionar los componentes servlets y páginas JSP.
  • Contenedor EJBs encargado de gestionar los componentes EJBs.


Además cada contenedor proporciona una serie de servicios que el componente puede utilizar. El contenedor es el encargado de gestionar el ciclo de vida de los componentes, realizar la reserva de recursos, etc. 

Los módulos que forman una aplicación empresarial pueden ser de tres tipos:

  • Archivos JAR (Java Archive): Los archivos JAR permiten agrupar distintos archivos .java en uno solo. Es el empleado para empaquetar componentes EJBs.
  • Archivos WAR (Web Application Archive): Los archivos WAR permiten empaquetar en una sola unidad aplicaciones web completas (servlets, páginas JSPs, contenido estático como imágenes y otros recursos Web).
  • Archivos EAR (Enterprise Application Archive): Los archivos EAR son archivos desplegables en servidores de aplicaciones JEE. Contienen archivos WAR y EJBs empaquetos en ficheros JAR.

Por lo que podríamos decir que existen tres tipos de aplicaciones Java EE:

  • Aplicaciones Web JAVA.
  • Objetos distribuidos EJBs.
  • Aplicaciones empresariales que engloba a las dos anteriores, aplicaciones web JAVA y objetos distribuidos EJBs.

Algunos de estos servicios de un contenedor son servicios declarativos, esto quiere decir que algunos servicios se declaran en vez de programarse. La declaración se realiza mediante descriptores de despliegue. Cada módulo dispone de un descriptor de despliegue. El descriptor de despliegue no es más que un archivo XML que describe como se deben desplegar esos componentes en el contenedor del servidor de aplicaciones.

El archivo web.xml proporciona la configuración y el despliegue de información para los componentes web que conforman una aplicación.

Este archivo debe residir en el directorio WEB-INF dentro del contexto de la jerarquía de directorios que existen para una aplicación Web.

Como todos los archivos de configuración xml, este contiene un esquema  que describe el contenido del fichero xml y la descripción de las propiedades que va a utilizar. Dentro de este archivo definiremos la configuración de la aplicación web que estemos desarrollando.

6 comentarios: