有比较 JSF 2 和 Tap 5 的最新文章吗?我似乎发现的一切都在比较 JSF 1.2 和 Tap4。
有没有人有任何 T5 或 JSF2 的经验和时间来宣传其中一个或另一个?
我正在寻找一个在 Hibernate 和 mySql 之上的 Java 快速开发框架。
接受其他框架销售宣传,但 JSF2 和 T5 目前是我们的首选。
有比较 JSF 2 和 Tap 5 的最新文章吗?我似乎发现的一切都在比较 JSF 1.2 和 Tap4。
有没有人有任何 T5 或 JSF2 的经验和时间来宣传其中一个或另一个?
我正在寻找一个在 Hibernate 和 mySql 之上的 Java 快速开发框架。
接受其他框架销售宣传,但 JSF2 和 T5 目前是我们的首选。
在过去的几年里,我主要使用 Tapestry 5。不过我不会传福音。选择一个好的 web 框架当然是个好主意,但通常不是你的主要问题。
我脑海中的好事和坏事的清单:
Tapestry 5 的初始学习曲线相当陡峭。魔术和元编程无处不在。您可能会争辩说这是对配置的过度约定。
简单的事情做起来很简单,更难的事情需要你详细了解 Tapestry 5 的工作原理,如果你不了解(还)可能会很难。
我喜欢重新加载直播课程。您更改 T5 组件或模板中的某些内容并立即看到它。当您的应用程序做了很多事情并且需要 30 多秒才能在 Jetty 中启动时,它真的很有用。
Tapestry 不支持动态页面结构。这通常不是问题,但如果您正在开发某种门户解决方案,人们可以单独安排组件,请不要使用 Tapestry。Tapestry 用于静态结构,它处理得非常好。
Tapestry 有漂亮的 URL。package/page/${param1}/${param2} ...
Tapestry 使用正确的 HTTP 动词来做事。链接是 GET,表单提交是 POST,post-redirect-get 模式是规范。
Tapestry 的社区不是很大。除了 Howard Lewis Ship,还有一些其他的提交者,但没有像 Wicket 那样的支持。因此,Tapestry 的发展相当缓慢。
Tapestry 的模板方法(使用类型和 ID 检测 HTML)是我见过的更好的方法之一,但它在将代码排除在 HTML 之外方面并没有 Wicket 走得那么远。另一方面,类文件不那么冗长。不过,我认为 Wicket 方式更可取。
Tapestry 的文档有些不足。
我非常喜欢 Tapestry,我认为你可以使用它非常有效率,而且我总是很乐意参与使用它的项目。
但是,我建议您也检查一下 Wicket。它似乎比 Tapestry 获得了更多的关注,并且解决了一些不那么神奇的问题,但使用了一种常识性的方法。
(我只简单地使用过 JSF 1,我发现它几乎在它所做的所有事情中都完全关闭:将每个请求包装在 POST 中(因此破坏了基本的 Web 功能),使用 JSP,但需要对所有内容使用特殊标签,甚至纯HTML...我读了很多在JSF阵营中有所改进,但我说不出来,我再也没有看过它。)
接受你的提议并推销另一个框架:
如果你想要真正快速的开发,那么你应该看看Play Framework。
我使用过 JSF/Richfaces/Seam/Hibernate 等,我会说使用 Play 可以使您的工作效率提高一倍以上。没有部署周期。所以没有开发人员停机时间。它包含 JPA/Hibernate 和许多将其功能扩展到其他方向的插件。
我也喜欢它使您的页面如此轻量的事实。我对 JSF 的最大问题始终是页面的重量(不必要的 ID、大量表、客户端状态等)
花点时间观看网络广播。
查看我在 Jazoon 2010 上的演示文稿 JSF 2.0 与 Tapestry 5:正面对比。这可能会帮助您做出决定。
作为 Tapestry 提交者,我建议您选择 Tapestry,但我认为做出决定的最佳方式是两者都试一试。需要更多演示应用程序?
https://github.com/drobiazko/tapestry5inaction/tree/master/tlog
对我来说,Tapestry 5 最重要的特性是框架的灵活性。借助 Tapestry IoC,您几乎可以覆盖 Tapestry 核心中的每一段代码。
不要向我寻求公正的意见...... Tapestry 已经成为我的生活好几年了,我仍然喜欢它。
话虽如此,学习曲线正在变得不那么陡峭,文档正在迅速改进,而 Igor 的书指日可待。
一些让人们感到困惑的事情仅仅是缺乏文档;例如,命名约定是可选的,总是有一些人更喜欢的更明确的配置(以方法注释的形式)。
为了解决几个 Henning 点:
Tapestry 组件模板在设计上是静态的(这对于 Tapestry 的可扩展性和集群性故事非常重要)。但是,我的 TapX 库中的一个附加组件支持填补空白的动态外部模板。
此外,如果您想最大限度地保留模板,您也可以这样做,例如:
<form t:id="myForm">
...在模板中,其余部分在 Java 类中:
@Component(parameters={"zone=target", "clientValidation=blur", "context=client", "secure=true") 私有表单 myForm;
.... 换句话说,所有 Tapestry 特定的内容都从模板中移出并进入代码。不适合琐碎的组件(更多地在模板和 Java 源代码之间来回切换),但非常适合保持世界的美好和独立。
我对 Tapestry 非常满意。这是一种不同于大多数人习惯的方法。它使用许多与 WebObjects 相同的范例(iTunes 商店的基础)。
Tapestry 在最大限度地减少完成任务所需编写的代码量方面做得非常好。一旦您知道自己在做什么,这很好,但是当您学习命名约定时,一开始可能会令人沮丧,因为有些东西似乎神奇地起作用,而其他事情则不会,因为您命名错误。
关于 Tapestry,我最喜欢的一件事就是需要很少的 XML。例如,如果您创建一个 Hibernate 实体,则将其放在 com.example.entities 包中并为其提供 @Entity 注释。不需要其他配置——不需要 XML,不需要将类名添加到某个文件中,等等。
我强烈建议您查看实际代码以了解您的想法。这里有几个建议:
wookicentral.com/github.com/spreadthesource/wooki
Tapestry.zones.apache.org:8180/tapestry5-hotel-booking/github.com/ccordenier/tapestry5-hotel-booking
还可以查看 jumpstart 站点。它包含许多示例以及向您展示如何使用大多数各种组件的代码。它还包含一个起点应用程序,如果您想在其上创建应用程序,它会为您提供一些用户管理功能。
jumpstart.doublenegative.com.au/jumpstart/
还可以查看修改后的 Tapestry 文档。它尚未发布在主站点上,但它已经向前迈出了一大步:
people.apache.org/~uli/tapestry-site/
使用 JSF 2,尤其是在使用 Java EE 6 特性的情况下。如果您想拥有精美的 UI,请尝试Primefaces。
根据您的要求,要考虑的重要部分是您使用的是 MySQL,仅此而已。因此,从不同的角度来看。您正在使用 JPA2(在这种情况下,您的持久性提供程序恰好是 Hibernate)。使用这种方法,您可以快速轻松地“交换”您正在使用的持久性提供程序或数据库。
看起来 Java EE 6 解决了这个问题。
这是 Tapestry 5 和 JSF 2 的一个很好的比较
http://blog.tapestry5.de/wp-content/uploads/2010/06/JSF-2.0-vs-Tapestry-5.pdf
请注意,这是由 Tapestry 5 提交者 Igor Drobiazko 整理的
我喜欢这个关于 Tapestry的问题。也许它会影响你的决定。