Resumen jee

8
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

Transcript of Resumen jee

Page 1: Resumen jee

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.

Page 2: Resumen jee

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.

Page 3: Resumen jee

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.

Page 4: Resumen jee

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).

Page 5: Resumen jee

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.

Page 6: Resumen jee

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".