8

有比较 JSF 2 和 Tap 5 的最新文章吗?我似乎发现的一切都在比较 JSF 1.2 和 Tap4。

有没有人有任何 T5 或 JSF2 的经验和时间来宣传其中一个或另一个?

我正在寻找一个在 Hibernate 和 mySql 之上的 Java 快速开发框架。

接受其他框架销售宣传,但 JSF2 和 T5 目前是我们的首选。

4

8 回答 8

24

在过去的几年里,我主要使用 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阵营中有所改进,但我说不出来,我再也没有看过它。)

于 2010-10-01T08:20:04.437 回答
8

接受你的提议并推销另一个框架:

如果你想要真正快速的开发,那么你应该看看Play Framework

我使用过 JSF/Richfaces/Seam/Hibernate 等,我会说使用 Play 可以使您的工作效率提高一倍以上。没有部署周期。所以没有开发人员停机时间。它包含 JPA/Hibernate 和许多将其功能扩展到其他方向的插件。

我也喜欢它使您的页面如此轻量的事实。我对 JSF 的最大问题始终是页面的重量(不必要的 ID、大量表、客户端状态等)

花点时间观看网络广播。

于 2010-10-01T00:56:24.903 回答
6

查看我在 Jazoon 2010 上的演示文稿 JSF 2.0 与 Tapestry 5:正面对比。这可能会帮助您做出决定。

作为 Tapestry 提交者,我建议您选择 Tapestry,但我认为做出决定的最佳方式是两者都试一试。需要更多演示应用程序?

https://github.com/drobiazko/tapestry5inaction/tree/master/tlog

对我来说,Tapestry 5 最重要的特性是框架的灵活性。借助 Tapestry IoC,您几乎可以覆盖 Tapestry 核心中的每一段代码。

于 2011-02-09T08:55:32.047 回答
5

不要向我寻求公正的意见...... Tapestry 已经成为我的生活好几年了,我仍然喜欢它。

话虽如此,学习曲线正在变得不那么陡峭,文档正在迅速改进,而 Igor 的书指日可待。

一些让人们感到困惑的事情仅仅是缺乏文档;例如,命名约定是可选的,总是有一些人更喜欢的更明确的配置(以方法注释的形式)。

为了解决几个 Henning 点:

Tapestry 组件模板在设计上是静态的(这对于 Tapestry 的可扩展性和集群性故事非常重要)。但是,我的 TapX 库中的一个附加组件支持填补空白的动态外部模板。

此外,如果您想最大限度地保留模板,您也可以这样做,例如:

<form t:id="myForm">

...在模板中,其余部分在 Java 类中:

@Component(parameters={"zone=target", "clientValidation=blur", "context=client", "secure=true") 私有表单 myForm;

.... 换句话说,所有 Tapestry 特定的内容都从模板中移出并进入代码。不适合琐碎的组件(更多地在模板和 Java 源代码之间来回切换),但非常适合保持世界的美好和独立。

于 2011-02-09T18:09:58.560 回答
4

我对 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/

于 2010-10-22T02:08:36.387 回答
3

使用 JSF 2,尤其是在使用 Java EE 6 特性的情况下。如果您想拥有精美的 UI,请尝试Primefaces

根据您的要求,要考虑的重要部分是您使用的是 MySQL,仅此而已。因此,从不同的角度来看。您正在使用 JPA2(在这种情况下,您的持久性提供程序恰好是 Hibernate)。使用这种方法,您可以快速轻松地“交换”您正在使用的持久性提供程序或数据库。

看起来 Java EE 6 解决了这个问题。

于 2010-09-30T22:22:32.000 回答
0

这是 Tapestry 5 和 JSF 2 的一个很好的比较

http://blog.tapestry5.de/wp-content/uploads/2010/06/JSF-2.0-vs-Tapestry-5.pdf

请注意,这是由 Tapestry 5 提交者 Igor Drobiazko 整理的

于 2013-04-25T08:52:20.553 回答
-3

我喜欢这个关于 Tapestry的问题。也许它会影响你的决定。

于 2010-09-30T16:02:42.153 回答