La plataforma Java EE está diseñada para ayudar a los desarrolladores a crear a gran escala, en múltiples niveles, de forma escalable, fiable y segura las aplicaciones de red (network applications).
El nombre corto de tales aplicaciones es "aplicaciones empresariales"(enterprise applications), llamado así debido a que estas aplicaciones están diseñadas para resolver los problemas de las grandes empresas.
La plataforma Java EE está diseñada para reducir la complejidad del Desarrollo de dichas aplicaciones, proporcionando un modelo de desarrollo, API, y tiempo de ejecución que permite a los desarrolladores concentrarse en la funcionalidad.
Aplicaciones por Niveles
En una aplicación multi-niveles, la funcionalidad de la aplicación se divide en aisladas áreas funcionales, llamadas niveles.
Por lo general, estas aplicaciones tienen los siguientes niveles:
El nivel de cliente consiste en un programa que hace peticiones al nivel medio. Las funciones del nivel intermedio del negocio son manejar peticiones de clientes y los datos de la aplicación procesados, almacenandolos en un almacén de datos permanente en el nivel de datos.
El desarrollo de aplicaciones Java EE se concentra en el nivel medio para que las aplicaciones empresariales sean fáciles de gestionar, más robustas y más seguras.
Capa Web
El nivel de web consta de componentes que se encargan de la interacción entre los clientes y la capa de negocio. Sus tareas principales son las siguientes:
Por lo general, estas aplicaciones tienen los siguientes niveles:
- Un nivel de cliente,
- un nivel intermedio,
- y un nivel de datos.
El nivel de cliente consiste en un programa que hace peticiones al nivel medio. Las funciones del nivel intermedio del negocio son manejar peticiones de clientes y los datos de la aplicación procesados, almacenandolos en un almacén de datos permanente en el nivel de datos.
El desarrollo de aplicaciones Java EE se concentra en el nivel medio para que las aplicaciones empresariales sean fáciles de gestionar, más robustas y más seguras.
Capa Web
El nivel de web consta de componentes que se encargan de la interacción entre los clientes y la capa de negocio. Sus tareas principales son las siguientes:
- Generar dinámicamente contenido en varios formatos para el cliente.
- Recopilar información de los usuarios de la interfaz del cliente y retornar resultados apropiados de los componentes en la capa del negocio.
- Controlar el flujo de pantallas o páginas en el cliente.
- Mantener el estado de los datos de sesión de un usuario.
- Realizar una lógica básica y almacenar algunos datos temporalmente en componentes JavaBeans.
Tecnologías Java EE usadas en la Capa Web
Las siguientes tecnologías Java EE se utilizan en la Capa Web en aplicaciones Java EE
- Servlets -> Clases de Java que procesan las solicitudes de forma dinámica y construyen respuestas, por lo general para páginas HTML.
- JavaServer Pages (JSP) -> Documentos basados en texto que se compilan en servlets y definen como el contenido dinámico puede ser agregado a páginas estáticas, tales como páginas HTML.
- JavaServer Faces technology -> Una interfaz de usuario para aplicaciones Web que permite agregar componentes tales como botones y campos.
- JavaServer Pages Standard Tag Library -> Una librería de etiquetas que encapsula la funcionalidad básica comunes a las páginas JSP.
- JavaBeans Components -> Objetos que actúan como almacen de datos temporales para las páginas de una aplicación.
Capa de Negocio
La capa de negocio consta de componentes que proporcionan la lógica de negocio para una aplicación.En una aplicación empresarial bien diseñada, el núcleo funcionalmente existe en la capa de negocios.
Tecnologías Java EE usadas en la Capa de Negocios
Las siguientes tecnologías Java EE se utilizan en la Capa de Negocio en aplicaciones Java EE
- Enterprise JavaBeans (enterprise bean) components
- JAX-WS web service endpoints
- Java Persistence API entities
Capa de sistemas de información empresarial
El nivel de sistemas de información empresarial (Enterprise Information Systems - EIS) se compone de servidores de bases de datos, etc.
Estos recursos típicamente son encontrados en un equipo diferente que el servidor Java EE, y se puede acceder por los componentes de la capa de negocio.
Tecnologías Java EE usadas en IES
Las siguientes tecnologías Java EE se utilizan para acceder al EIS en aplicaciones Java EE
- The JavaDatabase Connectivity API (JDBC)
- The Java Persistence API
- The J2EE Connector Architecture
Cliente Web
Un cliente web se compone de dos partes:
(1) páginas web dinámicas que contienen distintos tipos de lenguajes (HTML, XML, etc), que son generadas por componentes web que se ejecutan en la Capa Web
(2) un navegador web, quien hace que las páginas recibidas desde el servidor.
Los clientes web no suelen consultar bases de datos, ejecutar reglas de negocio complejas, o conectarse al resto de las aplicaciones. Estas últimas operaciones son realizadas por "Enterprise Beans" donde se puede aprovechar la seguridad, velocidad, servicios y confiabilidad de Java EE del lado del servidor
Applet
Una pagina web recibida de la capa web puede incluir un applet.
Un applet es una pequeña aplicacion del cliente escrita en Java que se ejecuta en la maquina virtual instalada en el navegador web. Sin embargo, el cliente probablemente necesite el Java Plug-in y posiblemente un archivo de politica de seguridad para que el applet se ejecute correctamente en el navegador web
Los componentes web preferidos para la creación de un programa cliente web son las API, ya que los Plug-ins o archivos de politicas de seguridad no son necesarios en el cliente. Además, los componentes web permiten limpiar y diseñar una aplicacion más modular, ya que proporcionan una manera para separar la programación de aplicaciones, del diseño de la página web. Por lo tanto el personal involucrado en el diseño de la página web no necesita comprender la sintaxis del lenguaje de programación Java para hacer su trabajo.
Aplicación Cliente
Una Aplicación Cliente se ejecuta en una maquina cliente y proporciona una manera para que los usuarios realicen tareas que requieren una interfaz de usuario mas rica que pueda ser proporcionada por un lenguaje. Por lo general tiene una interfaz gráfica de usuario (GUI) creada a partir de la API de Swing o Abstract Window Toolkit (AWT) , pero una interfaz de linea de comandos es ciertamente posible.
Las aplicaciones cliente acceden directamente a los "Enterprise beans" que se ejecutan en la capa de negocio. Sin embargo, si los requerimientos de la aplicación lo permiten, una aplicación cliente puede abrir una conexión HTTP para establecer una comunicación con un Servlet ejecutandose en la capa web. Las aplicaciones cliente escritas en lenguajes que no sean Java pueden interactuar con servidores Java EE 5, permitiendo a la plataforma Java EE 5 interoperar con restos de sistemas, clientes, y lenguajes no-Java.
Un cliente web se compone de dos partes:
(1) páginas web dinámicas que contienen distintos tipos de lenguajes (HTML, XML, etc), que son generadas por componentes web que se ejecutan en la Capa Web
(2) un navegador web, quien hace que las páginas recibidas desde el servidor.
Los clientes web no suelen consultar bases de datos, ejecutar reglas de negocio complejas, o conectarse al resto de las aplicaciones. Estas últimas operaciones son realizadas por "Enterprise Beans" donde se puede aprovechar la seguridad, velocidad, servicios y confiabilidad de Java EE del lado del servidor
Applet
Una pagina web recibida de la capa web puede incluir un applet.
Un applet es una pequeña aplicacion del cliente escrita en Java que se ejecuta en la maquina virtual instalada en el navegador web. Sin embargo, el cliente probablemente necesite el Java Plug-in y posiblemente un archivo de politica de seguridad para que el applet se ejecute correctamente en el navegador web
Los componentes web preferidos para la creación de un programa cliente web son las API, ya que los Plug-ins o archivos de politicas de seguridad no son necesarios en el cliente. Además, los componentes web permiten limpiar y diseñar una aplicacion más modular, ya que proporcionan una manera para separar la programación de aplicaciones, del diseño de la página web. Por lo tanto el personal involucrado en el diseño de la página web no necesita comprender la sintaxis del lenguaje de programación Java para hacer su trabajo.
Aplicación Cliente
Una Aplicación Cliente se ejecuta en una maquina cliente y proporciona una manera para que los usuarios realicen tareas que requieren una interfaz de usuario mas rica que pueda ser proporcionada por un lenguaje. Por lo general tiene una interfaz gráfica de usuario (GUI) creada a partir de la API de Swing o Abstract Window Toolkit (AWT) , pero una interfaz de linea de comandos es ciertamente posible.
Las aplicaciones cliente acceden directamente a los "Enterprise beans" que se ejecutan en la capa de negocio. Sin embargo, si los requerimientos de la aplicación lo permiten, una aplicación cliente puede abrir una conexión HTTP para establecer una comunicación con un Servlet ejecutandose en la capa web. Las aplicaciones cliente escritas en lenguajes que no sean Java pueden interactuar con servidores Java EE 5, permitiendo a la plataforma Java EE 5 interoperar con restos de sistemas, clientes, y lenguajes no-Java.
La arquitectura de componentes JavaBeans
Las capas del Servidor y cliente también pueden incluir componentes basados en la arquitectura del componente JavaBeans (JavaBeans Components) para administrar el flujo de datos entre una aplicaciÓn cliente o un applet y componentes ejecutandose en el servidor Java EE, o entre los componentes del servidor y una base de datos. Los componentes JavaBeans no son considerados componentes Java EE por la especificación Java EE.
Los componentes JavaBeans tiene propiedades y métodos get/set para acceder a las propiedades. Los componentes JavaBeans utilizados de esta manera son usualmente simples en diseños e implementacion pero deben ajustarse a las convenciones de nombres y de diseño descritos en la arquitectura de componentes JavaBeans.
Java EE Server Communications
La siguiente figura muestra los diferentes elementos que componen la Capa Cliente. El ciente se comunica con la Capa de Negocio que se ejecuta en el servidor Java EE ya sea directa o, como en el caso de un cliente ejecutandose en un navegador, pasando a través de las páginas JSP o Servlets que se ejecutan en la Capa Web.
Componentes Web
Los componentes web son los Servlets o las páginas cradas usando tecnología JSP y/o la tecnología JavaServer Faces.
Los Servlets son clases Java que procesan las solicitudes de forma dinámica y construyen respuestas. Las páginas JSP son documentos basados en texto que se ejecutan como Servlets pero permiten una aproximación más natural a la creación de contenido estático. La tecnología JavaServer Faces construye sobre Servlets y tecnología JSP y proporciona un framework para una interfaz de usuario para aplicaciones web.
Las páginas HTML estáticas y applets se combinan con componentes web durante el montaje de aplicaciones pero no se consideran los componentes web de la especificación Java EE. Del lado del servidor utilizan clases que también pueden ser incluidas con los componentes web y, al igual que las páginas HTML, no se consideran los componentes web.
Tal como muestra la siguiente imagen, la Capa Web, como la Capa Cliente, pueden incluir un componente JavaBeans para manejar la entrada del usuario y enviar esa entrada al "Enterprise Beans" que se ejecutan en la Capa de Negocio para su procesamiento.
Componentes de Negocio
El código del negocio, cual es la lógica que resuelve o satisface las necesidades de un dominio de negocio en particular como por ejemplo la financiera, es maneja por "Enterprise Beans" ejecutandose en la Capa de Negocio.
La siguiente figura muestra como un "Enterprise Bean" recibe los datos de los programas clientes, los procesa (si es necesario), y los envía a la capa EIS para su almacenamiento. Un "Enterprise Bean" tambien recupera datos desde el almacenamiento, los procesa (si es necesario) y lo envía de vuelta al programa cliente.
Web Services
Los Servicios Web (Web Services) son aplicaciones empresariales basadas en web que usan estándares basados en XML y protocolos de transporte para intercambiar datos llamando a los clientes.
La plataforma Java EE proporciona XML APIs y herramientas necesarias para diseñar rápidamente, desarrollar, probar y desplegar servicios web y clientes que interoperan con otros servicios web y clientes que se ejecutan en plataformas basadas o no en Java
Para escribir Servicios Web y Clientes con XML APIs, todo lo que tienes que hacer es pasar datos de parámetro para las llamadas a métodos y procesar los datos devueltos.
La programación de bajo nivel no es necesaria ya que las implementaciones de XML API hacen el trabajo de traducir los datos de la aplicación a y de un flujo de datos basado en XML que se envía a través de los protocoles de transporte estandarizados de XML.
Estos estándares basados en XML y sus protocolos se presentan en las siguientes secciones.
XML
XML es una multi-plataforma, extensible, basada en texto para representar datos.
Cuando los datos del XML son intercambiados entre partes, las partes son libres para crear sus propias etiquetas (tags) para describir los datos, establecen esquemas para especificar que etiquetas pueden ser usadas en un determinado tipo de documento XML, y usar hojas de estilo XML para gestionar la visualización y la manipulación de los datos.
Por ejemplo, un servicio web puede utilizar XML y un esquema para producir listas de precios, y las empresas que reciben las listas de precios y esquemas pueden tener sus propias hojas de estilo para manejar los datos que mejor se adapte a sus necesidades.
Algunos ejemplos:
Las capas del Servidor y cliente también pueden incluir componentes basados en la arquitectura del componente JavaBeans (JavaBeans Components) para administrar el flujo de datos entre una aplicaciÓn cliente o un applet y componentes ejecutandose en el servidor Java EE, o entre los componentes del servidor y una base de datos. Los componentes JavaBeans no son considerados componentes Java EE por la especificación Java EE.
Los componentes JavaBeans tiene propiedades y métodos get/set para acceder a las propiedades. Los componentes JavaBeans utilizados de esta manera son usualmente simples en diseños e implementacion pero deben ajustarse a las convenciones de nombres y de diseño descritos en la arquitectura de componentes JavaBeans.
Java EE Server Communications
La siguiente figura muestra los diferentes elementos que componen la Capa Cliente. El ciente se comunica con la Capa de Negocio que se ejecuta en el servidor Java EE ya sea directa o, como en el caso de un cliente ejecutandose en un navegador, pasando a través de las páginas JSP o Servlets que se ejecutan en la Capa Web.
Componentes Web
Los componentes web son los Servlets o las páginas cradas usando tecnología JSP y/o la tecnología JavaServer Faces.
Los Servlets son clases Java que procesan las solicitudes de forma dinámica y construyen respuestas. Las páginas JSP son documentos basados en texto que se ejecutan como Servlets pero permiten una aproximación más natural a la creación de contenido estático. La tecnología JavaServer Faces construye sobre Servlets y tecnología JSP y proporciona un framework para una interfaz de usuario para aplicaciones web.
Las páginas HTML estáticas y applets se combinan con componentes web durante el montaje de aplicaciones pero no se consideran los componentes web de la especificación Java EE. Del lado del servidor utilizan clases que también pueden ser incluidas con los componentes web y, al igual que las páginas HTML, no se consideran los componentes web.
Tal como muestra la siguiente imagen, la Capa Web, como la Capa Cliente, pueden incluir un componente JavaBeans para manejar la entrada del usuario y enviar esa entrada al "Enterprise Beans" que se ejecutan en la Capa de Negocio para su procesamiento.
Componentes de Negocio
El código del negocio, cual es la lógica que resuelve o satisface las necesidades de un dominio de negocio en particular como por ejemplo la financiera, es maneja por "Enterprise Beans" ejecutandose en la Capa de Negocio.
La siguiente figura muestra como un "Enterprise Bean" recibe los datos de los programas clientes, los procesa (si es necesario), y los envía a la capa EIS para su almacenamiento. Un "Enterprise Bean" tambien recupera datos desde el almacenamiento, los procesa (si es necesario) y lo envía de vuelta al programa cliente.
Web Services
Los Servicios Web (Web Services) son aplicaciones empresariales basadas en web que usan estándares basados en XML y protocolos de transporte para intercambiar datos llamando a los clientes.
La plataforma Java EE proporciona XML APIs y herramientas necesarias para diseñar rápidamente, desarrollar, probar y desplegar servicios web y clientes que interoperan con otros servicios web y clientes que se ejecutan en plataformas basadas o no en Java
Para escribir Servicios Web y Clientes con XML APIs, todo lo que tienes que hacer es pasar datos de parámetro para las llamadas a métodos y procesar los datos devueltos.
La programación de bajo nivel no es necesaria ya que las implementaciones de XML API hacen el trabajo de traducir los datos de la aplicación a y de un flujo de datos basado en XML que se envía a través de los protocoles de transporte estandarizados de XML.
Estos estándares basados en XML y sus protocolos se presentan en las siguientes secciones.
XML
XML es una multi-plataforma, extensible, basada en texto para representar datos.
Cuando los datos del XML son intercambiados entre partes, las partes son libres para crear sus propias etiquetas (tags) para describir los datos, establecen esquemas para especificar que etiquetas pueden ser usadas en un determinado tipo de documento XML, y usar hojas de estilo XML para gestionar la visualización y la manipulación de los datos.
Por ejemplo, un servicio web puede utilizar XML y un esquema para producir listas de precios, y las empresas que reciben las listas de precios y esquemas pueden tener sus propias hojas de estilo para manejar los datos que mejor se adapte a sus necesidades.
Algunos ejemplos:
- Una empresa puede poner la información de precios XML a través de un programa para traducir el XML a HTML para que pueda publicar las listas de precios a su intranet.
- Una empresa asociada puede poner la información de precios XML a través de una herramienta para crear una presentación de marketing.
SOAP Transport Protocol (Protocolo de Transporte SOAP)
Las solicitudes de los clientes y las respuestas de los servicios web son transmitidos como mensajes Simple Object Access Protocol (SOAP) a través de HTTP para mermitir un intercambio completamente interoperables entre clientes y servicios web, todos ejecutandose en diferentes plataformas y en varios lugares en internet.
HTTP es una familiar petición y respuesta estándar para el envío de mensajes a través de internet, y SOAP es un protocolo basado en XML que sigue el modelo protocolo de petición-respuesta de HTTP.
La parte SOAP de un mensaje transportado maneja lo siguiente:
La siguiente imagen indica la disponibilidad de las API Java EE 5 en cada tipo de contenedor.
A continuación, tambien, se ofrece un breve resumen de las tecnologías requeridas por la plataforma Java EE y las API utilizadas.
Enterprise JavaBeans (EJB)
un componente EJB es un cuerpo de còdigo que tienen campos y métodos para implementar módulos de lógica de negocio.
Hay dos tipos de EJB: Session beans y Message-driven beans. Un Session bean representa una conversación transitoria con un cliente. Un Message-driven bean combina las caracteristicas de un Session bean y un escucha de mensajes, permitiendo al componente de negocio recibir mensajes de forma asincrónica.
Comunmente, estos son JavaMessage Service (JMS)
Aplicaciones Web
La siguiente imagen ilustra la interacción entre un cliente web y una aplicación web.
El cliente envía una petición HTTP al servidor web. Un servidor web que implementa Java Servlet y JavaServer Pages convierte la solicitud en un objeto HTTPServletRequest. Este objeto es entregado a un componente web, que puede interactuar con JavaBeans o una base de datos para generar contenido dinámico. El componente web puede generar un HTTPServletResponse o puede pasar la petición a otro componente web. Finalmente, un componente web genera un objeto HTTPServletResponse. El servidor web convierte este objeto a una respuesta HTTP y lo devuelve al cliente.
Ciclo de Vida de una Aplicación Web
Una aplicación web consta de componentes web, archivos estáticos como imágenes, clases y librerías.
El contenedor web proporciona muchos servicios de soporte que mejoran las capacidades de los componentes web para facilitar el desarrollo. Sin embargo, porque una apicación web deba tomar en cuenta esos servicios, los procesos para crear y correr aplicaciones web son diferentes de la las tradicionales clases Java.
Java Servlet
Un Servlet es una clase Java que se utiliza para apliar las capacidades de los servidores que alojan aplicaciones a través de un modelo de programación de petición-respuesta (request-response). Aunque los servlets puedan responder a cualquier tipo de solicitud, son comunmente usados para extender las aplicaciones alojados por servidores Web.
Los paquetes javax.servlet y javax.servlet.http proporcionan interfaces y clases para escribir servlets. Todos los servlets deben implementar una interfaz Servlet. Al implementar un servicio genérico, puedes usar o extender la clase GenericServlet proporcionadas por Java Servlet API. La calse HttpServlet proporciona métodos, tales como doGet y doPost, para el manejo de los servicios específicos de HTTP.
Las solicitudes de los clientes y las respuestas de los servicios web son transmitidos como mensajes Simple Object Access Protocol (SOAP) a través de HTTP para mermitir un intercambio completamente interoperables entre clientes y servicios web, todos ejecutandose en diferentes plataformas y en varios lugares en internet.
HTTP es una familiar petición y respuesta estándar para el envío de mensajes a través de internet, y SOAP es un protocolo basado en XML que sigue el modelo protocolo de petición-respuesta de HTTP.
La parte SOAP de un mensaje transportado maneja lo siguiente:
- Define una envoltura basada en XML para describir que esta en el mensaje y la forma de procesar el mensaje.
- Incluye reglas de codificación basados en XML para expresar instancias de tipos de datos definidos por la aplicación dentro del mensaje.
- Define una convención basada en XML para la representación de la petición al servicio remoto y la respuesta resultante
La siguiente imagen indica la disponibilidad de las API Java EE 5 en cada tipo de contenedor.
A continuación, tambien, se ofrece un breve resumen de las tecnologías requeridas por la plataforma Java EE y las API utilizadas.
Enterprise JavaBeans (EJB)
un componente EJB es un cuerpo de còdigo que tienen campos y métodos para implementar módulos de lógica de negocio.
Hay dos tipos de EJB: Session beans y Message-driven beans. Un Session bean representa una conversación transitoria con un cliente. Un Message-driven bean combina las caracteristicas de un Session bean y un escucha de mensajes, permitiendo al componente de negocio recibir mensajes de forma asincrónica.
Comunmente, estos son JavaMessage Service (JMS)
Aplicaciones Web
La siguiente imagen ilustra la interacción entre un cliente web y una aplicación web.
El cliente envía una petición HTTP al servidor web. Un servidor web que implementa Java Servlet y JavaServer Pages convierte la solicitud en un objeto HTTPServletRequest. Este objeto es entregado a un componente web, que puede interactuar con JavaBeans o una base de datos para generar contenido dinámico. El componente web puede generar un HTTPServletResponse o puede pasar la petición a otro componente web. Finalmente, un componente web genera un objeto HTTPServletResponse. El servidor web convierte este objeto a una respuesta HTTP y lo devuelve al cliente.
Ciclo de Vida de una Aplicación Web
Una aplicación web consta de componentes web, archivos estáticos como imágenes, clases y librerías.
El contenedor web proporciona muchos servicios de soporte que mejoran las capacidades de los componentes web para facilitar el desarrollo. Sin embargo, porque una apicación web deba tomar en cuenta esos servicios, los procesos para crear y correr aplicaciones web son diferentes de la las tradicionales clases Java.
Estructura de un Módulo Web
Java Servlet
Un Servlet es una clase Java que se utiliza para apliar las capacidades de los servidores que alojan aplicaciones a través de un modelo de programación de petición-respuesta (request-response). Aunque los servlets puedan responder a cualquier tipo de solicitud, son comunmente usados para extender las aplicaciones alojados por servidores Web.
Los paquetes javax.servlet y javax.servlet.http proporcionan interfaces y clases para escribir servlets. Todos los servlets deben implementar una interfaz Servlet. Al implementar un servicio genérico, puedes usar o extender la clase GenericServlet proporcionadas por Java Servlet API. La calse HttpServlet proporciona métodos, tales como doGet y doPost, para el manejo de los servicios específicos de HTTP.