Caras del servidor de Yakarta - Jakarta Server Faces

Caras del servidor de Yakarta
20110510-jsf-logo.tiff
Autor (es) original (es) Microsistemas solares
Desarrollador (es) Fundación Eclipse
Lanzamiento estable
2.3.2 / 20 de agosto de 2019 ; Hace 22 meses ( 20-08-2019 )
Versión de vista previa
3.0.0 RC1 / 7 de marzo de 2020 ; Hace 15 meses ( 07/03/2020 )
Repositorio Edita esto en Wikidata
Escrito en Java
Tipo Marco de aplicación web
Sitio web jakarta .ee / especificaciones / caras / Edita esto en Wikidata

Jakarta Server Faces ( JSF ; anteriormente JavaServer Faces) es una especificación Java para crear interfaces de usuario basadas en componentes para aplicaciones web y se formalizó como estándar a través del Java Community Process que forma parte de Java Platform, Enterprise Edition . También es un marco web MVC que simplifica la construcción de interfaces de usuario (UI) para aplicaciones basadas en servidor mediante el uso de componentes de UI reutilizables en una página.

JSF 2 usa Facelets como su sistema de plantillas predeterminado. También se pueden emplear otras tecnologías de visualización como XUL o Java simple. Por el contrario, JSF 1.x utiliza JavaServer Pages (JSP) como su sistema de plantillas predeterminado.

Historia

En 2001, el Java Specification Request (JSR) original para la tecnología que finalmente se convirtió en JavaServer Faces propuso desarrollar un paquete con el nombre javax.servlet.ui

Para junio de 2001, JavaWorld informaría sobre el diseño del equipo de Amy Fowler de "JavaServer Faces API" (también conocido como "Moonwalk"), "un marco de aplicación para crear interfaces de usuario basadas en la Web".

Últimos desarrollos

Facelets (que fue diseñado específicamente para Java Server Faces) se adoptó como la tecnología de visualización oficial para JSF 2.0. Esto elimina los conflictos del ciclo de vida que existían con JSP, lo que obliga a los desarrolladores de Java a soluciones alternativas. Facelets permite la creación fácil de componentes / etiquetas utilizando marcado XML en lugar de código Java, la principal queja contra JSF 1.x.

Los nuevos desarrollos de JSF también brindan una amplia accesibilidad a las anotaciones de Java 5 como @ManagedBean, @ManagedPropertyy @FacesComponenteso elimina la necesidad faces-config.xmlen todos los casos, excepto la extensión del marco. La navegación se ha simplificado, eliminando la necesidad de faces-config.xmlcasos de navegación. Las transiciones de página se pueden invocar simplemente pasando el nombre de la Vista / Facelet deseada.

La adición del ahorro de estado parcial y las actualizaciones de DOM son parte del soporte Ajax estandarizado incorporado.

La última versión de JSF tiene soporte incorporado para manejar recursos como imágenes, CSS y Javascript, lo que permite que los artefactos se incluyan con bibliotecas de componentes, se separen en archivos JAR o simplemente se ubiquen en un lugar coherente dentro de la aplicación web. Esto incluye nombres lógicos y control de versiones de recursos.

JSF 2.0 también incluye un número de otros cambios como añadir soporte para eventos, desarrollo separado, estadificación, y los modos de producción, similar a RAILS_ENVen rubí en los carriles , y ampliando significativamente el conjunto estándar de componentes.

Versiones

  • JSF 2.3 (2017-03-28) - Características principales: Expresiones de búsqueda, URL sin extensión, validación de beans para clases completas, comunicación push mediante WebSocket , integración mejorada con CDI.
  • JSF 2.2 (21-05-2013): introdujo nuevos conceptos como vistas sin estado, flujo de páginas y la capacidad de crear contratos de recursos portátiles.
  • JSF 2.1 (22-11-2010): versión de mantenimiento 2 de JSF 2.0. Solo un número muy pequeño de cambios de especificación.
  • JSF 2.0 (2009-07-01): versión principal para facilidad de uso, funcionalidad mejorada y rendimiento. Coincide con Java EE 6.
  • JSF 1.2 (2006-05-11): muchas mejoras en los sistemas centrales y las API. Coincide con Java EE 5. Adopción inicial en Java EE.
  • JSF 1.1 (27 de mayo de 2004): versión de corrección de errores. Sin cambios de especificación.
  • JSF 1.0 (11-03-2004): especificación inicial publicada.

Cómo funciona

Basado en un modelo de diseño de IU basado en componentes , JavaServer Faces usa archivos XML llamados plantillas de vista o vistas de Facelets . El FacesServletproceso solicita, carga la plantilla de vista adecuada, crea un árbol de componentes, procesa eventos y presenta la respuesta (generalmente en el lenguaje HTML) al cliente. El estado de los componentes de la interfaz de usuario y otros objetos de interés de alcance se guarda al final de cada solicitud en un proceso llamado stateSaving (nota: transitorio verdadero ) y se restaura en la próxima creación de esa vista. Tanto el cliente como el servidor pueden salvar objetos y estados.

JSF y Ajax

JSF se utiliza a menudo junto con Ajax , una técnica de desarrollo de aplicaciones de Internet enriquecido . Ajax es una combinación de técnicas y tecnologías de desarrollo web que permiten crear interfaces de usuario enriquecidas. Los componentes de la interfaz de usuario en Mojarra (la implementación de referencia JSF ) y Apache MyFaces se desarrollaron originalmente solo para HTML, y Ajax tuvo que agregarse a través de JavaScript. Sin embargo, esto ha cambiado:

Debido a que JSF admite múltiples formatos de salida, los componentes habilitados para Ajax se pueden agregar fácilmente para enriquecer las interfaces de usuario basadas en JSF. La especificación JSF 2.0 proporciona soporte integrado para Ajax al estandarizar el ciclo de vida de la solicitud Ajax y proporcionar interfaces de desarrollo simples para eventos Ajax, lo que permite que cualquier evento desencadenado por el cliente pase por la validación, conversión y finalmente invocación del método adecuadas, antes de devolver el resultado. al navegador a través de una actualización XML DOM.

JSF 2 incluye soporte para degradación elegante cuando JavaScript está deshabilitado en el navegador.

Componentes y marcos habilitados para Ajax

Las siguientes empresas y proyectos ofrecen bibliotecas de componentes o marcos JSF basados ​​en Ajax:

Criticas

ThoughtWorks, 2014

En su publicación Technology Radar de enero de 2014 , ThoughtWorks escribió:

Seguimos viendo que los equipos tienen problemas al usar JSF (JavaServer Faces) y le recomendamos que evite esta tecnología. Los equipos parecen elegir JSF porque es un estándar JEE sin evaluar realmente si el modelo de programación les conviene. Creemos que JSF tiene fallas porque intenta abstraer HTML , CSS y HTTP , exactamente lo contrario de lo que hacen los marcos web modernos . JSF, como los formularios web ASP.NET, intenta crear estado sobre el protocolo HTTP sin estado y termina causando una gran cantidad de problemas relacionados con el estado compartido del lado del servidor. Somos conscientes de las mejoras en JSF 2.0, pero creemos que el modelo está fundamentalmente roto. Recomendamos a los equipos que utilicen marcos simples y que adopten y comprendan las tecnologías web, como HTTP, HTML y CSS.

Refutación

En febrero de 2014, Çağatay Çivici (líder de PrimeFaces) respondió a las críticas de ThoughtWorks en una publicación titulada JSF ya no es lo que te han dicho . Çivici sostiene que las mejoras en JSF a lo largo de los años ofrecen muchas características que abarcan el desarrollo web moderno, brindando la opción de escribir su propio JavaScript, HTML y CSS. También con respecto al estado, Çağatay escribió:

JSF es un marco con estado por naturaleza y el estado hace que las aplicaciones web sean fáciles de desarrollar. Con las técnicas mejoradas de gestión de estado introducidas en JSF 2.0+ (por ejemplo, modo sin estado, ahorro de estado parcial), JSF también puede escalar.

DZone, 2014

En el artículo publicado en noviembre de 2014 en el sitio web de DZone, titulado "Por qué debería evitar JSF", Jens Schauder escribió:

Facelets, la tecnología de presentación preferida de JSF se ve a primera vista como una tecnología de plantillas ordinaria como la buena JSP o Thymeleaf. Pero si miras más de cerca, el horror se vuelve obvio. En el mismo lugar donde estructura su HTML, también coloca la lógica de qué partes de la interfaz de usuario deben actualizarse en una acción. Una clara violación del principio de separación de preocupaciones en mi libro. ¡Aún mejor es el atributo inmediato que cambia el ciclo de vida del lado del servidor! Y si esto no es suficiente, lo hace de diferentes maneras dependiendo de la etiqueta en la que lo use. No puedes inventar cosas como esta.

TheServerSide, 2016

En febrero de 2016, el sitio web de la comunidad empresarial Java TheServerSide publicó un artículo en el que recomendaba no utilizar JSF, cuyo uso podría comprometer la calidad del producto final. El artículo se basaba en cinco razones:

  1. Las tareas simples se vuelven difíciles;
  2. JSF carece de flexibilidad;
  3. La curva de aprendizaje es empinada;
  4. Incompatibilidad con tecnologías estándar de Java; y
  5. Soporte primitivo de Ajax.

Referencias

enlaces externos