如果我使用MyFaces,为什么还需要更多的JAR包?
因为这些commons-*
依赖项未捆绑在MyFaces中。另一方面,如果您正在使用来自Apache.org的其他库,这些库也使用这些commons-*
依赖项,则最终您将获得更小的总大小库。
应该注意的是,自Mojarra 2.1.6以来,已经提供了单个JAR文件格式javax.faces.jar
,自Mojarra 2.3.9起重命名为jakarta.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>
(例如,破损的状态保存、仅处理最后迭代的表单、失败的
<f:ajax>
等) 和
flash 范围实现 (最初的实现完全没有防护措施) 这些严重问题,而 MyFaces 也有其自己的一套 bug,但它们是可管理的。
目前,使用JSF 2.2时,我们无法预先确定哪个实现更好。错误通常要在后续才能暴露出来,而鲁棒性只能在事后进行评估。只需选择您“感觉”最好的实现即可。浏览他们的问题报告(MyFaces和Mojarra),了解以前修复的问题和当前未解决的问题。如果遇到特定的错误,请尝试使用两种实现来排除其中之一。必要时报告,以保持两种实现的整体质量高。
下载页面确实是 JSF Mojarra 吗?
他们的主页已经移动了几次。目前(2019年11月)位于 https://eclipse-ee4j.github.io/mojarra。您也可以在Maven Central中找到org.glassfish:jakarta.faces
库。您可以在GitHub的eclipse-ee4j/mojarra
项目中找到源代码。
参见: