JSF vs Stripes,哪个最好?

哪个最好,换句话说,最简单易用? 条纹或JSF。

虽然我没有在愤怒中使用这两者,但我需要评估什么是开始新项目和转换现有Struts项目的最佳选择。

我担心JSF不会像我想的那样渲染,但是其他经历是什么? 似乎条纹更直接,我在这个假设中是否正确?

哪个最好,或者换句话说,哪个最容易使用? 条纹或JSF。

哪个最好? 好吧,Stripes和JSF是不同的。 前者是基于动作的框架(如Struts),后者是基于组件的(如Wicket)。 因此,答案将取决于您对基于行动的流程与基于组件的层次结构的经验和知识,并且两者都有其优点和缺点。 哪个最简单? 条纹,毫无疑问。

我喜欢条纹:

  • 它简单易行,即学习曲线较低。
  • 我喜欢它的配置方法。
  • 它很轻巧。
  • 它有详细记录(由于其简单性,您不需要大量文档)。
  • 它有一个小反应灵敏的社区(你会在邮件列表上得到答案)。

如果两者都是新手,我会选择条纹。 如果你想学习一个基于组件的框架,我认为从Wicket开始更容易(另见Gavin King在如何开始学习Java EE 6中所说的)。

JSF没有良好的媒体报道,不良声誉是不幸的(Sun Microsystems已经错过了一次机会)。 但是,自从提出问题以来,已经发生了很多变化 – 新的JSF 2.0版本已经发布。

那么JSF 1.X出了什么问题,与Stripes,Spring MVC或Wicket,Play,Click等相比,是什么让它如此模仿?

  1. 仅支持POST请求,这会导致性能问题(可以有效缓存GET请求),难以实现可collections的URL等等
  2. JSF 1.X基于JSP页面,它们不适合处理更复杂的JSF页面生命周期
  3. 组件的创建既困难又繁琐。
  4. 定义导航规则远非灵活且非常冗长
  5. 强制XML配置
  6. 没有干净的资源管理方法

好消息是新JSF版本解决了所有这些缺点。

  1. GET和POST请求同样得到很好的支持。
  2. 配置可以借助注释完成(我们可以坚持使用XML,这是更好的解决方案),导航规则定义得到简化,我们甚至可以使用约定优于配置方法。
  3. 组件创建很容易。
  4. 有一些新的非常有用的组件范围:视图范围和闪存范围(类似于Ruby on Rails中已知的),使用户能够轻松处理更复杂的流程。
  5. 有标准的资源管理方法和更好的error handling设施
  6. 我们可以定义项目阶段,以便在各种环境(测试,生产等)中更轻松地处理项目
  7. 基于XHTML的Facelets取代了JSP作为更好的视图定义替代方案
  8. 内置的AJAX请求支持
  9. JSF是Java EE标准的一部分,这意味着如果无聊的开发人员决定转向下一个shiny且更时尚的框架,他们不会在一夜之间消失。

最后一个巨大的JSF 2.X优势:精心设计,外观精美,性能良好的即用型组件(RichFaces,PrimeFaces,ICEFaces)。 这些库提供了数百个通常用于WWW页面的组件,这些组件在没有编写一行JavaScript或CSS的情况下可用。 这是巨大的生产力提升。

尽管如此,与基于行为的框架(如Stripes)相比,JSF可能存在性能问题,这些框架更接近HTTP请求,而不构建组件模型(使用更多内存,更多网络带宽)。

但对于不一定非常高效的应用程序,JSF 2.0是一个非常好的理性选择。 学习曲线不再那么陡峭,而且重用现有组件的能力使其真正具有吸引力。 从这个角度来看,Stripes并不那么吸引人。

因此,例如,对于2000名员工使用的内部网企业应用程序,JSF 2.0将是不错的选择。

最好的网络框架? 像往常一样,这个问题导致了“依赖于”答案。

另一个问题是:“最简单易用的框架”。 更容易回答,那条纹。 JSF有一个臭名昭着的陡峭学习曲线。 另一方面,条纹易于设置且易于学习。

Stripes框架就像Struts,但只是更好。 例如 ,它使用注释而不是XML配置文件。 就像Struts框架一样,它是一个基于动作的框架,只是更优雅。 这意味着它严格遵循HTTP事件处理的无状态特性。 如果您希望在生成页面方面获得高性能和最大灵活性,那么这是很好的。

像JSF这样的框架不是基于动作的框架,而是基于组件的框架。 这意味着它在HTTP和您的应用程序之间移动了一层抽象。 该层使得编写JSF应用程序成为可能,就好像您正在编写Swing应用程序一样。 因此,JSF基本上处理组件模型和无状态HTTP生命周期之间的范式不匹配。 然而,这个抽象层将花费一些性能; 它也会对生成的HTML给你一点点控制。

jsf使用得多,所以如果发生任何奇怪的事情,你应该得到更好的支持。 这足以让我使用它。

我会用JSF。 它被广泛使用, iceFaces是一个非常方便的基于JSF的应用程序包。

JSF是Java EE 6+的一部分。 这意味着它将在很长一段时间内可用并保持,这对我们很重要。

此外,可能会出现不同的实现,允许您为给定目的选择最佳实现。

Seam是用于开发JSF应用程序的不错的应用程序堆栈,不确定Stipes。

  • 转换
  • 很好的ajax支持
  • 丰富的组件集
  • XML配置的注释

我不喜欢JSF的一件事是,如果你是JSF的新成员,那就是高度学习曲线。

像Struts这样的条纹并不能为你的应用做很多事情。 除了一些基本的路由和填充表单和执行操作,它基本上什么也没做。 上次我检查了大多数(全部)条纹标签基本上都是等同的html标签,很少或没有额外的标签。 这就是说JSF确实提供了更多,但如果你想要一个没有停留在2000年的真正技术 – 考虑GWT。