JSF

JavaServer Faces (JSF)

¿Qué és JSF?
JavaServer Faces (JSF) es un framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas, pero también se puede acomodar a otras tecnologías como XUL.[1].
Acerca de JSF, deben tenerse en cuenta dos consideraciones importantes:
· Se trata de una tecnología que ejecuta del lado del servidor y no del lado del cliente.
· La interfaz de usuario es tratada como un conjunto de componentes UI. Este es un concepto fundamental para la comprensión de la tecnología JSF.
JSF incluye:
· Un conjunto de APIs para representar componentes de una interfaz de usuario y administrar su estado, manejar eventos, validar entrada, definir un esquema de navegación de las páginas y dar soporte para internacionalización y accesibilidad.
· Un conjunto por defecto de componentes para la interfaz de usuario.
· Dos librerías de etiquetas personalizadas para JavaServer Pages que permiten expresar una interfaz JavaServer Faces dentro de una página JSP.
· Un modelo de eventos en el lado del servidor.
· Administración de estados.
· Beans administrados.
¿Cuáles son los objetivos de JSF ?
Estos objetivos de diseño representan el foco de desarrollo de JSF:
  1. 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.
  1. 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.
  1. 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.
  1. Definir APIs para la validación de entrada, incluyendo suporte para la validación en el lado del cliente.
  1. Especificar un modelo para la internacionalización y localización de la interfaz de usuario.
  1. 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.
Los elementos que se incluyen en una aplicación de JSF son los siguientes:
· Un conjunto de páginas JSP.
· Un conjunto de beans. Estos beans definen propiedades y funciones para los componentes UI de una página.
· Un archivo de configuración de los recursos de la aplicación.
· Un descriptor de despliegue.
· Un conjunto de objetos personalizados, desarrollados por el programador (validadores, conversores, etc.).
· Un conjunto de custom tags que permiten trabajar con los objetos personalizados.





JSF, características principales, ventajas y puntos a destacar

(Only in Spanish, sorry for English speakers).
JSF es un marco de trabajo para crear aplicaciones Java J2EE basadas en el patron MVC de tipo 1 (donde las vistas conocen la acción que se va a invocar en su peticion, y normalmente la función esta cableada dentro de la vista).
En este artículo se explican a modo de resumen las características principales, sus ventajas y los puntos a destacar desde un enfoque técnico.
JSF tiene como característas principales:
  • Utiliza páginas JSP para generar las vistas, añadiendo una biblioteca de etiquetas propia para crear los elementos de los formularios HTML.
  • Asocia a cada vista con formularios un conjunto de objetos java manejados por el controlador (managed beans) que facilitan la recogida, mapipulación y visualización de los valores nostrados en los diferentes elementos de los formularios.
  • Introduce una serie de etapas en el procesamiento de la petición, como por ejemplo la de validación, reconstrucción de la vista, recuperación de los valores de los elementos, etc.
  • Utiliza un sencillo fichero de configuración para el controlador en formato xml
  • Es extensible, pudiendo crearse nuevos elementos de la interfaz o modificar los ya existentes.
  • Y lo que es más importante: forma parte del estándar J2EE. En efecto, hay muchas alternativas para crear la capa de presentación y control de una aplicación web java, como Struts y otros frameworks, pero solo JSP forma parte del estándar.
JSF nos permite desarrollar rápidamente aplicaciones de negocio dinámicas en las que toda la lógica de negocio se implementa en java, o es llamada desde java, creando páginas para las vistas muy sencillas (salvo que introduzcamos mucha maquetación HTML o Javascript)
JSF nos ofrece una serie de ventajas:
  • El código JSF con el que creamos las vistas (etiquetas jsp) es muy parecido al HTML estándar. Lo pueden utilizar fácilmente desarrolladores y diseñadores web.
  • JSF se integra dentro de la página JSP y se encarga de la recogida y generación de los valores de los elementos de la página
  • JSF resuelve validaciones, conversiones, mensajes de error e internacionalización (i18n)
  • JSF permite introducir javascript en la página, para acelerar la respuesta de la interfaz en el cliente (navegador del usuario).
  • JSF es extensible, por lo que se pueden desarrollar nuevos componentes a medida, También se puede modificar el comportamiento del framework mediante APIs que controlan su funcionamiento.
Desde el punto de vista técnico podemos destacar los siguientes:
  • JSF forma parte del estándar J2EE, mientras que otras tecnologías para creación de vistas de las aplicaciones no lo forman, como por ejemplo Struts.
  • JSF dispone de varias implementaciones diferentes, incluyendo un conjunto de etiquetas y APIs estándar que forman el núcleo del framework. Entre estas implementaciones cabe destacar la implementación de referencia de Sun Microsystems, actualmente desarrollada como un proyecto open source, y la implementación del proyecto Apache, MyFaces, dotada de un conjunto de extensiones que la hacen muy interesante para el desarrollo de aplicaciones corporativas.
  • El desarrollo de JSF está realmente empezando. Las nuevas versiones del framework recogen la funcionalidad de versiones anteriores siendo su compatibilidad muy alta, de manera que el mantenimiento de aplicaciones no se ve penalizado por el cambio de versiones.


Que es la API de JSF



JSF (JavaServer Faces) es una infraestructura de interfaz de usuario o interfaz de programación de aplicaciones (API), que facilita el desarrollo de aplicaciones web Java™.
WebSphere Application Server da soporte a JavaServer Faces 2.2 a nivel de tiempo de ejecución. Utilice el tiempo de ejecución de JSF para las funciones siguientes:
  • Construir fácilmente una interfaz de usuario a partir de un conjunto de componentes de interfaz de usuario reutilizables.
  • Simplificar la migración de datos de aplicación a o desde la interfaz de usuario.
  • Ayudar a gestionar el estado de la interfaz de usuario durante las solicitudes de servidor
  • Proporcionar un modelo sencillo para enviar sucesos generados por el cliente al código de aplicación del lado del servidor.
  • Dar soporte a componentes de la interfaz de usuario personalizados para su compilación y reutilización.
La implementación de Apache MyFaces se incluye con WebSphere Application Server y proporciona la base del código utilizado para el JSF.
La versión del tiempo de ejecución de JSF que se incluye con el producto reside en la ubicación de la biblioteca de tiempo de ejecución normal y está disponible para todas las aplicaciones web que utilizan la API de JSF. La carga del servlet JSF funciona como si tiempo de ejecución se empaquetara con la aplicación web. La versión empaquetada incluye mejoras para una mejor integración con la exploración de anotaciones incorporada y otros componentes de ejecución de WebSphere Application Server.
Las clases relacionadas con la especificación javax.faces.* para JSF y la versión modificada de IBM® de la implementación JSF de Apache MyFaces se empaquetan en el tiempo de ejecución.
Generalmente, las aplicaciones Web que utilizan esta API/infraestructura incorporan la API de JSF y los archivos JAR (Java archive) de implementación en el archivo WAR (Web archive). Esto no es necesario cuando estas aplicaciones web se despliegan y ejecutan en WebSphere Application Server. Sólo es necesaria la eliminación de estos JAR junto con los archivos JAR JSTL del archivo WAR. Sin embargo, dado que JavaServer Faces 2.2 forma parte de la plataforma Java Platform, Enterprise Edition (Java EE), una aplicación web no empaqueta una implementación de JavaServer Faces cuando se ejecuta en un contenedor web compatible con la tecnología Java EE. Si se empaqueta una implementación JavaServer Faces con una aplicación web, se pasará por alto, ya que siempre tiene preferencia la implementación JavaServer Faces proporcionada por la plataforma.
El tiempo de ejecución JSF para WebSphere Application Server no tiene soporte para el uso de un único cargador de clases para toda la aplicación porque la inicialización de FacesConfig requiere un único cargador de clases para cada módulo JSF durante la inicialización. Este soporte no está disponible cuando la aplicación contiene varios módulos web y uno de esos módulos es un módulo JSF. Por consiguiente, debe utilizar varios cargadores de clases cuando la aplicación contiene varios módulos web y al menos un módulo JSF.
Para utilizar diferentes implementaciones de JSF, el motor JSF de WebSphere Application Server determina si se utiliza la RI de SUN o Apache MyFaces del tiempo de ejecución del servidor de aplicaciones. Una vez que el motor JSF determina la implementación que debe utilizarse, la clase de escucha adecuada se registrará con el contenedor web. No es necesario añadir com.sun.faces.ConfigureListener o org.apache.myfaces.StartupConfigureListener al archivo web.xml.
Si utiliza una implementación JSF de otro proveedor que no se incluye con el producto, deje la configuración establecida en MyFaces, añada el escucha de otro proveedor al archivo web.xmlnecesario y añada los archivos JAR de la implementación del otro proveedor al módulo web como una biblioteca compartida aislada. Al utilizar una biblioteca compartida aislada, la versión de la aplicación web de las clases JSF o JSTL se carga antes que el servidor de aplicaciones.



Diferencias entre JSP, JSF y SPRING


JSP:
  • Era el framework para la generación de páginas web anterior a que se definiera JSF.
  • Se basa en generar un fichero .jsp que es "traducido" a una clase Servlet que a su vez es compilada y ejecutada.
  • Hay dos versiones: con scriptlets (<% %>) que se considera obsoleta, o con la Java Standard Template Library (JSTL). La última implementa el MVC, mientras que con la primera normalmente todo el código va en el propio JSP.
JSF:
  • Es un framework para la generación de páginas web dentro de una aplicación web. Sigue la filosofía MVC.
  • Tiene dos "modos": usando JSP o Facelets. Inicialmente se usaban JSPs, pero a partir de la versión 1.2 por defecto se usan Facelets (componentes XML). Normalmente se confunde "JSF" por "Facelets" (si buscas "componentes JSF" encontrarás librerías de Facelets).
  • Estandariza cuestiones como navegación entre páginas y la internacionalización de recursos que en JSP simplemente no estaban definidas.
Spring:
  • Es un stack alternativo a Java EE. Como tal, proporciona una serie de servicios similares a los del stack (por ejemplo autenticación y seguridad, ORM/acceso a datasources, etc.).
  • No reemplaza completamente el stack; por ejemplo es muy común integrar una capa web JSP o JSF con una base Spring, o usar componentes del stack (como la API de Validation) dentro de Spring o viceversa (usar Hibernate en vez de JPA dentro de una aplicación Java EE).

JSF
  • Es un sistema que facilita el desarrollo de la interfaz de usuario en páginas web.
  • Dispone de varias características de base, por ejemplo dos librerías de etiquetas <xml>.
  • Es un framework.
  • Soporta conversión a validatorajax etc...
  • Puedes integrar JSF con ricas librerías para diferentes interfaces de usuario.
JSP
  • Es un lenguaje basado totalmente en Java para hacer páginas web dinámicas.
  • Tiene que ser compilado en Java bytecode.
  • No es un framework.
Si como has dicho estás empezando te recomiendo usar JSF dado que es mas sencillo de manejar, pero si vas a hacer páginas mas complejas yo tiraria por JSP

No hay comentarios.:

Publicar un comentario

SCRUM

Qué es SCRUM Scrum es un proceso en el que se aplican de manera regular  un conjunto de buenas prácticas  para  trabajar colaborativ...