La guía o código que verás en este artículo es la solución más eficiente y válida que encontramos a tu duda o dilema.
Solución:
¿Por qué necesito más frascos si uso MyFaces?
Porque esos commons-*
las dependencias no están incluidas en MyFaces. Por otro lado, si está usando otras bibliotecas de Apache.org que también usan esas commons-*
dependencias, finalmente terminará con bibliotecas de tamaño total más pequeñas.
Debe tenerse en cuenta que, dado que Mojarra 2.1.6, un solo formato de archivo JAR está disponible como javax.faces.jar
que es desde Mojarra 2.3.9 renombrado a jakarta.faces.jar
.
¿Debería preferir Mojarra como más ligero?
Este no es un argumento. Debe observar qué tan robusta y bien mantenida es la implementación de JSF.
El abuelo de Mojarra, Sun JSF RI 1.0 y las primeras versiones de RI 1.1 estaban llenas de errores desagradables. En ese momento (alrededor de 2004-2006), MyFaces era definitivamente la alternativa más estable.
Desde 1.1_02 y 1.2_02 a principios de 2006, el nuevo equipo de desarrollo de Sun / Oracle JSF hizo un gran trabajo. No solo con la corrección de errores, sino también con mejoras de rendimiento. Aproximadamente a la mitad de la vida útil de Mojarra 1.2 (alrededor de 2007-2009), Mojarra fue la mejor opción que MyFaces.
Desde JSF 2.0, que vino con una nueva administración de ahorro de estado parcial, MyFaces fue la mejor opción en cuanto al rendimiento debido a un enfoque diferente y mucho más eficiente para calcular deltas de estado, particularmente cuando se utilizan árboles de componentes grandes. Mojarra se puso al día solo desde la versión 2.1.22. Durante la línea de tiempo 2.0 / 2.1, Mojarra solo tuvo problemas serios con
en composiciones complejas / anidadas (ao ahorro de estado roto, procesando solo la última forma iterada, fallido
, etc.) y con implementación de alcance flash (la implementación inicial no fue totalmente a prueba de balas). MyFaces también tenía su propio conjunto de errores, pero eran manejables.
En este momento, con JSF 2.2, no se puede decir de antemano cuál es mejor. Los errores a menudo se exponen solo más tarde y la solidez solo se puede evaluar durante las secuelas. Simplemente elija la implementación que “sienta” que es la mejor. Examine sus informes de problemas (MyFaces y Mojarra) para conocer los problemas previamente solucionados y los problemas abiertos actualmente. Si encuentra un error específico, intente con ambas implementaciones para excluir la una y la otra. Informe si es necesario para mantener alta la calidad general de ambas implementaciones.
¿También la página de descarga es JSF Mojarra?
Su página de inicio se ha movido varias veces. Actualmente (noviembre de 2019) se encuentra en https://eclipse-ee4j.github.io/mojarra. Puedes encontrar las bibliotecas en org.glassfish:jakarta.faces
en Maven Central también. Puede encontrar el código fuente en eclipse-ee4j/mojarra
proyecto en GitHub.
Ver también:
- ¿Cuáles son las principales desventajas de Java Server Faces 2.0?
- ¿Cuál es la diferencia entre las implementaciones JSF y las bibliotecas de componentes?
La respuesta viene de mi blog:
http://lu4242.blogspot.com/2011/06/10-reason-why-choose-myfaces-core-as.html http://lu4242.blogspot.com/2012/05/understandingjsf-2-and-wicket .html
ACTUALIZACIÓN JULIO 2013: Consulte la serie de artículos y la actualización de 2013 en JSFCentral:
http://www.jsfcentral.com/articles/understanding_jsf_performance_3.html
A primera vista, ambas implementaciones de JSF (MyFaces y Mojarra) hacen lo mismo, porque se basan en el mismo estándar. El hecho de que pueda cambiar de una implementación a otra es un hecho de la calidad de la especificación estándar JSF.
Pero en la parte inferior hay muchas razones por las que MyFaces Core 2.x es mejor que Mojarra. Tenga en cuenta que soy un comprometido con el proyecto MyFaces, así que le daré aquí solo mi punto de vista:
- Se han solucionado muchos problemas. Solo en la rama 2.0.x de 2.0.0-alpha a 2.0.7 se han cerrado 835 ediciones. Esto da una medida “bruta” de cuántas contribuciones y comentarios ha proporcionado la comunidad a lo largo del tiempo. Estos son los números de problemas cerrados a lo largo del tiempo: 2.0.0-alpha: 274, 2.0.0-beta: 58, 2.0.0-beta-2: 41, 2.0.0-beta-3: 39, 2.0.0 : 51, 2.0.1: 148, 2.0.2: 77, 2.0.3: 63, 2.0.4: 23, 2.0.5: 27, 2.0.6: 29, 2.0.7: 5.
ACTUALIZACIÓN MAYO 2012: 2.1.0: 47, 2.1.1: 6, 2.1.2: 84, 2.1.3: 9, 2.1.4: 74, 2.1.5: 7, 2.1.6: 35, 2.1.7: 52
-
Comunidad sobre código: La comunidad de MyFaces cuenta con mucha gente con un conocimiento sobresaliente sobre JSF. Suscribirse a la lista de correo de usuarios y desarrolladores es la mejor manera de saber qué está pasando, recibir comentarios y conocer a otras personas interesadas en JSF. Ver listas de distribución de MyFaces
-
Apache es bien conocido por tomar todo de Sun / Oracle y mejorarlo. En este caso, MyFaces Core tiene algunas optimizaciones interesantes sobre el ahorro de estado parcial, componentes compuestos y mucho más.
-
MyFaces Core es compatible con OSGi. Proporciona algunas interfaces SPI para hacer frente a configuraciones especiales, cuando necesita más control sobre la carga de clases.
-
MyFaces Core tiene una mejor compatibilidad con facelets 1.1.x !. Simplemente configure org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS web config param en true, y se activará un modo especial. No c: if tags oc: forEach o ui: ¡incluir roto más !. ACTUALIZACIÓN MAYO 2012 Se realizó un algoritmo mejorado dentro de MyFaces Core que reduce el tamaño del estado incluso en partes cuando se utilizan facetas para actualizar el árbol de componentes de forma dinámica. Este parámetro ya no es necesario.
-
MyFaces tiene otros proyectos (Trinidad, Tobago, Tomahawk, ExtVal, CODI, Orchestra, PortletBridge RI, ….) que ayudan a mantener el código afinado, porque todos esos proyectos prueban contra MyFaces Core, y si hay un error, es manejado más rápidamente.
-
Puede realizar el pago usando svn y construir fácilmente cualquier proyecto de MyFaces, porque todos están basados en maven y la mayoría de los IDE brindan soporte de maven.
-
Mojarra en el momento actual (JUN 2011) tiene algunos errores desagradables relacionados con el ahorro de estado, que MyFaces no tiene porque su implementación es completamente diferente. De hecho, el algoritmo de ahorro de estado parcial de MyFaces ofrece una mejor compatibilidad con el ahorro de estado JSF 1.2 que Mojarra. Pero tenga en cuenta que los chicos de Mojarra están trabajando en eso, pero arreglarlo les llevará meses, incluso años.
-
La innovación ocurre en MyFaces.
ACTUALIZACIÓN MAYO 2012
Vea este artículo 10 razones por las que elegir MyFaces Core como implementación JSF para aplicaciones web
Para los chicos que quieren ver una comparación de rendimiento entre MyFaces, Mojarra y Wicket, busque Comprensión de JSF 2 y Wicket: Comparación de rendimiento
ACTUALIZACIÓN JULIO 2013
La comparación se amplió para incluir otros marcos como Spring MVC, Tapestry, Grails 2 y Wicket. Consulte el artículo en JSFCentral: Actualización de julio de 2013 en JSFCentral
Yo diría que realmente no importa.
Recientemente comencé un proyecto JSF 2.0 usando Myfaces y Primefaces. La semana pasada, para investigar un error, intenté ejecutarlo en Mojarra. Todo lo que se necesitó fue intercambiar los archivos JAR y eliminar las entradas específicas de Myfaces en web.xml, y todo funcionó sin problemas. Es cierto que este era un prototipo que no usa toda la funcionalidad JSF, pero me impresionó bastante esta demostración de compatibilidad a través del cumplimiento de estándares.
¿Por qué necesito más frascos si uso MyFaces?
- Los archivos JAR myfaces-impl y myfaces-api son el equivalente de jsf-impl y jsf-api de Mojarra.
- myfaces-bundle contiene ambos para mayor comodidad, necesita este o los otros dos, no los tres.
- commons- * son bibliotecas que contienen funcionalidades básicas útiles para manejar colecciones, beans de Java, etc. que de otra manera uno tendría que volver a implementar (probablemente más lento y con más errores). Muchos otros proyectos también los utilizan.