Mojarra和MyFaces之间的区别

时间:2010-12-25 16:13:27

标签: jsf jsf-2 myfaces mojarra

我开始使用JSF2.0我使用了一个教程作为参考,但我有以下问题:

本教程仅使用2个库:jsf-api.jarjsf-impl.jar(但也有JSTL)来自Mojarra Project。

我也尝试下载它们,但似乎网站无法访问。 所以我使用了Apache MyFaces但是为了运行这个例子,我必须添加8个罐子(commons-*myfaces-*)。 如果我使用MyFaces,为什么还需要更多的罐子?我是否应该更喜欢Mojarra?下载页面确实是JSF Mojarra

由于

7 个答案:

答案 0 :(得分:72)

  

如果我使用MyFaces,为什么还需要更多的罐子?

因为MyFaces中没有捆绑这些commons-*依赖项。另一方面,如果您正在使用Apache.org中的其他库,这些库也使用这些commons-*依赖项,那么您最终会得到更小的总大小库。

注意应该是因为Mojarra 2.1.6可以使用单个JAR文件格式javax.faces.jar


  

我是否应该更喜欢Mojarra

这是一个非争论。您应该了解JSF实现的强大和良好维护。

Mojarra的祖父,Sun JSF RI 1.0以及RI 1.1的早期版本都被令人讨厌的错误搞得一团糟。那一刻(2004-2006左右),MyFaces肯定是更稳定的选择。

从2006年初的1.1_02和1.2_02开始,新的Sun / Oracle JSF开发团队做得很好。不仅有错误修正,还有性能增强。在Mojarra 1.2生命周期的大约一半(大约在2007-2009),Mojarra是比MyFaces更好的选择。

由于JSF 2.0带有新的部分状态保存管理,因此,由于计算状态增量的不同且更有效的方法,MyFaces在性能方面是更好的选择,特别是在使用大型组件树时。 Mojarra仅在版本2.1.22之后才开始追赶。在2.0 / 2.1时间线期间,Mojarra在复杂/嵌套合成中只有<ui:repeat>的严重问题(ao破坏状态保存,仅处理最后一次迭代的表单,失败<f:ajax>等)和{{3} (初始实施完全不是防弹)。 MyFaces也有自己的一组错误,但它们是可管理的。

目前,使用JSF 2.2,人们无法事先说出哪一个更好。错误通常仅在以后暴露,并且稳健性只能在后果期间进行评估。只要选择你认为最好的任何实现。浏览问题报告(flash scope implementationMyFaces),了解以前修复的问题和当前未解决的问题。如果您遇到特定错误,请尝试使用这两种实现来排除其中一个。如有必要,报告以保持两种实施的整体质量。


  

下载页面确实是Mojarra

他们的主页已被移动了好几次。目前(2017年9月)它位于JSF Mojarra您也可以在https://javaserverfaces.github.io找到图书馆。您可以在org.glassfish:javax.faces in Maven Central中找到源代码。您可以在javaserverfaces/mojarra project in GitHub上找到安装说明。


另见:

答案 1 :(得分:45)

答案来自我的博客:

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

2013年7月更新:在JSFCentral上查看系列文章和2013年更新:

http://www.jsfcentral.com/articles/understanding_jsf_performance_3.html


在第一个视图中,两个JSF实现(MyFaces和Mojarra)都这样做,因为它们基于相同的标准。事实上,您可以从一个实现更改为另一个实现,这是JSF标准规范质量的一个事实。

但是在底部有很多原因可以解释为什么MyFaces Core 2.x比Mojarra更好。注意我是MyFaces项目的提交者,所以我会在这里给出你的观点:

  • 许多问题已得到解决。仅在2.0.x分支从2.0.0-alpha到2.0.7它已经关闭了835个问题。这给出了社区在一段时间内提供了多少贡献和反馈的“原始”衡量标准。这是随时间内已结束问题的数字: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。

2012年5月更新: 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

  • 社区代码:MyFaces社区非常重视有很多JSF知识的人。订阅用户和开发邮件列表是了解正在发生的事情,收到反馈并了解其他对JSF感兴趣的人的最佳方式。请参阅MyFaces Mailing Lists

  • 众所周知,Apache可以从Sun / Oracle中获取所有内容并使其更好。在这种情况下,MyFaces Core对部分状态保存,复合组件等进行了一些很好的优化!。

  • MyFaces Core对OSGi友好。当您需要对类加载进行更多控制时,它提供了一些SPI接口来处理特殊设置。

  • MyFaces Core与facelets 1.1.x有更好的兼容性!只需将org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS web配置参数设置为true,即可激活特殊模式。没有c:如果标签或c:forEach或ui:包括已经破坏了! 2012年5月更新 MyFaces Core内部完成了一项改进算法,即使在使用facelets动态更新组件树时,也会减少部分状态。不再需要这个参数。

  • MyFaces还有其他项目(特立尼达,多巴哥,Tomahawk,ExtVal,CODI,Orchestra,PortletBridge RI ......),这有助于保持代码调整,因为所有这些项目都是针对MyFaces Core进行测试的,如果有的话是一个错误,它处理得更快。

  • 您可以使用svn结账并轻松构建任何MyFaces项目,因为所有这些项目都基于maven并且大多数IDE都提供了maven支持。

  • 目前的Mojarra(JUN 2011)有一些与国家储蓄相关的讨厌的错误,MyFaces没有,因为它的实现完全不同。事实上,MyFaces部分状态保存算法提供了比Mojarra更好的与JSF 1.2状态保存的兼容性。但是请注意Mojarra的人正在努力解决这个问题,但要解决这个问题需要几个月甚至几年。

  • 创新发生在MyFaces上。

2012年5月更新

请参阅此文10 reason why choose MyFaces Core as JSF implementation for web applications

对于希望在MyFaces之间看到性能比较的人,Mojarra和Wicket看起来Understanding JSF 2 and Wicket: Performance Comparison

2013年7月更新

比较扩展到包括其他框架,如Spring MVC,Tapestry,Grails 2和Wicket。请参阅JSFCentral上的文章:Update JUL 2013 at JSFCentral

答案 2 :(得分:9)

我会说这没关系。

我最近使用Myfaces和Primefaces开始了一个JSF 2.0项目。上周,为了研究一个bug,我试图在Mojarra上运行它。所需要的只是交换JAR并删除web.xml中特定于Myfaces的条目 - 所有工作都没有任何问题。不可否认,这是一个不使用所有JSF功能的原型,但通过标准兼容性的兼容性演示让我印象深刻。

  

如果我使用,为什么我需要更多的罐子   MyFaces的?

  • myfaces-impl和myfaces-api JAR相当于Mojarra的jsf-impl和jsf-api。
  • 为了方便起见,
  • myfaces-bundle包含这两个,你需要这个或其他两个,而不是全部三个。
  • commons- *是包含有用的基本功能的库,用于处理集合,Java bean等否则必须重新实现(可能更慢并且具有更多错误)。许多其他项目也使用这些项目。

答案 3 :(得分:5)

我通常坚持使用Mojarra,除非有其他理由去做其他事情。我使用Netbeans,因此最简单的方法是使用“默认”项目设置,该设置使用在GlassFish下运行的Mojarra。

最后我使用的是MyFaces,因为我正在考虑使用Tomahawk,从同一来源使用JSF实现似乎是合理的。不过我改为使用Primefaces而且在Mojarra下工作正常。

目前,JSF-2.0组件库正在上线似乎正在进行大量的开发。因此,您应该学习并能够在出现问题时在JSF实现之间切换。

MyFaces中有更多jar的原因是它具有比参考实现更多的功能。

答案 4 :(得分:2)

你正在使用哪个IDE?如果您正在使用eclipse,那么它将在创建jsf 2.0项目时下载jar。请检查此http://www.icesoft.org/training/icefaces-self-serve-training.jsf

答案 5 :(得分:1)

mojarra和MyFaces之间没有太大区别。你可以检查哪一个是更稳定的版本。正如Balusc所说,MyFaces是最稳定的版本(2005-2006)。此外,许多人在2.0之后开始使用Mojarra,因为它与myfaces相比已变得稳定

答案 6 :(得分:0)

我对mojarra(2.2.8)感到非常头疼,奇怪的行为,例如ajax方法仅在第二次用户交互后由于之前的表单更新而运行。一切都与MyFaces一起消失了。