莫哈拉与MyFaces的区别

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

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

我试图下载他们,但似乎该网站无法访问。 所以我使用Apache MyFaces,但运行的例子,我不得不添加8个jar子( commons-*myfaces-* )。
如果我使用MyFaces,为什么还需要更多的jar子? 我应该更喜欢Mojarra更轻? 另外下载页面确实是JSF Mojarra ?

谢谢

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

因为这些commons-*依赖项并未捆绑在MyFaces中。 另一方面,如果您使用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绝对是更稳定的select。

自2006年初以来,1.1_02和1.2_02新的Sun / Oracle JSF开发团队做了大量的工作。 不仅有错误修复,还有性能增强。 在Mojarra 1.2的一生中(大约在2007 – 2009年),Mojarra是比MyFaces更好的select。

由于带有新的部分状态保存pipe理的JSF 2.0,MyFaces在性能方面是更好的select,因为计算状态变化的方法更加有效,特别是在使用大型组件树时。 Mojarra仅在2.1.22版本中才有所涉及 。 在2.0 / 2.1时间线期间,Mojarra在复杂/嵌套的组合中(只有最后一次迭代的forms,失败的<f:ajax>等等)才有严重的<ui:repeat>问题,最初的实施完全不是防弹的)。 MyFaces也有它自己的一套错误,但它们是可以pipe理的。

现在,在JSF 2.2中,事先不能预料哪个更好。 错误通常只会在晚些时候暴露,而稳健性只能在善后期间进行评估。 只要select你觉得是最好的实施。 浏览他们的问题报告( MyFaces和Mojarra ),了解以前解决的问题和当前未解决的问题。 如果遇到特定的错误,请尝试使用这两个实现来排除其中的一个。 必要时报告,以保持两个实施的整体质量。


另外下载页面确实是JSF Mojarra ?

他们的主页已经移动了好几次了。 目前(2017年9月),位于https://javaserverfaces.github.io您也可以在Maven Central的org.glassfish:javax.faces中find这些库。 你可以在GitHub的javaserverfaces/mojarra项目中find源代码。 您可以在那里的README.mdfind安装说明。


也可以看看:

  • Java Server Faces 2.0的主要缺点是什么?
  • JSF实现和组件库有什么区别?

答案来自我的博客:

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.0到2.0.7的2.0.x分支中,已经closures了835个问题。 这就给了一个“原始”的衡量标准,那就是社区已经提供了多less贡献和反馈。 这是一段时间内closures问题的数字: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邮件列表

  • Apache是​​众所周知的采取一切从Sun /甲骨文,并使其更好。 在这种情况下,MyFaces Core在部分状态保存,复合组件等等方面有一些很酷的优化。

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

  • MyFaces Core与facelets 1.1.x有更好的兼容性。 只要设置org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSSnetworkingconfiguration参数为true,一个特殊的模式将被激活。 没有C:如果标签或C:forEach或UI:包括破碎了! 2012年5月更新在MyFaces Core内部完成了一个改进的algorithm,即使在使用faceletsdynamic更新组件树时,也可以减less状态大小。 这个参数不再需要。

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

  • 你可以使用svn签出并轻松构build任何MyFaces项目,因为它们都是基于Maven的,大多数IDE都提供了Maven支持。

  • 目前Mojarra(2011年6月)有一些与状态保存有关的恶意错误,MyFaces没有,因为它的实现是完全不同的。 事实上,MyFaces部分状态保存algorithm与Mojarra相比,提供了更好的与JSF 1.2状态保存的兼容性。 但是请注意Mojarra家伙正在研究这个问题,但是解决这个问题需要几个月甚至几年的时间。

  • 创新发生在MyFaces上。

更新2012年5月

请参阅这篇文章10为什么selectMyFaces Core作为Web应用程序的JSF实现的原因

对于希望看到MyFaces,Mojarra和Wicket之间的性能比较的人来说, 了解JSF 2和Wicket:性能比较

更新2013年7月

比较扩展到包括Spring MVC,Tapestry,Grails 2和Wicket等其他框架。 查看JSFCentral上的文章: 2013年7月在JSFCentral上更新

我会说这真的没关系。

我最近使用Myfaces和Primefaces开始了一个JSF 2.0项目。 上周,为了调查一个bug,我试图在Mojarra上运行它。 所有这一切都是交换JAR,并删除web.xml中的Myfaces特定的条目 – 并且一切正常,没有任何问题。 无可否认,这是一个不使用所有JSFfunction的原型,但是通过标准符合性的兼容性演示给我留下了深刻的印象。

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

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

我通常坚持莫哈拉实施,除非有其他原因。 我使用Netbeans,所以使用在GlassFish下运行的Mojarra的“默认”项目设置是最容易的。

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

目前,JSF-2.0组件库已经上线,似乎正在进行大量的开发工作。 所以你应该学习并能够在JSF实现之间切换,以防出现问题。

MyFaces在其中有更多的jar包的原因是它具有比参考实现更多的function。

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

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

我在使用mojarra(2.2.8)时非常头疼,奇怪的行为,如由于以前的forms更新而只能在第二次用户交互之后运行的ajax方法。 所有与MyFaces一起。