Articulo de referencia

Yakarta se enfrenta a

Jakarta Faces , anteriormente Jakarta Server Faces y JavaServer Faces ( JSF ), es una especificación de Java para la creación de interfaces de usuario basadas en componentes par...

Jakarta Faces , anteriormente Jakarta Server Faces y JavaServer Faces ( JSF ), es una especificación de Java para la creación de interfaces de usuario basadas en componentes para aplicaciones web . [ 2 ] Se formalizó como estándar a través del Java Community Process como parte de la Java Platform, Enterprise Edition . Es un framework 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. [ 3 ]

JSF 2.x utiliza Facelets como su sistema de plantillas predeterminado. Los usuarios del software también pueden utilizar XUL o Java . [ 4 ] JSF 1.x utiliza JavaServer Pages (JSP) como su sistema de plantillas predeterminado.

Historia

En 2001, la solicitud de especificación de Java (JSR) original para la tecnología que finalmente se convirtió en JavaServer Faces propuso desarrollar un paquete con el nombre javax.servlet.ui[ 5 ].

En junio de 2001, JavaWorld informó sobre el diseño del equipo de Amy Fowler de "la API JavaServer Faces" (también conocida como "Moonwalk") como "un marco de aplicación para crear interfaces de usuario basadas en la web". [ 6 ]

Desarrollos

Facelets (que fue diseñado específicamente para Java Server Faces) fue adoptado como la tecnología de vista oficial para JSF 2.0. Esto elimina los conflictos de ciclo de vida que existían con JSP, que obligaban a los desarrolladores de Java a buscar soluciones alternativas. [ 7 ]

Las nuevas funcionalidades de JSF también ofrecen un amplio acceso a anotaciones Java, como @ManagedBean`<script>`, @ManagedPropertylo @FacesComponentque elimina la necesidad de usar `<script> faces-config.xml,` en todos los casos, excepto en las extensiones del framework. La navegación también se simplifica, eliminando la necesidad de faces-config.xmlusar `<script>`. Las transiciones de página se pueden invocar simplemente pasando el nombre de la Vista o Facelet deseada.

La incorporación del guardado parcial del estado y las actualizaciones del modelo de objetos del documento (DOM) forman parte de la compatibilidad estandarizada integrada con AJAX .

La última versión de JSF incluye soporte integrado para gestionar recursos como imágenes, CSS y JavaScript, lo que permite incluir estos elementos en bibliotecas de componentes, separarlos en archivos JAR o simplemente ubicarlos en un lugar fijo dentro de la aplicación web. Esto incluye la nomenclatura lógica y el control de versiones de los recursos.

JSF 2.0 también incluye otros cambios, como la adición de soporte para eventos, modos de desarrollo, preproducción y producción separados, similares a los RAILS_ENVde Ruby on Rails , y una expansión significativa del conjunto estándar de componentes.

Historial de actualizaciones

  • JSF 4.1 [ 8 ] (2025-07-01) – Jakarta EE 11 – Actualización alineada: elimina las referencias restantes de SecurityManager, mejora la alineación de CDI, moderniza las API con genéricos faltantes, agrega UUIDConverter y soporte para inyección de flujo, mejora los eventos del ciclo de vida para ámbitos integrados e incluye múltiples aclaraciones de especificaciones y pequeñas mejoras funcionales.
  • JSF 4.0 (15/05/2022) Principales características: Se eliminaron algunas cosas obsoletas (beans administrados nativos, referencias EL nativas), no hay vista extendida por defecto, se agregó ClientWindowScoped
  • JSF 3.0.0 (28/10/2020) El nombre del paquete cambió de Javax a Jakarta.
  • JSF 2.3 (10/09/2019) : Primera versión de la API de Jakarta Server Pages para Jakarta EE. Ni la API ni el comportamiento han cambiado.
  • JSF 2.3 (28-03-2017) – 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. [ 9 ]
  • JSF 2.2 (21/05/2013) – Introdujo nuevos conceptos como vistas sin estado, flujo de página y la capacidad de crear contratos de recursos portátiles. [ 10 ]
  • JSF 2.1 (22/11/2010) – Versión de mantenimiento 2 de JSF 2.0. Solo un número muy reducido de cambios en las especificaciones. [ 11 ] [ 12 ]
  • JSF 2.0 (01/07/2009) – Versión principal para facilitar su uso, mejorar la funcionalidad y el rendimiento. Coincide con Java EE 6.
  • JSF 1.2 (11/05/2006): Numerosas mejoras en los sistemas centrales y las API. Coincide con Java EE 5. Adopción inicial en Java EE.
  • JSF 1.1 (27/05/2004) – Versión con corrección de errores. Sin cambios en las especificaciones.
  • JSF 1.0 (11/03/2004) – Se publica la especificación inicial.

Cómo funciona

Basado en un modelo de diseño de interfaz de usuario orientado a componentes , JavaServer Faces utiliza archivos XML denominados plantillas de vista o vistas FaceletsFacesServlet . El sistema procesa las solicitudes, carga la plantilla de vista correspondiente, construye un árbol de componentes, procesa los eventos y renderiza la respuesta (normalmente en HTML) para el cliente. El estado de los componentes de la interfaz de usuario y otros objetos de interés se guarda al final de cada solicitud mediante un proceso llamado stateSaving (nota: transient true ) y se restaura al crearse nuevamente esa vista. Tanto el cliente como el servidor pueden guardar objetos y estados.

JSF y AJAX

JSF se usa frecuentemente junto con AJAX , una técnica de desarrollo de aplicaciones web enriquecidas . AJAX es una combinación de técnicas y tecnologías de desarrollo web que permite crear interfaces de usuario enriquecidas. Los componentes de la interfaz de usuario en Mojarra (la implementación de referencia de JSF [ 14 ] ) y Apache MyFaces se desarrollaron originalmente solo para HTML, y AJAX tuvo que agregarse mediante JavaScript. Sin embargo, esto ha cambiado:

Dado que JSF admite múltiples formatos de salida, se pueden agregar fácilmente componentes compatibles con AJAX para mejorar las interfaces de usuario creadas con JSF. La especificación JSF 2.0 ofrece soporte integrado para AJAX al estandarizar el ciclo de vida de las solicitudes AJAX y proporcionar interfaces de desarrollo sencillas para los eventos AJAX. La especificación permite que un evento activado por el cliente pase por validación, conversión e invocación de métodos, antes de devolver el resultado al navegador mediante una actualización del DOM XML.

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

Componentes y marcos de trabajo habilitados para AJAX

Las siguientes empresas y proyectos ofrecen frameworks o bibliotecas de componentes JSF basados ​​en AJAX:

Críticas

ThoughtWorks, 2014

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

Seguimos observando que los equipos tienen problemas al usar JSF (JavaServer Faces) y recomendamos evitar esta tecnología. Los equipos parecen elegir JSF porque es un estándar JEE sin evaluar realmente si el modelo de programación se ajusta a sus necesidades. Creemos que JSF tiene fallos porque intenta abstraer HTML , CSS y HTTP , justo lo contrario de lo que hacen los frameworks web modernos . JSF, al igual que ASP.NET Web Forms, intenta crear un estado sobre el protocolo HTTP, que no tiene estado, y termina causando una serie de problemas relacionados con el estado compartido 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 frameworks sencillos y que adopten y comprendan las tecnologías web, incluyendo 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 argumenta que las mejoras en JSF a lo largo de los años ofrecen muchas características que adoptan el desarrollo web moderno, brindando la opción de escribir tu propio JavaScript, HTML y CSS. También con respecto al estado, Çivici escribió: [ 16 ]

JSF es un framework con estado por naturaleza, y el estado facilita el desarrollo de aplicaciones web. Gracias a las técnicas mejoradas de gestión de estado introducidas en JSF 2.0 y versiones posteriores (por ejemplo, el modo sin estado y el guardado parcial del estado), 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ó: [ 17 ]

Facelets, la tecnología de presentación preferida de JSF, parece a primera vista una tecnología de plantillas común y corriente, como el clásico JSP o Thymeleaf. Pero si se observa con más detenimiento, el horror se hace evidente. En el mismo lugar donde se estructura el HTML, también se coloca la lógica que determina qué partes de la interfaz de usuario deben actualizarse ante una acción. Una clara violación del principio de separación de responsabilidades, en mi opinión. Y lo que es aún peor, ¡el atributo `immediate` cambia el ciclo de vida del servidor! Y por si fuera poco, lo hace de diferentes maneras según la etiqueta en la que se utilice. Es increíble.

TheServerSide, 2016

En febrero de 2016, el sitio web de la comunidad Java empresarial TheServerSide publicó un artículo que desaconsejaba el uso de JSF, ya que su uso podría comprometer la calidad del producto final. El artículo explicaba cinco razones: [ 18 ]

  1. Las tareas sencillas se vuelven difíciles;
  2. JSF carece de flexibilidad;
  3. La curva de aprendizaje es pronunciada;
  4. Incompatibilidad con las tecnologías Java estándar; y
  5. Soporte AJAX básico.

Referencias

  1. "Versión 4.1.0" . 5 de junio de 2024. Consultado el 5 de junio de 2024 .
  2. Yakarta Faces 4.0
  3. "Tutorial de JSF 2.0" . mkyong. 12/12/2010 . Consultado el 28/04/2017 . JavaServer Faces (JSF) 2.0 es un framework web MVC que se centra en simplificar la creación de interfaces de usuario (incluye más de 100 etiquetas UI listas) para aplicaciones web Java y facilita la implementación de componentes UI reutilizables.
  4. NoVDL: Escribe tus vistas JSF en Java puro
  5. "JSR 127: JavaServer Faces" . Proceso de la comunidad Java . Oracle Corporation. 2014. Consultado el 5 de agosto de 2014. 2.6 ¿Existe un nombre de paquete propuesto para la especificación de la API? (es decir, javapi.algo, org.algo, etc.) [:] javax.servlet.ui
  6. Armstrong, Eric (6 de junio de 2001). "Servicios web Java: ¿Qué tiene de malo?" . JavaWorld . Recuperado el 27 de julio de 2020. La API JavaServer Faces (también conocida como Moonwalk) promete ofrecer una solución elegante para implementar funcionalidad interactiva en navegadores incompatibles. [...] Diseñada por un equipo liderado por Amy Fowler, arquitecta de AWT y Swing de Sun, la API JavaServer Faces proporcionará una colección de herramientas GUI que se ejecutarán en navegadores comunes utilizando HTML estándar.
  7. Bergsten, Hans. "Mejorando JSF al desechar JSP" . O'Reilly . Consultado el 18 de agosto de 2011 .
  8. "Lanzamiento de Jakarta EE 11 | Java EE 11 | Descargar productos compatibles y especificaciones | The Eclipse Foundation | Jakarta EE | The Eclipse Foundation" . Jakarta® EE: El nuevo hogar de Java nativo en la nube . Consultado el 26 de enero de 2026 .
  9. Tijms, Arjan. "¿Qué hay de nuevo en JSF 2.3?" . Reflexiones de un desarrollador de Java EE . Consultado el 27 de julio de 2020 .
  10. JSF 2.2 (JSR-344) es la versión final |techscotting a través de las noticias de Java. Archivado el 27 de julio de 2020 en Wayback Machine . Blog.oio.de. Consultado el 27 de julio de 2020.
  11. JSR 314 JavaServer Faces 2.1 JSF 2.1 |techscouting a través de las noticias de Java. Archivado el 27/07/2020 en Wayback Machine . Blog.oio.de. Consultado el 27/07/2020.
  12. ^ Bosch, Andy (29 de noviembre de 2010). "Was ist neu en JSF 2.1" (en alemán). it-republik.de . Consultado el 19 de febrero de 2013 .
  13. "Versión 4.1.10" . 14 de julio de 2026. Consultado el 15 de julio de 2026 .
  14. Lubke, Ryan (5 de diciembre de 2007). "Proyecto Mojarra: la JSF RI recibe un nombre en clave" . Blog de Ryan Lubke . Sun Microsystems . Oracle Corporation . Archivado del original el 7 de abril de 2017.
  15. "Radar Tecnológico" (PDF) . ThoughtWorks. Enero de 2014. pág. 12. Archivado del original (PDF) el 7 de abril de 2016. Consultado el 30 de enero de 2014 . 
  16. "JSF ya no es lo que te han contado" . PrimeFaces . 12 de febrero de 2014. Archivado del original el 10 de septiembre de 2017. Consultado el 24 de noviembre de 2020 .
  17. Jens Schauder (noviembre de 2014). "Por qué deberías evitar JSF" . DZone.
  18. McKenzie, Cameron (16 de febrero de 2016). "Cinco inconvenientes de elegir JSF como framework para aplicaciones web" . TheServerSide . Consultado el 22 de diciembre de 2020 .
  • Sitio web oficialEdita esto en Wikidata