Download TEMA XX - oposcaib
Document related concepts
no text concepts found
Transcript
TEMA 54 – JEE TEMA 54 – La arquitectura JEE Índice 1 Introducción................................................................................................................................2 1.1 Tecnología JAVA________________________________________________________________3 1.2 Las plataformas Java_____________________________________________________________3 2 La plataforma JEE......................................................................................................................4 2.1 Modelo distribuido multicapa______________________________________________________4 2.2 Gestión de componentes basada en contenedores______________________________________5 2.2.1 Tecnologías de componentes........................................................................................................................6 2.2.2 Tecnologías de servicio................................................................................................................................6 2.2.3 Tecnologías de comunicación......................................................................................................................7 3 Componentes de la Plataforma JEE...........................................................................................8 3.1 EJB –Enterprise JavaBeans-_______________________________________________________8 3.2 SERVLETS_____________________________________________________________________9 3.3 JSP – Java Server Pages-_________________________________________________________10 4 Diversos escenarios de aplicación.............................................................................................11 4.1 Aplicación web-básica___________________________________________________________11 4.2 Aplicación centrada en web______________________________________________________11 4.3 Aplicación web mediante MVC___________________________________________________11 4.4 Aplicación independiente_________________________________________________________11 Página 1 de 11 TEMA 54 – JEE 1 Introducción En la década de los 90, la arquitectura predominante para el desarrollo de aplicaciones era la de cliente/servidor con clientes pesados. El servidor era una base de datos, a la cual accedían los clientes que se encargaban de ejecutar la lógica de negocio y la representación del interfaz de usuario. Se utilizaban tecnología como Visual Basic + Sql Server, Delphi... A finales de los 90, el desarrollo de aplicaciones corporativas sufrió una revolución con el uso de las tecnologías de web para desarrollarlas. Las aplicaciones web tienen una arquitectura diferente, una arquitectura multicapa, generalmente 3 capas, y utilizan como cliente en la máquina del usuario un programa “estándar” el navegador web. Las ventajas de construir este tipo de aplicaciones son: o Reducción de costes de mantenimiento: ♦ La administración de la aplicación se realiza de forma centralizada en los servidores. ♦ El navegador web es un programa que viene por defecto en la mayoría de SO, no tiene costes de adquisición y un coste de mantenimiento bajo. o Las tecnologías web son tecnologías abiertas, basadas en estándares, esto permite que: ♦ Se reduzcan las dependencias con los proveedores. Las aplicaciones pueden operar sin problemas con aplicaciones de otros fabricantes. ♦ Independiente de la plataforma. Existen aplicaciones de soporte para aplicaciones web para todo tipo de plataformas: Windows, Linux, Unix... o Movilidad: Permiten que cualquier usuario conectado a la red LAN de la organización pueda acceder a ellas (Intranet). Si se conecta la red LAN a Internet, y se da acceso a las aplicaciones, cualquier usuario del mundo conectado a Internet, puede acceder a las aplicaciones (Extranet). Página 2 de 11 TEMA 54 – JEE 1.1 Tecnología JAVA La tecnología líder para el desarrollo de aplicaciones web es la tecnología Java de la empresa SUN. SUN ha desarrollado y liberalizado una especificación estándar para crear las aplicaciones de soporte –Middleware- que da soporte a las aplicaciones web portables y multiplataformas. La tecnología de SUN se basa en el lenguaje Java, un lenguaje de programación orientado a objetos de uso general, que posee una poderosa API para el desarrollo de aplicaciones Web. Al compilar un fichero Java, se genera un fichero escrito en lenguaje ByteCode, un lenguaje de bajo nivel. El código ByteCode es interpretado por la máquina virtual de Java –JVM-. La JVM permite independizar la ejecución del programa de la plataforma y el SO, y protege al ordenador de fallos del programa. El uso de la JVM permite la portabilidad de los programas copilados, pues cualquier plataforma que tenga la JVM puede ejecutar el mismo fichero en ByteCode, y una mayor seguridad en la ejecución, pues ésta es controlada por la JVM. Las especificaciones de la plataforma Java son públicas, por ello, existen una gran variedad de plataformas Java de fabricantes diferentes, incluso existen plataformas de código libre muy buenas. 1.2 Las plataformas Java Existen tres especificaciones diferentes de la plataforma de ejecución de aplicaciones Java: • Java Micro Edition –JME-. Plataforma para aplicaciones para dispositivos como PDA o móviles. • Java Standard Edition –JSE-. Plataforma estándar de Java. • Java Enterprise Edition –JEE-. Es la plataforma para aplicaciones empresariales. Basada de la plataforma JSE pero con más funcionalidades. Actualmente JEE se encuentra en la versión 1.5. En las versiones anteriores, JEE se denominaba J2EE. Cada especificación de una plataforma se compone de: • Una especificación de cómo debe ser el servidor de aplicaciones. • Una especificación de librerías de desarrollo que deben acompañar al servidor. Las especificaciones son libres, por ello existen implementaciones de diferentes fabricantes (Oracle, SUN, IBM…) Página 3 de 11 TEMA 54 – JEE 2 La plataforma JEE La plataforma JEE (Java Enterprise Edition) representa un modelo estándar para el desarrollo y despliegue de aplicaciones corporativas. Utilizado principalmente para crear componentes modulares dentro de los servidores de aplicaciones. Provee de soluciones para el desarrollo de aplicaciones extensas y distribuidas, en entornos heterogéneos y consigue que las aplicaciones sean escalables, fiables y seguras. Las características de la plataforma son: 2.1 Modelo distribuido multicapa La plataforma JEE ofrece un modelo de aplicación distribuido multicapa. Esto significa que varías partes de una aplicación pueden ejecutarse de forma independiente, frecuentemente en equipos diferentes. Las aplicaciones JEE organizan las aplicaciones en tres capas: ♦ La capa cliente: Es la parte que interactúa con el usuario (Navegadores Web, aplicaciones de escritorio…). JEE no establece ninguna tecnología específica para los componentes de la capa de cliente. ♦ La capa central: Contiene el software encargado de gestionar las peticiones de los usuarios, ejecutar la lógica de negocio y gestionar el acceso a los datos. ♦ La capa de datos: Son los sistemas de almacenamiento de la información corporativos, generalmente bases de datos. JEE contiene la tecnología necesaria para conectarse a estos sistemas. Cliente EJB Cliente Contenedor EJB EJB Firewall Cliente Cliente Capa Cliente Contenedor Web (Páginas JSP, Servlets, HTML, XML...) JNDI JMS JavaMail Capa Central Página 4 de 11 Sistemas de información de la Empresa (Bases de Datos, Sistemas heredados...) Capa de datos TEMA 54 – JEE 2.2 Gestión de componentes basada en contenedores Los componentes de una aplicación JEE se ejecutan dentro de unos contenedores. Los contenedores son entornos de ejecución estandarizados que ofrecen servicios a los componentes. Al diseñar un componente, se sabe que dispondrán de estos servicios en cualquier plataforma JEE. Por ejemplo, Los contenedores EJB ofrecen la posibilidad de gestionar las transacciones por el contenedor. Además, los contenedores ofrecen un mecanismo para configurar una aplicación una vez implementada, utilizando descriptores de despliegue (ficheros XML que especifican el comportamiento de los componentes). El uso de descriptores de despliegue facilita la administración de las aplicaciones. Los componentes se pueden configurar sin tener que recompilar las aplicaciones. Las características que se pueden configurar en tiempos de despliegue incluyen: seguridad, control de transacciones, fuentes de datos (DataSources), constantes de despliege…. Página 5 de 11 TEMA 54 – JEE Tecnologías de la plataforma JEE Las tecnologías que componen el modelo JEE se pueden agrupar en tres categorías: componentes, servicios y comunicaciones. 2.2.1 Tecnologías de componentes Son las tecnologías usadas para desarrollar los elementos de una aplicación corporativa. Una aplicación JEE se desarrolla como un conjunto de módulos con pocas dependencias entre ellos. La tecnología de componentes permite: ♦ Permite reutilizar los módulos en otras aplicaciones, ♦ Simplificar la programación de aplicaciones (técnica de divide y vencerás) y ♦ Permite configurar componentes de forma externa (ficheros de despliegue). JEE está centrado en el desarrollo de los componentes de la capa central de la aplicación. En esta capa aparecen dos tipos de componentes, que se ejecutan en contenedores diferentes. Por un lado los componentes orientados a la web, los Servlets y JSP Estos componentes se encargan de atender las peticiones del cliente y generar la respuesta adecuada. Generalmente una página html o documento XML. Para generar el resultado pueden llamar a otros componentes. Por otro lado, los componentes de la lógica de negocio, los EJB Con estos componentes se implementa la lógica de negocio y el acceso a datos de la aplicación. Los temas de escalabilidad y seguridad se gestionan en el servidor. Los componentes básicos los explicaré en un apartado posterior. 2.2.2 Tecnologías de servicio Son los servicios ofrecidos por los contenedores a los componentes de la aplicación. Gracias a estos servicios, no es necesario desarrollarlos en las aplicaciones. Los principales servicios son: Arquitectura de conectores La plataforma JEE dispone de un API estándar para conectar la plataforma JEE a los Sistemas de Información (SI) de la empresa que no sean JEE. La arquitectura define de mecanismo para la integración de estos SI con las aplicaciones corporativas JEE. Con el uso de esta arquitectura se evita tener que hacer un desarrollo particular para conectar las aplicaciones JEE a cada tipo diferente de Sistema de Información. El servidor JEE posee un conector estándar, accesible por cualquier aplicación. Cada SI debe disponer también de un conector que cumpla el estándar del API. Si se configuran ambos conectores para trabajar juntos, las aplicaciones pueden acceder al SI de forma transparente. Aplicación JEE Conector estándar JEE Página 6 de 11 Conector fabricante Sistema de información TEMA 54 – JEE API JDBC – Java DataBase ConnectionLa API JDBC ofrece conectividad entre la plataforma JEE y un amplio abanico de almacenes de datos. La tecnología JDBC permite a los componentes de una aplicación: • Conectar y autenticar contra un servidor de base de datos • Enviar expresiones SQL a un motor de base de datos su ejecución • Ejecutar procedimientos almacenados, Gestionar transacciones El uso de JDBC permite el uso uniforme de bases de datos heterogéneas. El código de acceso a la BBDD es independiente de su tecnología. JNDI (Java Naming and Directory Interface) La API JNDI proporciona funcionalidad de acceso a un servicio de directorio. Ofrece métodos para realizar operaciones estándar de directorio, tal y como asociar atributos con objetos y buscar por objetos usando sus atributos. Usando JNDI, una aplicación puede guardar y recuperar cualquier tipo de objeto Java. Por ejemplo, en el JNDI se guarda el “DataSource” que hace referencia a la BBDD que usa la aplicación. Cambiando la referencia en el JNDI, se puede cambiar de BBDD sin tener que tocar el código de la aplicación. Las aplicaciones JEE pueden usar JNDI para acceder a diferentes servicios de nombre y directorio, como LDAP o DNS. Independientemente de su implementación. 2.2.3 Tecnologías de comunicación Son las tecnologías que proporcionan un mecanismo para las comunicaciones entre los clientes y los servidores y entre objetos ubicados en distintos servidores. La especificación JEE requiere apoyo por el siguiente tipo de tecnologías: • Protocolos de Internet: El estándar JEE establece que los sistemas que le dan soporte implementan los protocolos de comunicación TCP/IP • Protocolos de invocación remota de métodos (RMI): Es un conjunto de APIs que permiten a los desarrolladores construir aplicaciones distribuidas Java. Permite definir objetos remotos y conseguir realizar invocaciones remotas de métodos. Protocolos del Object Management Group (OMG): JEE necesita disponer de de las tecnologías OMG para poder comunicarse con objetos remotos CORBA. Tecnologías de mensajería: Proporcionan una forma de enviar y recibir mensajes (Comunicaciones asíncronas). La API que lo implementa es JMS (Java Message Service). • • Los componentes de las aplicaciones en un servidor JEE estándar dispondrán de estos servicios de comunicaciones accesibles a través de sus contendores. Página 7 de 11 TEMA 54 – JEE 3 Componentes de la Plataforma JEE 3.1 EJB –Enterprise JavaBeans- La arquitectura EJB es una tecnología de servidor para el desarrollo y despliegue de componentes que contienen la lógica de negocio de la aplicación. Los componentes EJB (entreprise beans) son escalables, transaccionales y soportan el acceso concurrente por parte de múltiples clientes. La versión actual del estándar EJB 3. Los EJB se implementan como una clase java y dos interfaces java (Home y Remote). En la clase java se implementa el EJB, en las interfaces se declaran los métodos del EJB accesibles de forma remota. Hay tres tipos de enterprise beans: session beans, entity beans y message beans. Session beans Un session bean se crea para ofrecer un servicio a un cliente. Realiza operaciones cómo pueden ser cálculos y accesos a base de datos. Un session bean no se puede recuperar si su contenedor cae. Los session bean pueden ser: Sin estado (stateless). Las instancias del EJB no tienen un usuario asignado. Cada acceso se considera independiente. Con estado (statefull). Se crea una instancia del EJB para cada sesión del usuario y guarda información sobre el estado de la sessión. Los Session bean con estado ofrecen mayor funcionalidad que los “sin estado” al gestionar ellos el estado de la comunicación. Pero son más lentos y consumen más recursos. Los objetos session bean debe gestionar sus propios datos persistentes. Entity beans Un entity bean es un objeto persistente que representa datos que se mantienen en un almacén de datos. Un entity bean puede gestionar su propia persistencia o puede delegar esta función a su contenedor. Un entity bean puede existir tanto como los datos que representa. A partir de JEE 1.5, los entitys beans desaparecen sustituidos por JPA (Java Persistance API). Se ha desarrollado JPA debido a la excesiva complejidad de los entity bean. Message beans Los message beans se comportan de forma muy similar a los stateless session beans, pero son asíncronos. En el modelo asíncrono, un cliente puede invocar un bean y no ha de esperar que el método acabe su ejecución para continuar. Usan un modelo de colas de mensajes (compartidas o no compartidas) para implementar la comunicación asíncrona. Página 8 de 11 TEMA 54 – JEE Contenedores EJB Los EJB se encuentran en un contenedor de EJBs que les proporciona acceso a un amplio abanico de servicios, como transacciones, persistencia… y controla su ejecución. El acceso a la capa de gestión de datos se realiza a través de los servicios que proporciona JEE, generalmente usando JDBC. 3.2 SERVLETS Los Java Servlets son una manera de extender la funcionalidad de un servidor Web. Son los componentes capaces de generar contenido dinámico, normalmente páginas web. La versión actual es la 2.5. Las ventajas de usar Servlets para generar contenido dinámico son: Escalabilidad: El rendimiento de los servlets es mejor que los métodos anteriores, como el uso de scripts CGI. Un servlet puede ser cargado en memoria una vez y entonces ser ejecutado tantas veces como sea necesario. Proporcionan un API uniforme para mantener datos de sesión en una aplicación web. Los datos de sesión pueden ser usados para superar las limitaciones derivadas del protocolo http (Protocolo sin estado). El contenedor web proporciona servicios de seguridad, control de concurrencia... por lo que no tienen que ser desarrollados. Los servlets se programan derivándolos de la clase abstracta Servlet o derivada y sobrecargando los métodos que nos interesen. Funcionamiento: • Cada servlet está asociado a una petición web. Por ejemplo, a la solicitud de la página www.caib.es/index.html. • Cuando esta petición llega al servidor web, éste la transmite al contenedor web, que crea un hilo para ejecutar el servlet o aprovecha alguno que este yo en memoria y le pasa los parámetros de la petición. • El Servlet ejecuta las operaciones que considere necesarias según los parámetros de la petición. Puede llamar a otros objetos Java. • Finalmente, genera la respuesta a la petición, en forma de página html, xml, pdf... y se la envía al servidor web para que la envía al cliente. Los servlets son un instrumento eficaz para gestionar las peticiones web, pero hacen complejo y costoso el desarrollo de la lógica para generar la respuesta. Un servlet utiliza métodos ‘print' para generar el código de la página web que se enviará respuesta al usuario. Embeber HTML dentro del código Java genera dos problemas. 1. El diseñador web no puede pre-visualizar el diseño de la página sin ejecutar el servlet. 2. Se suele mezclar la lógica de presentación y contenido, lo que provoca que el mantenimiento de ambas partes sea más difícil. Por ello, se desarrollaron los JSP. Página 9 de 11 TEMA 54 – JEE 3.3 JSP – Java Server Pages- La tecnología JavaServer Pages (JSP) fue diseñada para reducir el esfuerzo de generar páginas html, mediante servlets. La versión actual es la 2.1 La tecnología JSP está orientada a ser utilizada para generar el interfaz de las aplicaciones, dejando a otros componentes la lógica de presentación. Las páginas JSP son páginas HTML o XML, en la que se han embebido etiquetas JSP y código Java entre etiquetas que lo identifican ( <% Código Java %>). El lenguaje JSP es un lenguaje de script de servidor como ASP o PHP. Las página JSP para ejecutarse, se traducen a un Servlet, el cual genera las páginas web. El contenedor de Servlets es el encargado de gestionar y traducir los JSP a servlets. La traducción se realiza sólo la primera vez que se llama a la página JSP, o se puede hacer de forma adelantada para mejorar el rendimiento. JSP permite: ♦ Utilizar herramientas gráficas de diseño web para crear y visualizar páginas JSP. ♦ Crear etiquetas propias, para realizar tareas complejas, de forma que los diseñadores web usen esos tags y no necesiten saber programar en Java para crear páginas JSP complejas. ♦ Ofrecer contenido dinámico de forma portable e independiente. La tecnología JSP también soporta el modelo de componentes reusables a través de la inclusión de la tecnología JavaBeans y las extensiones de etiquetas. El inconveniente de los JSP y del resto de lenguajes de script de servidor, es que el mantenimiento de sus ficheros puede ser complejo, pues una página jsp puede contener código de muchos lenguajes diferentes (HTML, CSS, JAVASCRIPT y JSP). Página 10 de 11 TEMA 54 – JEE 4 4.1 Diversos escenarios de aplicación Aplicación web-básica En una aplicación web básica, donde el cliente en un navegador web. La generación de contenidos dinámicos se realiza mediante JSP y se usa EJB para el acceso a los datos de la aplicación. Suelen ser aplicaciones pequeñas y simples. La arquitectura cumple con el modelo de tres capas de JEE. Cliente 4.2 Contenedor web Contenedor EJB Servidor de datos Aplicación centrada en web En ocasiones, una aplicación no tiene (ni se prevé que tenga) la complejidad para tener una capa de EJB. Los componentes Web directamente acceden a los datos (via JDBC) e implementan la lógica de negocio. Esto reduce esfuerzo de desarrollo, a costa de reducir la mantenibilidad de la aplicación. Cliente 4.3 Contenedor web Servidor de datos Aplicación web mediante MVC En el diseño de aplicaciones web complejas se suele usar la arquitectura modelo-vistacontrolador, donde el modelo de negocio estará soportado por los componentes EJB, la vista (interfaz) se generará mediante JSP y el control de la interacción con el usuario se realizará con los servlets. Este modelo de arquitectura facilita el desarrollo y mantenimiento de aplicaciones de tamaño medio y grande. Es la arquitectura recomendada para aplicaciones web. Cliente Servlet web Contenedor Contenedor EJB EJB Servidor de datos JSP 4.4 Aplicación independiente El cliente es una aplicación independiente, hecha en Java u otro lenguaje. La aplicación puede conectarse al contenedor web (vía http), al contenedor EJB (vía RMI, CORBA…) o directamente los servidores de datos (via JDBC). Cliente Contenedor web Contenedor EJB Servidor de datos Esta arquitectura permite realizar aplicaciones muy especializadas con características que no puedan ofrecer las aplicaciones web, por ejemplo tiempo de respuesta. Su gran inconveniente es que se pierden las ventajas de las aplicaciones web (coste de desarrollo y mantenimiento, facilidad de uso, portabilidad…), por ello es una solución usada en aplicaciones con requisitos que no puedan satisfacer una interfaz web. Página 11 de 11