Ficha de JSF2

RECU-0102 (Recurso Ficha Técnica)

Descripción

Estos objetivos de diseño representan el foco de desarrollo de JSF:

  • Definir un conjunto simple de clases base de Java para componentes de la interfaz de usuario, estado de los componentes y eventos de entrada. Estas clases tratarán los aspectos del ciclo de vida de la interfaz de usuario, controlando el estado de un componente durante el ciclo de vida de su página.
  • Proporcionar un conjunto de componentes para la interfaz de usuario, incluyendo los elementos estándares de HTML para representar un formulario. Estos componentes se obtendrán de un conjunto básico de clases base que se pueden utilizar para definir componentes nuevos.
  • Proporcionar un modelo de JavaBeans para enviar eventos desde los controles de la interfaz de usuario del lado del cliente a la aplicación del servidor.
  • Definir APIs para la validación de entrada, incluyendo soporte para la validación en el lado del cliente.
  • Especificar un modelo para la internacionalización y localización de la interfaz de usuario.

Automatizar la generación de salidas apropiadas para el objetivo del cliente, teniendo en cuenta todos los datos de configuración disponibles del cliente, como versión del navegador...

En su mayoría, las aplicaciones JavaServer Faces son como cualquier otra aplicación Web Java. Se ejecutan en un contenedor Servlet Java, y típicamente contienen:

  • Componentes JavaBeans (llamados objetos del modelo en tecnología JavaServer Faces) conteniendo datos y funcionalidades específicas de la aplicación.
  • Oyentes de Eventos.
  • Páginas, cómo páginas JSP.
  • Clases de utilidad del lado del servidor, como beans para acceder a las bases de datos.

Además de estos ítems, una aplicación JavaServer Faces también tiene:

  • Una librería de etiquetas personalizadas para dibujar componentes UI en una página.
  • Una librería de etiquetas personalizadas para representar manejadores de eventos, validadores, y otras acciones.
  • Componentes UI representados como objetos con estado en el servidor.
  • Validadores, manejadores de eventos y manejadores de navegación.

La especificación de JSF fue desarrollada por la Java Community Process. Versiones de JSF:

  • JSF 1.0 (11032004) lanzamiento inicial de las especificaciones de JSF.
  • JSF 1.1 (27052004) lanzamiento que solucionaba errores. Sin cambios en las especificaciones ni en el renderkit de HTML.
  • JSF 1.2 (11052006) lanzamiento con mejoras y corrección de errores.
  • JSF 2.0 (12082009) último lanzamiento.

Ventajas e inconvenientes

La especificación JSR-314,mejora el desarrollo de aplicaciones con JSF. Ha nacido de la experiencia e incorpora necesidades básicas detectadas durante las implementaciones de JSF 1.x. Las principales ventajas a destacar:

  • Permite la configuración mediante anotaciones, lo que permite reducir la complejidad y el tamaño de los archivos faces-config de configuración.
  • Modifica la forma de almacenar el estado de los componentes. Tomando como referencia el almacenado parcial de Apache Trinidad, propone una solución al almacenamiento de estado de los componentes basándolo en el almacenamiento de las modificaciones producidas del estado considerado como inicial.
  • Se ha modificado el modelo de navegación, incluyendo la navegación condicional (basando el modelo en condiciones) o la implícita, cada componente se dirige a una página delimitada por un atributo sin incluirla en el archivo de configuración
  • Se ha incluido la especificación BeanValidator, que permite realizar validaciones a nivel de bean, incluyendo las validaciones vacías.
  • Mejora la carga de recursos (imagenes, bibliotecas, etc..)
  • Se integra Ajax para el funcionamiento de los componentes de JSF.

Pero también presenta ciertas desventajas

  • Existen limitaciones al uso de h: outputText con Ajax
  • Tecnología muy nueva (> menos fuentes para aprendizaje autodidacto, depuración), solo JSF 2.0
  • Todavía puede ser difícil de depurar en el cliente (esto es porque el código de cliente se representa desde el cliente, y usted tiene poco o ningún control sobre este)

Requisitos e incompatibilidades

Las principales características que presentan a nivel de servidor de aplicaciones, librerías e implementaciones necesarias para el correcto funcionamiento de JSF 2.0 es la siguiente:

  • jsf-api.jar
  • jsf-impl.jar
  • jstl.jar
  • standard.jar
  • commons-beanutils.jar
  • commons-digester.jar
  • commons-collections.jar
  • commons-logging.jar

Interacciones

JSF es una especificación y por definición no debería de presentar ninguna incompatibilidad con otros sistemas. Sin embargo esto no es tan real, por ejemplo no es compatible con el uso de Jboss 3. Habría que estudiar cada uno de estos desarrollos para saber cuáles son las incompatibilidades que cada uno hace constar. Aun así, hay una gran variedad de implantaciones que dan cobertura a para las necesidades de cada uno. Existen implementaciones de Jakarta, de Sun , de Oracle, o incluso el de IBM.

Características de la especificación

  • Todo desarrollo de esta especificación ya no tiene tiene que soportar JSP como tecnología de vista. Hay otros proyectos de código abierto que proporcionan la posibilidad de escribir la capa cliente sin usar JSP, como son Facelets y Clay. Concretamente, Facelets es la opción recomendable
  • El hecho de que JSP sea una tecnología opcional, hace que podamos seguir desarrollando con las etiquetas JSP con las que estemos más acostumbrados, como pueda ser JSTL.
  • Puede coexistir con Struts en una misma aplicación web. Esto lo hace especialmente importante para las aplicaciones ya escritas en Struts que quieran ir migrando poco a poco a JSF. Se puede cambiar unas pocas páginas y ver los cambios de manera paulatina. Haciendo, por lo tanto, muy suave la transición.
  • J2SE 5.0 o mayor.
  • Java Servlet 2.5
  • JavaServer Pages 2.1
  • JavaServer Pages Standard Tag Library 1.2
  • Jetty 6.x.
  • Tomcat 6.x
  • JBoss AS 5.2
  • JBoss AS 6.x
  • RichFaces 4.0 (aun por salir)
  • IceFaces 2.0 (aun versión alfa)
  • Glassfish V3