viernes, 11 de marzo de 2011

MVC - JAVASERVER FACES

Que es JavaServer Faces ?

Definicion


La tecnología JavaServer Faces es un framework de interfaz de componentes de usuarios del lado del servidor para las aplicaciones web basadas en la tecnología Java. Los principales componentes de la tecnología JSF son:

    • Una API para:Representar componentes de Interfaz de Usuario (UI) y gestionar su estado.
    • Manejar eventos, validar en el servidor y conversión de datos.
    • Definir la navegación de páginas.
    • Soporte de internacionalización y accesibilidad.
  • Dos librerías de etiquetas JSP personalizadas para expresar componentes en una página JSP y enlazar los componentes a objetos del servidor.
El modelo de programación bien definido y las librerías de etiquetas facilitan la construcción y mantenimiento de las aplicaciones web con Interfaces de Usuario (UI) de servidor. Con un mínimo esfuerzo se podría:

  • Poner componentes en una página mediante etiquetas de componentes.
  • Enlazar eventos generados por componentes con código de la aplicación en el servidor.
  • Relacionar componentes UI en una página con datos del servidor.
  • Construir una UI con componentes reutilizables y extensibles.
  • Salvar y restaurar el estado de la UI más allá de la vida de las peticiones.
JSF es una especificación desarrollada por la Java Community Process. Actualmente existen tres versiones de esta especificación:

Hoy en día se encuentran disponibles varias implementaciones de JSF, sin embargo la más extendida es Apache MyFaces. Ésta es la implementación más usada. Actualmente implementa la versión 1.2 de la especificación JSF.

Por hacer un resumen, JSF proporciona:

  1. Una clara separación entre vista y modelo.
  2. Desarrollo basado en componente, no en peticiones.
  3. Las acciones del usuario se ligan muy fácilmente al código en el servidor.
  4. Creación de familias de componentes visuales para acelerar el desarrollo.
  5. Ofrece múltiples posibilidades de elección entre distintos desarrollos.

Características


Los principales componentes de la tecnología JavaServer Faces son:

  • Un API y una implementación de referencia para: representar componentes UI y manejar su estado; manejo de eventos, validación del lado del servidor y conversión de datos; definir la navegación entre páginas; soportar internacionalización y accesibilidad; y proporcionar extensibilidad para todas estas características.
  • Una librería de etiquetas JavaServer Pages (JSP) personalizadas para dibujar componentes UI dentro de una página JSP.
Este modelo de programación bien definido y la librería de etiquetas para componentes UI facilitan de forma significativa la tarea de la construcción y mantenimiento de aplicaciones Web con UIs del lado del servidor. Con un mínimo esfuerzo, podemos:

  • Conectar eventos generados en el cliente a código de la aplicación en el lado del servidor.
  • Mapear componentes UI a una página de datos del lado del servidor.
  • Construir un UI con componentes reutilizables y extensibles.
  • Grabar y restaurar el estado del UI más allá de la vida de las peticiones de servidor.
Como se puede apreciar en la siguiente figura, el interface de usuario que creamos con la tecnología JavaServer Faces (representado por myUI en el gráfico) se ejecuta en el servidor y se renderiza en el cliente.

jsf1.jpg

La página JSP, myform.jsp, dibuja los componentes del interface de usuario con etiquetas personalizadas definidas por la tecnología JavaServer Faces. El UI de la aplicación Web (representado por myUI en la imagen) maneja los objetos referenciados por la página JSP:

  • Los objetos componentes que mapean las etiquetas sobre la página JSP.
  • Los oyentes de eventos, validadores, y los conversores que están registrados en los componentes.
  • Los objetos del modelo que encapsulan los datos y las funcionalidades de los componentes específicos de la aplicación.

Ventajas e inconvenientes de JSF

Existen numerosas ventajas que hacen que JSF sea una tecnología apropiada para el desarrollo de aplicaciones web:

  • Una de las grandes ventajas de la tecnología JavaServer Faces es que ofrece una clara separación entre el comportamiento y la presentación. Las aplicaciones Web construidas con tecnología JSP conseguían parcialmente esta separación. Sin embargo, una aplicación JSP no puede mapear peticiones HTTP al manejo de eventos específicos del componentes o manejar elementos UI como objetos con estado en el servidor.
  • La tecnología JavaServer Faces permite construir aplicaciones Web que implementan una separación entre el comportamiento y la presentación tradicionalmente ofrecidas por arquitectura UI del lado del cliente. JSF se hace fácil de usar al aislar al desarrollador del API de Servlet.
  • La separación de la lógica de la presentación también le permite a cada miembro del equipo de desarrollo de una aplicación Web enfocarse en su parte del proceso de desarrollo, y proporciona un sencillo modelo de programación para enlazar todas las piezas.
  • Otro objetivo importante de la tecnología JavaServer Faces es mejorar los conceptos familiares Disadvantage de componente-UI y capa-Web sin limitar a una tecnología de script particular o un lenguaje de marcas. Aunque la tecnología JavaServer Faces incluye una librería de etiquetas JSP personalizadas para representar componentes en una página JSP, los APIs de la tecnología JavaServer Faces se han creado directamente sobre el API JavaServlet. Esto permite hacer algunas cosas: usar otra tecnología de presentación junto a JSP, crear componentes propios personalizados directamente desde las clases de componentes, y generar salida para diferentes dispositivos cliente. Así, se podrán encapsular otras tecnologías como Ajax en componentes JSF, haciendo su uso más fácil y productivo, al aislar al programador de ellas.
  • JavaServer Faces ofrece una gran cantidad de componentes opensource para las funcionalidades que se necesiten. Los componentes Tomahawk de MyFaces y ADFFaces de Oracle son un ejemplo. Además, también existe una gran cantidad de herramientas para el desarrollo IDE en JSF al ser el estándar de JAVA.
  • La tecnología JavaServer Faces proporciona una rica arquitectura para manejar el estado de los componentes, procesar los datos, validar la entrada del usuario, y manejar eventos.
  • Además, ofrece una rápida adaptación para nuevos desarrolladores.
No obstante, el uso de JavaServer Faces también tiene un conjunto de desventajas:

  • Su naturaleza como estándar hace que la evolución de JSF no sea tan rápida como pueda ser la de otros entornos como WebWork, Wicket, Spring , etc.

JSF presenta dos nuevos términos:

  • managed bean (objeto manejado): Un managed bean describe cómo se crea y se maneja un bean. No tiene nada que ver con las funcionalidades del bean.
  • backing bean (objeto de respaldo). El backing bean define las propiedades y la lógica de manejo asociadas con los componentes UI utilizados en la página. Cada propiedad del bean de respaldo está unida a un ejemplar de un componente o a su valor. Un backing bean también define un conjunto de métodos que realizan funciones para el componente, como validar los datos del componente, manejar los eventos que dispara el componente y realizar el procesamiento asociado con la navegación cuando el componente se activa.
Una típica aplicación JSF acopla un backing bean con cada página de la aplicación. Sin embargo, algunas veces en el mundo real de nuestras aplicaciones, forzar una relación uno-a-uno entre el backing bean y la página no es la solución ideal. Puede causar problemas como la duplicación de código. En el escenario real, varias páginas podrían necesitar compartir el mismo backing bean tras bambalinas.

En comparación con la aproximación ActionForm y Action de Struts, el desarrollo con beans de respaldo de JSF sigue unas mejores prácticas de diseño orientado a objetos. Un backing bean no sólo contiene los datos para ver, también el comportamiento relacionado con esos datos. En Struts, Action y ActionForm contienen los datos y la lógica por separado.

Creacion del famoso "Hola mundo" en JSF (Java server Faces)


No hay comentarios:

Publicar un comentario