Download Conferencia 05
Document related concepts
no text concepts found
Transcript
Asignatura: Programación 4 CEIS, CUJAE Conferencia #5 Aplicaciones empresariales. Tecnología empresarial Java Enterprise Edition. Introducción a JavaServer Faces. Patrón Modelo Vista Controlador. Objetivos: • Conocer el concepto de aplicaciones empresariales • Conocer la especificación Java Enterprise Edition • Introducir JavaServer Faces. • Identificar el patrón Modelo Vista Controlador Contenido: • Introducción. • Aplicaciones empresariales. • Especificación Java Enterprise Edition. • Tecnología JavaServer Faces. • Tecnologías JavaServlet y JavaServer Pages. • Patrón Modelo Vista Controlador • Conclusiones. • Motivación para la próxima clase. Bibliografía: 1. Geary, David; Horstmann Cay. “Core JavaServerTM Faces, Second Edition”. Prentice Hall, 2007. ISBN: 978-0-13-173886-7. Capítulos 1. 2. Deitel, P; Deitel, H. “AJAX, Rich Internet Applications, and Web Development For Programmers”. Pearson Education, Inc, 2008. Capítulo 22. 3. Dudney, B et al. “Mastering in JavaServerTM Faces”. Wiley Publishing, Inc, 2004. Capítulo1. Introducción En la actualidad existe una tendencia cada vez más fuerte de desarrollar aplicaciones distribuidas transaccionales para las empresas y por consiguiente aumentar el rendimiento, seguridad y confiabilidad de la tecnología del lado del servidor. Cuando se aborda el término empresa nos referimos a una organización económica y las aplicaciones de la empresa son aquellas aplicaciones de software que facilitan diversas actividades dentro la misma. Aplicaciones empresariales Las aplicaciones de empresa pueden ser aquellas que hacen concesiones a los usuarios finales vía Internet, a colaboradores vía Internet o redes privadas, a diversas unidades económicas dentro de la empresa vía distintos tipos de interfaces de usuario, etc. En esencia, las aplicaciones de empresa son aquellas que permiten a una empresa gestionar sus actividades económicas. Ejemplos de tales actividades incluyen planificación de recursos, inventarios y catálogos de productos, preparación de facturas, satisfacción de bienes y servicios prestados, etc. Crear aplicaciones para una empresa siempre ha sido un reto. Algunos de los factores que contribuyen a este reto y su complejidad son los siguientes: • Diversidad de necesidades de información: En una empresa, la información es creada y consumida por varios usuarios en una serie de formas diferentes, Asignatura: Programación 4 CEIS, CUJAE dependiendo de necesidades específicas. Es muy común encontrar que cada actividad económica procesa la información de un modo diferente. • Complejidad de procesos económicos: La mayoría de procesos económicos de empresa conllevan recabar información compleja, procesarla y distribuirla. Con mucha frecuencia, se enfrentará a una lógica compleja para recabar y procesar información. Esto tiene como resultado unos complejos requisitos técnicos y de arquitectura para crear aplicaciones de empresa. • Diversidad de aplicaciones: Debido a la compleja naturaleza de los procesos económicos de empresa, es frecuente encontrar una empresa consistente en un gran número de aplicaciones, cada una de ellas creada en distintos momentos para satisfacer las necesidades de distintos procesos económicos. Esto desemboca con frecuencia en la presencia de aplicaciones creadas utilizando diferentes arquitecturas y tecnologías. Uno de los retos a los que se enfrentan las empresas hoy en día es la necesidad de conseguir que dichas aplicaciones se comuniquen entre sí de modo que los procesos económicos puedan llevarse a cabo sin interrupciones. Estos factores son muy comunes y las empresas incurren en enormes costes para crear y gestionar aplicaciones que hagan frente a estos retos. Durante los últimos años, estos retos han alcanzado dimensiones monstruosas. Gracias a Internet y al reciente crecimiento del comercio electrónico, los dispositivos de información de una empresa son ahora más valiosos. Con el objetivo de mantener un margen competitivo, la adopción de nuevas tecnologías para cubrir las necesidades del momento rápidamente se ha convertido en un factor clave en la habilidad de una empresa para explotar al máximo sus dispositivos de información. Fundamentalmente, la adaptación de estas nuevas tecnologías para que funcionen en combinación con los sistemas legados ya existentes es ahora uno de los requisitos principales de la empresa. Una plataforma de desarrollo empresarial ofrece un conjunto de servicios con la finalidad de facilitar el desarrollo de aplicaciones empresariales. Regularmente una plataforma empresarial proporciona: • Escalabilidad • Fiabilidad • Disponibilidad • Extensibilidad • Manejabilidad • Seguridad • Rendimiento El desarrollo de aplicaciones empresariales permite a los desarrolladores centrar su atención en el negocio dejando que estos servicios sean controlados por componentes brindados por la plataforma empresarial. Java Enterprise Edition En la actualidad, Java es uno de los lenguajes de programación más elaborados y utilizados para la creación de software de empresa. La evolución de Java, pasando de ser un medio de desarrollo de applets ejecutados en navegadores a un modelo de programación capaz de manejar las aplicaciones de una empresa de hoy en día, ha Asignatura: Programación 4 CEIS, CUJAE sido extraordinaria. Con el paso de los años, Java ha desarrollado tres ediciones de plataformas diferentes, cada una de ellas destinada a cubrir un conjunto diferente de necesidades de programación: • Java Standard Edition (Java SE): Plataforma más utilizada dentro de Java, consistente en un entorno de tiempo de ejecución y un conjunto de varios API para crear una amplia variedad de aplicaciones que abarca desde applets, pasando por aplicaciones independientes ejecutables en distintas plataformas, hasta aplicaciones de cliente para diversas aplicaciones de empresa. • Java Enterprise Edition (Java EE): Plataforma para crear aplicaciones de servidor. Java EE proporciona la infraestructura necesaria para satisfacer las necesidades de las aplicaciones empresariales. • Java Micro Edition (Java ME): Plataforma que permite la creación de aplicaciones Java para "micro-dispositivos" (dispositivos con un apoyo de pantalla y memoria limitado, como móviles, PDAs, etc.). Java EE ha reemplazado a diversas tecnologías de propietarias como opción idónea para el comercio electrónico y otras aplicaciones de empresa de basadas en tecnología web. Hoy en día, Java EE es una de las dos opciones disponibles para la creación de grandes aplicaciones de empresariales. La otra opción la encontramos en las tecnologías .NET de Microsoft. Esta plataforma definida por la compañía Sun Microsystems brinda la solución adecuada para el desarrollo de aplicaciones empresariales basadas en software no propietario [MOL02]. Características principales de la plataforma JEE: • Independencia de la plataforma: Las aplicaciones Java EE presentan un alto grado de portabilidad puesto que están implementadas en Java. • Objetos gestionados por los contenedores: Java EE proporciona un entorno gestionado para componentes y las aplicaciones son céntricas respecto del contenedor. Estos componentes gestionados utilizan la infraestructura proporcionada por los servidores de aplicaciones Java EE, abstrayendo al programador de aspectos como la concurrencia, transacciones y la seguridad, pudiendo concentrarse más en la lógica de negocio de los componentes en lugar de las tareas de mantenimiento de bajo nivel. Se puede alcanzar un desarrollo vertiginoso, con poco coste y alta fiabilidad en el código. Las aplicaciones Java EE son declarativas, lo que permite cambiar el comportamiento sin cambiar el código. • Reusabilidad: Las aplicaciones Java EE están constituidas por componentes empresariales responsables de cierta lógica de negocio, los cuales pueden ser reutilizados por otras aplicaciones. • Modularidad: Los componentes empresariales responden a una funcionalidad específica en un determinado nivel o capa de la aplicación. Esta separación lógica posibilita poder afectar un módulo sin que esto repercuta en el resto de la aplicación. • Organismo de control: El organismo Java Community Process (JCP), formado por las empresas más importantes del mundo informático, a la vanguardia del cual se sitúa la Cía. Sun Microsystems, controla la evolución de la plataforma. • Competitividad: Muchas empresas crean sus soluciones basadas en Java EE, las cuales difieren en cuanto a prestaciones. • Madurez: fue lanzada en 1997 y consta con una amplia comunidad de desarrolladores y de importantes proyectos implementados, lo que se traduce en una alta fiabilidad. • Soluciones libres: Es posible crear arquitecturas completas basadas única y exclusivamente en productos de software libre. Asignatura: Programación 4 CEIS, CUJAE Una de las mayores ventajas de la plataforma Java EE se debe a que la misma se implementa en Java SE, la cual es la plataforma básica y más extendida de las ediciones impulsadas Sun Microsystems. La plataforma empresarial Java EE se puede definir como: • Una especificación tanto de la infraestructura para gestionar aplicaciones empresariales implementadas en Java, como de los servicios que brindan las API para desarrollar las mismas. Proporciona un estándar sencillo y unificado para aplicaciones distribuidas en un modelo de aplicación basado en componentes. • Es una plataforma de programación para desarrollar y ejecutar software de aplicaciones distribuidas en el lenguaje de programación Java con arquitectura de n niveles, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación. Similar a otras especificaciones del Java Community Process (JCP), es también considerada informalmente como un estándar debido a que los suministradores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a la especificación Java EE. El modelo Java EE define una arquitectura para la implementación de servicios como aplicaciones multicapas que entreguen la escalabilidad, accesibilidad y manejabilidad necesitadas por las aplicaciones a nivel de empresa. Este modelo divide el trabajo precisado para implementar un servicio multicapa en dos partes: la lógica de negocio y de presentación para que sean implementadas por el desarrollador y los servicios estándares a nivel de sistema proporcionados por la plataforma. Aplicaciones multicapas distribuidas Java EE La plataforma Java EE emplea un modelo de aplicación multicapa distribuido para el desarrollo de aplicaciones empresariales. Este modelo divide la lógica de la aplicación en componentes de acuerdo a sus funciones, los cuales pueden estar instalados en diferentes ordenadores de la red dependiendo del nivel en el entorno multicapa Java EE al cual el componente de aplicación pertenezca. La Fig. 1 muestra un esquema de dos aplicaciones multicapas Java EE separadas en las capas mencionadas a continuación: • Capa Cliente: componentes que se ejecutan en un ordenador cliente. • Capa Web: componentes que se ejecutan en un servidor Java EE. • Capa del Negocio: componentes que se ejecutan en un servidor Java EE. • Capa del Sistema Empresarial de Información (EIS): software que se ejecuta el servidor EIS. Asignatura: Programación 4 CEIS, CUJAE Fig. 1 Modelo de Java EE para aplicaciones multicapas distribuidas Componentes Java EE Un componente Java EE es una unidad de software funcional independiente acoplada dentro de una aplicación con clases y ficheros relacionados, y con capacidad para comunicarse con otros componentes. La especificación de Java EE 5 define los siguientes componentes: • Aplicaciones clientes y applets, componentes que se ejecutan en el cliente. • Java Servlet, JavaServer Faces (JSF) y JavaServer Pages (JSP), tecnologías de componentes web que se ejecutan en el servidor. • Los Enterprise JavaBeans (EJB), componentes del negocio que se ejecutan en el servidor. Contenedores Java EE Normalmente las aplicaciones de dos niveles cliente-servidor, son difíciles de desarrollar, puesto que conlleva muchas líneas de código para manejar transacciones, estado de los recursos, concurrencia, conexiones y otros detalles de bajo nivel. La arquitectura basada en componentes y la independencia de la plataforma, hacen que las aplicaciones Java EE sean fáciles de implementar, debido a que la lógica del negocio es organizada en componentes reusables. Conjuntamente el servidor Java EE proporciona los servicios antes mencionados en forma de contenedor para cada tipo de componente que se ejecute en él. Puesto que el desarrollador no necesita implementar estos servicios, se encuentra autónomo para concentrarse más en la lógica del negocio que en los servicios de bajo nivel. Asignatura: Programación 4 CEIS, CUJAE JavaServer Faces JavaServer Faces es una tecnología atractiva, altamente escalable, portable a múltiples plataformas y soportada por muchos vendedores. JSF simplifica el desarrollo de interfaces de usuario de aplicaciones web sofisticadas, en primer lugar definiendo un modelo de componentes de interfaz de usuario asociado a un bien definido ciclo de vida para el procesamiento de solicitudes. JSF está compuesto por tres partes: • Conjunto prefabricado de componentes de interfaz de usuario • Modelo de programación guiado por eventos • Modelo de componentes que posibilita a los desarrolladores suministrar componentes adicionales JSF es parte de la especificación estándar Java EE. JSF está incluido en todos los servidores de aplicaciones Java EE y puede ser fácilmente adicionado a contenedores web ligeros como Apache Tomcat. Java Servlet Los servlets representan el nivel más bajo de las tecnologías de desarrollo web en Java. Ellos utilizan el modelo de comunicación petición/respuesta del protocolo HTTP entre el cliente y el servidor. Los servlets extienden una funcionalidad del servidor permitiéndole generar contenidos dinámicos.Por ejemplo, los servlets pueden generar dinámicamente documentos XHTML (Extensible Hyper Text Markup Language), ayudar a proveer acceso seguro a un sitio web, interactuar con Bases de Datos en representación de un cliente y mantener información de sesión única para cada cliente. El contenedor de servlet es el componente del servidor web responsable de ejecutar e interactuar con los servlets. Los paquetes javax.servlet y javax.servlet.http proporcionan las clases e interfaces para definir servlets. El contenedor de servlet recibe peticiones HTTP desde los clientes y direcciona cada solicitud al servlet apropiado. El servlet seleccionado procesa la solicitud y devuelve una respuesta apropiada al cliente, generalmente en la forma de un documento XHTML o XML para ser visualizado en el navegador. Arquitecturalmente, todos los servlets deben implementar la interfaz Servlet del paquete javax.servlet, la cual asegura que cada servlet puede ejecutarse en la plataforma proporcionada por el contenedor de servlet. La interfaz Servlet declara los métodos utilizados por el contenedor para manejar el ciclo de vida del servlet. El ciclo de vida del servlet comienza cuando el contenedor lo carga en memoria para atender a una solicitud. Las nuevas solicitudes son atendidas por hilos separados de ejecución (instancias diferentes del mismo servlet) por motivos de seguridad. JavaServer Pages La tecnología JavaServer Pages (JSP) es una extensión de la tecnología servlet. Cada página JSP es traducida por el contenedor de JSP en un servlet en tiempo de ejecución. A diferencia de los servlets, JSP ayuda al desarrollador a separar la presentación del contenido. JSP permite que los desarrolladores de aplicaciones web generen contenido dinámico reutilizando componentes predefinidos e interactuando Asignatura: Programación 4 CEIS, CUJAE con componentes del lado del servidor. Los desarrolladores de JSP pueden utilizar componentes de software especiales denominados JavaBeans y librerías de etiquetas que encapsulan funcionalidades dinámicas y complejas. Procesar peticiones JSP Cuando un servidor recibe la primera solicitud para una página JSP, el contenedor JSP traduce la página JSP en un servlet que controla la petición actual y las futuras que se realicen a la misma página. Por lo tanto, JSP se apoya en el mismo mecanismo de petición/respuesta que la tecnología Java Servlet. Empaquetamiento de aplicaciones Java EE Las aplicaciones empresariales son entregadas como un fichero EAR (Enterprise Archive), similar a los ficheros .jar pero con extensión .ear. Utilizar ficheros EAR y módulos hace posible ensamblar un número diferente de aplicaciones Java EE empleando algunos de los mismos componentes. Los ficheros EAR contienen módulos de Java EE y descriptores de despliegue. Un descriptor de despliegue es un documento XML que describe las características de despliegue de una aplicación, un módulo o un componente. Debido que la información del descriptor de despliegue es declarativa, el mismo puede ser modificado sin la necesidad de modificar el código fuente de la aplicación. En tiempo de ejecución, el servidor de Java EE interpreta el descriptor de despliegue y actúa sobre la aplicación, módulo o componente en cuestión. Las aplicaciones JSF son desplegadas como ficheros compactados WAR (Web Archive) con extensión .war. Este tipo de empaquetado tiene la estructura de directorio que se muestra a continuación en: Fig. 2 Estructura de un archivo WAR Por ejemplo el fichero WAR del ejemplo que se analizará en la próxima conferencia es presentado en la Figura 3. Destacar que la clase UserBean se encuentra en el paquete com.corejsf. Asignatura: Programación 4 CEIS, CUJAE Fig. 3 Estructura ejemplo de un archivo WAR Patrón Modelo Vista Controlador La noción de patrones fue introducida en el campo de la arquitectura por Christopher Alexander y sus colegas en A Pattern Language (Alexander et al., 1977) y The Timeless Way Building (Alexander, 1979). Ellos explicaron la naturaleza de los patrones como sigue: “Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno y entonces describe el núcleo de la solución para ese problema, en tal forma que se puede utilizar esa solución un millón de veces más, sin tener que hacerlo de la misma forma dos veces.” El patrón Modelo Vista Controlador (Model View Controller, de su nombre en inglés) proporciona una solución flexible para desacoplar los compones Modelo, Vista y Controlador de una aplicación, al mismo tiempo que brinda una interfaz uniforme entre ellos. Este patrón es apropiado si uno o más de las siguientes afirmaciones se cumple: • Se desea proporcionar diferentes representaciones de los datos de la misma aplicación. • Se desea proporcionar diferentes vistas y comportamientos para la interfaz de usuario sin afectar el resto de la aplicación. • Eventos guiados por el usuario deben inmediatamente modificar los datos de la aplicación o otros componentes de la interfaz de usuario, mientras que las modificaciones a los datos de la aplicación deben ser reflejados inmediatamente componentes de la interfaz de usuario. • Se desea reutilizar uno o más componentes de la interfaz de usuario independientemente de los datos de la aplicación. En el patrón MVC existen tres participantes principales. A continuación se brinda un resumen de las responsabilidades de cada participante y se explica como ellos colaboran: • Modelo. Proporciona una representación por componentes de los datos de la aplicación y la lógica funcional. Es esencialmente el núcleo de la aplicación. • Vista. Proporciona una o más representaciones de los datos de la aplicación y comportamiento en forma grafica para el consumo del usuario. Este el único participante con el cual el usuario interactúa directamente. Asignatura: Programación 4 • CEIS, CUJAE Controlador. Procesa los eventos guiados por el usuario, los cuales resultan en modificaciones al Modelo. Cuando el usuario interactúa con los componentes de la interfaz de usuario en la Vista, los eventos son enviados a uno o más Controladores para procesarlos. Si el evento requiere cambios en el Modelo, un Controlador puede manipular los datos del Modelo o invocar operaciones específicas de la aplicación. Si el evento requiere cambios en otros componentes de interfaz de usuario, un Controlador puede manipularlos directamente, adicionar nuevos componentes o remover componentes existentes. Las Vistas se apoyan en el Modelo para visualizar la información a los usuarios, pero ellas no modifican al Modelo directamente. Cuando los cambios ocurren en el Modelo, las Vistas son notificadas y entonces pueden consultar el Modelo para información adicional. Esto proporciona a las Vistas la oportunidad de inmediatamente sincronizar se ellas mismas con los cambios del Modelo. Vistas y Controladores are débilmente acopladas con el Modelo a través de este mecanismo de notificación de cambios. Vistas y Controladores se registran ellos mismos con el Modelo, el cual a su vez mantiene una lista de observadores registrados para los cambios. Cuando los cambios al Modelo ocurren, Vistas y Controladores son notificados como sea necesario. Modelo-2 de MVC para aplicaciones web en Java Típicamente un usuario interactúa con una página en un navegador web y envía solicitudes de información al servidor. Un servlet controlador está escuchando las peticiones que coinciden con cierta URL para el que ha sido designado en el descriptor de despliegue (Fichero web.xml). Cuando la solicitud es recibida, el Servlet interactúa con el Modelo y entonces determina a cual componente de Vista (usualmente JSP o XHTML en el caso de Facelets) entregar el control para generar una respuesta. Como parte de la generación de la respuesta, la Vista puede consultar el Modelo (Ver Fig. 4). Fig. 4 Representación del Modelo-2 del patrón MVC Esta es actualmente una representación simple de la arquitectura Modelo-2 pata MVC. Mejoras son comúnmente realizadas para incrementar la flexibilidad y escalabilidad de grandes aplicaciones. Es importante señalar: Asignatura: Programación 4 • • CEIS, CUJAE Usualmente existe un controlador servlet único para las aplicaciones Web, con el objetivo de proporcionar un simple punto de acceso para manejar cuestiones de seguridad, administración y flujo de la aplicación. El servlet controlador emplea componentes y/o configuraciones XML para definir el procesamiento y el flujo de las respuestas. Modelo-2 de MVC para JSF El controlador de JSF consiste primariamente de un servlet denominado Faces Servlet, uno o más ficheros de configuración y un conjunto manejadores de acciones. El Faces Servlet es responsable de recibir las peticiones entrantes desde los clientes web y entonces ejecutar un conjunto de pasos lógicos con el objetivo de preparar y entregar la respuesta: • Restaurar la Vista • Aplicar los Valores de la Solicitud • Procesar las Validaciones • Modificar los Valores del Modelo • Invocar la Aplicación • Visualizar la Respuesta Conclusiones En la conferencia se analizaron la características de las aplicaciones empresariales; se definió la plataforma Java EE como la solución estándar de Java para desarrollar aplicaciones de este tipo. Se introdujo la tecnología JSF como estándar de Java EE para implementar aplicaciones web empresariales y se abordó el patrón MVC. Motivación para la próxima clase En la próxima clase se continuará el estudio de la tecnología JSF.