Implementaciones JSF y bibliotecas de componentes

Acabo de empezar a usar JSF y tengo tres preguntas relacionadas con las implementaciones de JSF y las bibliotecas de componentes

  1. ¿Cuál es la diferencia entre las implementaciones de JSF y las bibliotecas de componentes?

  2. ¿Cuáles son las diversas implementaciones de JSF (como Apache MyFaces) que están disponibles y cuál es la diferencia entre cada una de ellas?

  3. ¿Cuáles son las diversas bibliotecas de componentes JSF (como caras enriquecidas y caras de hielo) que están disponibles y cuál es la diferencia entre cada una de ellas?

Cualquier enlace relevante que proporcione la información exacta sobre esto también sería útil.

¿Cuál es la diferencia entre las implementaciones de JSF y las bibliotecas de componentes?

Las implementaciones JSF implementan la especificación JSF API . Contienen al menos los componentes estándar para mostrar cualquiera de los elementos HTML básicos disponibles (“plain vanilla”).

Las bibliotecas de componentes JSF solo agregan ese extra a la implementación básica, a menudo con más skinnability, ajaxability, enhanceability, etcétera, de modo que usted puede simplemente progtwigrlo con un solo componente en lugar de un conjunto de componentes o componentes personalizados, eventualmente junto con un montón de código JS / CSS relacionado.


¿Cuáles son las diversas implementaciones de JSF (como Apache MyFaces) que están disponibles y cuál es la diferencia entre cada una de ellas?

Hasta ahora hay dos (principales) implementaciones de JSF, concretamente Oracle Mojarra y Apache MyFaces . Técnicamente, no hay mucha diferencia, ya que ambos solo tienen que cumplir las especificaciones de la API JSF. Más bien observe la solidez, disponibilidad de documentación, nivel de soporte, grado de mantenimiento (velocidad de mejoras, corrección de errores, liberación, etc.), etcétera. Ver también: Diferencia entre Mojarra y MyFaces


¿Cuáles son las diversas bibliotecas de componentes JSF (como caras enriquecidas y caras de hielo) que están disponibles y cuál es la diferencia entre cada una de ellas?

Hay muchos de ellos, me limitaré a las bibliotecas más usadas / conocidas. Si quieres más capacidades de skinning, mira PrimeFaces ( demo ), RichFaces ( demo ) o ICEFaces ( demo ). Si desea más capacidades ájicas (aparte de lo que ya proporciona JSF 2.0), mire PrimeFaces, RichFaces, ICEFaces, OpenFaces ( demo ) o Trinidad ( demo ). Si desea componentes más especializados / mejorados, consulte PrimeFaces, RichFaces, ICEFaces, OpenFaces, Trinidad o Tomahawk ( demo ). La diferencia se encuentra principalmente en el conjunto de componentes disponibles y el grado de personalización.

Además, también hay una biblioteca de utilidades JSF. Probablemente te reconocerás reinventando / reescribiendo algunas FacesUtil , JSFUtils , etc. cada vez y / o tags / componentes personalizados para resolver problemas típicos y recurrentes de JSF. OmniFaces ( demostración ) está diseñado para llenar este vacío al proporcionar una biblioteca estándar reutilizable de utilidades JSF que se puede usar en combinación con cada implementación de JSF y biblioteca de componentes.

Una implementación es algo que implementa la especificación JSF. Una biblioteca de componentes es algo que agrega funcionalidad extra (normalmente widgets UI adicionales) a la especificación base.

Supongo que la principal diferencia es el cumplimiento de las normas. Por lo que sé, Glassfish es el único servidor de aplicaciones que admite completamente el nuevo estándar JSF lanzado como parte de Java EE 6.

Lo siento, no estoy seguro de la última pregunta.