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.