Está en la página 1de 6

Plataforma Java EE

Como decíamos en la primera entrada, 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.

Esto es muy cierto, pero Java EE no es un producto de Sun (Oracle), es un conjunto de


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

¿Un conjunto de especificaciones? ¿Qué quiere decir esto? Esto quiere decir que cualquier
fabricante puede coger estas especificaciones y desarrollar un producto final que las
cumpla. Sun ha creado una implementación de todas estas especificaciones (Glassfish)
pero no es la única empresa.

¿Que es una especificación?

Una especificación no es más que un papelito que detalla 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.

Por ejemplo, los servlets son una tecnología de la plataforma Java EE y como tal, dispone
de una especificación. Así, una empresa puede desarrollar un producto que implemente la
especificación de los servlets, de tal forma, que ese producto pueda ejecutar servlets. Y así
con todas las tecnologías que forman parte de la plataforma Java EE. Con producto nos
referimos a un servidor de aplicaciones como Glassfish, o incluso un simple contendor de
servlets como Apache Tomcat.

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)

¿Cuántas siglas eh? No nos asustemos por ahora, no vamos ni a explicar brevemente en que
consiste cada tecnología. Las iremos viendo poco a poco.
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.
En la siguiente imagen tenemos un detalle mayor de los contenedores del servidor
de aplicaciones

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. Algunos de estos servicios 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.

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.

Servidor de aplicaciones JEE

A continuación vamos a entrar en más detalle. Para ello, hemos subrayado en el siguiente
gráfico los elementos más importantes y usuales. La arquitectura de un servidor de
aplicaciones incluye una serie de subsistemas:

• Servidor HTTP (también denominado servidor Web o servidor de páginas). Un


ejemplo, el servidor Apache.
• Contenedor de aplicaciones o contenedor Servlet/JSP. Un ejemplo, Tomcat (que
incluye el servicio anterior sobre páginas)
• Contenedor Enterprise Java Beans, que contiene aplicativos Java de interacción con
bases de datos o sistemas empresariales. Un ejemplo es JBoss que contiene a los
anteriores (servidor de páginas web y contenedor de aplicacione web).

Pero conviene empezar por el principio, es decir, el lenguaje básico de interconesión: el


protocolo HTTP. Es un protocolo de aplicación, generalmente implementado sobre TCP/IP.
Es un protocolo sin estado basado en solicitudes (request) y respuestas (response), que usa
por defecto el puerto 8080:

• "Basado en peticiones y respuestas": significa que el cliente (por ejemplo un


navegador) inicia siempre la conexión (por ejemplo, para pedir una página). No hay
posibilidad de que el servidor realize una llamada de respuesta al cliente
(retrollamada). El servidor ofrece la respueta (la página) y cierra la conexión. En la
siguiente petición del cliente se abre una conexión y el ciclo vuelve e empezar: el
servidor devuelve el recurso y cierra conexión.
• "Sin estado": el servidor cierra la conexión una vez realizada la respuesta. No se
mantienen los datos asociados a la conexión. Más adelante veremos que hay una
forma de persistencia de datos asociada a la "sesión".

También podría gustarte