帮助选择基于Java组件的Web框架

时间:2011-01-31 15:12:13

标签: java jsf wicket tapestry

我对尝试和学习基于组件的Web框架感兴趣。目前,我只有使用Spring MVC和Grails等基于动作的框架的经验。我决定:JSF 2.0,Wicket和Tapestry。

我很感激理解方面的帮助:

  1. 三个中哪一个“最容易”学习?
  2. 三者中哪一个拥有最好/最多的资源(书籍,网站,书籍)?
  3. 在代码(过去兼容性)和社区
  4. 方面,三者中哪一个最稳定
  5. 三者中哪一个提供最大的性能/最少的资源(cpu和内存)?
  6. 谢谢!

7 个答案:

答案 0 :(得分:7)

我个人偏爱Tapestry。但是,程序员效率是我的主要标准。如果这些对你来说是最重要的标准,你可能想要使用其他类似JSF 2.0的东西。

  1. 我发现Tapestry相当容易学习,但我有WebObjects的背景知识。例如,如果你只完成Struts编程,你可能会觉得它有点困难。

  2. 大多数人通过邮件列表学习Tapestry。社区非常有用,档案非常有用。 (http://tapestry.markmail.org)在http://tapestry.apache.org真正改进Tapestry用户文档并取得了巨大成功,结果非常出色。如果您想了解书籍的数量,请在亚马逊进行搜索。 JSF 2.0和Spring MVC可能拥有最多的书籍。

  3. Tapestry 5在将应用程序从5.0升级到5.1到5.2的过程中非常稳定。一些(声音)人抱怨他们无法将Tapestry 4应用程序升级到Tapestry 5.就个人而言,我宁愿处理一个具有干净起点且基于以前版本的体验的框架而不是以前版本的代码库。如果您的目标是选择一个包含大量遗留代码的框架(例如,如果您想要咨询以帮助公司使用现有代码)那么您应该看看Struts。

  4. 性能通常很大程度上取决于你想用框架做什么,所以我不能给你一个具体的答案。我还没有看到任何框架比较,其中所有代码都是由专门研究该特定框架的人编写的。这意味着测试是如此基本,以至于它们不会告诉您任何实际操作,或者它们足够复杂,结果会偏向测试人员最常使用的框架。

    除非您尝试创建类似eBay的东西,否则您可以使这些框架中的任何一个都能很好地运行。考虑到硬件的价格是多么便宜,您可能最好选择能够提供最佳程序员效率的硬件。

答案 1 :(得分:7)

我想,您应该首先检查Matt Raible最近编译和更新的java web框架枪战:

就个人而言,我从版本3开始就是Tapestry用户:)并使用了所有这些用户。虽然,使Tapestry 4向后兼容3,然后4.1与4不兼容,最后5与其余部分不兼容对开发人员非常困难,我认为这是最好的。 Tapestry 5在各个方面都优于任何以前的版本,现在贡献者继续添加很酷的功能以及硬核改进,而不会破坏向后兼容性。

我最喜欢的Tapestry 5是你可以用你自己的实现替换框架的几乎任何部分 - 它是灵活的和可定制的。

让我感到温暖的另一件事是Tapestry贡献者非常专注于通过实现各种漂亮的组件/功能来提高我的工作效率(作为开发人员)。

但这些只是我的情绪,毕竟,我会说哪一个记忆少或者有更多的书都没关系。重要的是哪一个让你/你的团队更快乐,更有动力,更有成效,唯一能找到答案的方法就是尝试每个人:)

答案 2 :(得分:5)

只有正确的答案是:在一些小的示例应用程序中尝试所有这些。但根据我的喜好,我会选择Tapestry 5。

的Ad1。它相当容易学习。随着时间的推移,它获得了足够的材料来学习如何使用它。此外,用户列表非常棒,人们也非常敏感。

Ad2的。可能JSF最终会在学习材料类别中获胜,因为它是java标准。

Ad3的。我不认为挂毯5是向后不兼容的。它与t4和t3不同。它恰好具有相同的名称;)并且t5是稳定的并且尊重以前的版本超过2年。

然而,JSF也将获胜。它是java标准和java一样,它将在未来100年向后兼容。

AD4。这取决于谁测试应用程序以及如何实现功能。但是在这里,我记得JSF最后是公平的。

T5的好处是任何组件库都可以与任何其他lib兼容。这可能不适用于JSF。我认为,素面不能与冰面或任何其他实现相结合。

但是从这3个我在实际项目中只使用了挂毯。邪恶看起来不错,但我只是喜欢Tapestry。对于1.2之后的JSF,我不想尝试新版本,直到我必须这样做。 Tapestry也是一个非常适合我需要的框架。

还想想你的老板。他们总是想要带有标准徽章的东西。这就是为什么选择最老版本的Struts,java 1.4和JSF总是一个好主意:/

此致 米甲

答案 3 :(得分:1)

我会说Wicket或Vaadin。

https://cwiki.apache.org/WICKET/wicket-reference.html

http://www.vaadin.com/

  1. 最容易学习:如果你知道挥杆,它会更容易理解。对两者都有效。

  2. Wicket可能拥有比vaadin更多的资源。用户列表也非常活跃且有用。

  3. 两者都是相当成熟的项目。未来的兼容性是未来的,但我猜通勤者将尽最大努力发布最佳的后向兼容性。

  4. 这只是猜测而不是基于实际的性能测试:可能wicket会比vaadin做得更好。

  5. 最后一点是,使用vaadin可以更轻松地获得酷炫/漂亮的UI。

    对于Tapestry,请参阅以下链接:

    https://stackoverflow.com/questions/1303438/why-did-you-stop-using-tapestry

答案 4 :(得分:1)

这些是选择框架的有趣标准。通常,您的实际编程经验将比有多少本书更重要。一个“易于学习”的标准可能有一定道理,但如果一个框架需要10个小时的前期投资,但它每周节省10个小时的编程,那么开始投资是值得的。

如果你真的想找到一个适合你的人,那么最好继续在许多不同的框架中编写一个小应用程序。

这种方法的问题在于,除非你有时间在每个框架中至少部分熟练,否则你的意见将根据你最熟悉的内容而出现偏差。

答案 5 :(得分:1)

我花了一些时间阅读Tapestry。我发现这比我以前想的要好一点。事实上,Tapestry和HybridJava之间的方法有很多共同之处。这需要一些时间,但我希望稍后会进行更详细的比较。

答案 6 :(得分:-2)

首先(也是最重要的)那些声称它们基于组件的框架实际上可能与组件的含义非常不同。在Wicket中是一回事,在JSF中是另一回事,在Struts中则完全不同,等等。您可以在HybridJava中找到的最强大的Web应用程序组件定义。其他框架根本无法赶上。

顺便说一句,HybridJava比Wicket大约容易学习5倍 - 只有大约15页可读。它运行速度非常快,运行时间不到19k。