stringtranslate.com

Caras de Yakarta

Jakarta Faces , anteriormente Jakarta Server Faces y JavaServer Faces ( JSF ), es una especificación de Java para crear 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 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. [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 informaría sobre el diseño del equipo de Amy Fowler de "JavaServer Faces API" (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 visualización oficial para JSF 2.0. Esto elimina los conflictos de ciclo de vida que existían con JSP, lo que obliga a los desarrolladores de Java a buscar soluciones alternativas. [7]

Los nuevos desarrollos de JSF también brindan una amplia accesibilidad a las anotaciones de Java como @ManagedBean, @ManagedPropertyy @FacesComponenteso elimina la necesidad de faces-config.xml,en todos los casos, excepto en la extensión del marco. La navegación también se simplifica, 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 o Facelet deseado.

La incorporación de actualizaciones de guardado de estado parcial y modelo de objetos de documento (DOM) son parte del soporte AJAX estandarizado incorporado .

La última versión de JSF tiene compatibilidad integrada para manejar recursos como imágenes, CSS y Javascript, lo que permite incluir artefactos con bibliotecas de componentes, separarlos en archivos JAR o simplemente ubicarlos en un lugar coherente dentro de la aplicación web. Esto incluye la denominación lógica y el control de versiones de los recursos.

JSF 2.0 también incluye una serie de otros cambios, como agregar soporte para eventos, modos de desarrollo, preparación y producción separados, similares a RAILS_ENVRuby on Rails , y expandir significativamente el conjunto estándar de componentes.

Historial de actualizaciones

Cómo funciona

Basado en un modelo de diseño de interfaz de usuario basado en componentes , JavaServer Faces utiliza archivos XML denominados plantillas de vista o vistas FaceletsFacesServlet . Procesa las solicitudes, carga la plantilla de vista adecuada, crea un árbol de componentes, procesa los eventos y presenta la respuesta (normalmente en lenguaje HTML) al cliente. El estado de los componentes de la interfaz de usuario y otros objetos de interés se guarda al final de cada solicitud en un proceso denominado stateSaving (nota: transient true ) y se restaura en la próxima creación de esa vista. Tanto el cliente como el servidor pueden guardar objetos y estados.

JSF y AJAX

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

Debido a que JSF admite múltiples formatos de salida, se pueden agregar fácilmente componentes habilitados para AJAX para mejorar las interfaces de usuario creadas con JSF. La especificación JSF 2.0 proporciona compatibilidad integrada con AJAX al estandarizar el ciclo de vida de las solicitudes AJAX y proporcionar interfaces de desarrollo simples para los eventos AJAX. La especificación permite que un evento activado por el cliente pase por una validación, conversión e invocación de método, antes de devolver el resultado al navegador a través de una actualización de 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:

Críticas

Pensamiento Works, 2014

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

Seguimos viendo 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 les conviene. Creemos que JSF tiene fallas porque intenta abstraer HTML , CSS y HTTP , exactamente lo contrario de lo que hacen los frameworks web modernos . JSF, al igual que los formularios web ASP.NET, intenta crear estado sobre el protocolo sin estado HTTP y termina causando una gran cantidad de problemas que involucran 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 que los equipos usen frameworks simples y adopten y comprendan las tecnologías web, incluyendo HTTP, HTML y CSS.

Refutación

En febrero de 2014, Çağatay Çivici (director 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 tu propio JavaScript, HTML y CSS. También con respecto al estado, Çivici escribió: [14]

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

Zona D, 2014

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

Facelets, la tecnología de presentación preferida de JSF, parece a primera vista una tecnología de plantillas común y corriente como la buena y vieja JSP o Thymeleaf. Pero si miras más de cerca, el horror se hace evidente. En el mismo lugar donde estructuras tu HTML, también colocas 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 intereses 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 según la etiqueta en la que lo uses. No puedes inventarte cosas como esta.

El lado del servidor, 2016

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

  1. Las tareas simples 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 primitivo.

Referencias

  1. ^ "Versión 4.1.0". 5 de junio de 2024 . Consultado el 5 de junio de 2024 .
  2. ^ Caras de Yakarta 4.0
  3. ^ "Tutorial de JSF 2.0". mkyong. 12 de diciembre de 2010. Consultado el 28 de abril de 2017. JavaServer Faces (JSF) 2.0 es un marco web MVC que se centra en simplificar la creación de interfaces de usuario (viene con más de 100 etiquetas de interfaz de usuario listas para usar) para aplicaciones web Java y hace que los componentes de interfaz de usuario reutilizables sean fáciles de implementar.
  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 API? (es decir, javapi.something, org.something, etc.) [:] javax.servlet.ui
  6. ^ Armstrong, Eric (6 de junio de 2001). "Java Web services: What's to not like?". JavaWorld . Consultado el 27 de julio de 2020 . La API JavaServer Faces (también conocida como Moonwalk) promete proporcionar una solución elegante para implementar funcionalidad interactiva en navegadores incompatibles. [...] Diseñada por un equipo dirigido 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. "Mejora de JSF mediante la eliminación de JSP". O'Reilly . Consultado el 18 de agosto de 2011 .
  8. ^ Tijms, Arjan. "¿Qué novedades hay en JSF 2.3?". Reflexiones de un desarrollador de Java EE . Consultado el 27 de julio de 2020 .
  9. ^ JSF 2.2 (JSR-344) es la versión final |techscouting a través de las novedades de Java Archivado el 27 de julio de 2020 en Wayback Machine . Blog.oio.de. Consultado el 27 de julio de 2020.
  10. ^ JSR 314 JavaServer Faces 2.1 JSF 2.1 |techscouting a través de las novedades de Java Archivado el 27 de julio de 2020 en Wayback Machine . Blog.oio.de. Consultado el 27 de julio de 2020.
  11. ^ 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 .
  12. ^ Lubke, Ryan (5 de diciembre de 2007). "Proyecto Mojarra: el JSF RI recibe un nombre en código". Blog de Ryan Lubke . Sun Microsystems . Oracle Corporation . Archivado desde el original el 7 de abril de 2017.
  13. ^ "Radar tecnológico" (PDF) . ThoughtWorks. Enero de 2014. p. 12. Archivado desde el original (PDF) el 7 de abril de 2016. Consultado el 30 de enero de 2014 .
  14. ^ "JSF ya no es lo que te han contado". PrimeFaces . 2014-02-12 . Consultado el 2020-11-24 .[ enlace muerto permanente ]
  15. ^ Jens Schauder (noviembre de 2014). "Por qué deberías evitar el JSF". DZone.
  16. ^ McKenzie, Cameron (16 de febrero de 2016). "Cinco desventajas de elegir JSF como marco de trabajo para aplicaciones web". TheServerSide . Consultado el 22 de diciembre de 2020 .

Enlaces externos