JSF和Spring的性能与不良的JSP性能比较

4
我看到一些由我的同事开发的JSF项目,这些项目对我来说非常缓慢。有人有相同的意见吗?
我目前正在使用jsp+jstl和jQuery作为“丰富”的客户端。
我想知道现代框架(jsf、wicket、tapestry等)与旧的普通jsp相比的优缺点。
如果使用过所有这些技术的人都能回答,那就太好了。
对于我来说,最有趣的特性是什么,让你离开jsp并使用“大规模”框架(例如Spring中的AOP或其他任何你可以注意到的东西)。
感谢所有评论。
5个回答

8
我使用过CGI、PHP、JSP、Struts、Spring MVC(1.2)、Bea workshop、JSF、JBoss Seam、Spring MVC(2.5)和Wicket(按照这个顺序)。我注意到每次使用新技术时,生产力和质量都有了飞跃。它只是更好用,感觉更好。我更喜欢Wicket(加上Spring、Quartz等)。我可以诚实地说我看到了光明,我不想回到更暗或更亮的一面。
关于Wicket有很多值得说的地方。
  • 默认支持对话支持(或选项卡启用),您再也不用担心“在新选项卡中打开”和“返回”按钮问题。
  • 它是基于组件的,因此您可以像使用swing一样重复使用代码。
  • 利用了许多标准Java,如类型安全奇迹。
  • 支持高级安全功能,如URL加密。
  • 默认情况下支持集群化应用程序。
  • 最重要的是,它使用起来非常有趣。

JSP和JSF都有很多需要改进的地方。

  • 我最烦恼的是“EL”无聊的东西,因为我认为它破坏了Java类型安全和强大的特性。
  • 两者都需要工具支持以提高生产力。
  • 你需要另一个框架来解决这些问题(如Seam框架,使JSF可用)。
  • 错误处理非常棘手,异常并不直接有用。
  • 在这两个框架上制作可重复使用的组件很困难,并且不支持适当的关注点分离模型。
  • ... 最重要的是,还有很多小问题,比如thisthis

没错,Wicket很好!你也应该尝试一下Grails(带有非常强大的ORM层GORM)。它类似于Ruby on Rails。 - Martin K.

4
我非常喜欢使用JSP 2.0作为模板技术。也就是说,我使用Spring MVC来访问我的域对象,并准备好我需要渲染的所有数据,然后交给JSP来呈现。我选择使用JSP 2.0,因为我喜欢使用标签文件进行模板组合,这使我可以在需要其他组合框架的地方使用简单的JSP 2.0。
我故意避免在JSP中编写任何基本的编程内容。没有数据访问,没有SQL,没有脚本,没有方法,什么都没有。只有对预先存在的控制器提供的数据进行简单的呈现,可能还有一些集合的迭代和简单的情况。

很高兴听到这个。我正在使用与Spring MVC相同的方式使用JSP,它非常好和快速。 - marioosh

2
许多优点。我可以列举JSF的优点,这些是我在上一个项目中使用过的。
  • 集中的导航位置(就像struts一样)
  • 组件如日期选择器、自动完成、分页等。
  • 您可以为布局提供渲染器,从而大大简化了一些布局逻辑。
  • 可用的瓷砖,就像struts一样。

JSP没有清晰地区分业务逻辑和布局。

无论如何,尽管有所有这些优点,如果您是Java程序员,我建议您看一下Grails,它更加舒适。


3
现在这个名字只叫做“Grails”了;Ruby on Rails的开发人员要求他们改名。 - Michael Borgwardt
好知道。感谢您的评论。我给了你一个赞。 - Luixv
两个替代Grails的选择是:1. Lift (http://liftweb.net/)。它运行在JVM上,但你需要学习Scala(不过这是一门很棒的语言 :-))。2. JRuby on Rails,即在JVM上运行的Rails (http://wiki.jruby.org/wiki/JRuby_on_Rails)。同样,尽管JRuby在JVM上运行,你需要学习Ruby才能使用它。 - Javier

0

JSP非常原始,基本上没有小部件,你必须自己构建一切。虽然JSF有所改进,但它并不是Java最好的Web框架 - 还有很多其他框架可以让你实现更令人印象深刻的结果,例如GWT。


3
这句话可能有偏见,但在我看来,GWT(http://code.google.com/webtoolkit/)更像是一个网页前端框架,而不是真正的网页框架。 - Javier
我也认为JSP没有什么用处,特别是在JavaEE中的存在。它应该只是一个可选库。但似乎大多数人喜欢混合内容和代码(这是一种反模式)。 - ivan_ivanovich_ivanoff
最终关键在于用户的体验,两者都要传递到浏览器上...只要它能够正常工作并让用户满意,用户并不关心它是如何实现的。 - mP.

0

Spring MVC的好处:

  • 该框架微妙地鼓励您编写更好设计的代码:通过使用依赖注入,并将应用程序设计分解为域(模型)对象、控制器、服务类、DAO等。
  • 作为第一个要点的副作用,您的代码最终变得非常易于进行单元测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接