11

我正处于 Web 应用程序的规划阶段,我正在尝试在 GWT 和 Cappuccino 之间进行选择。我有一个想法,我认为哪个更好,但我的伴侣却选择了另一种选择。我希望从使用过其中一个或两个或两者的人那里得到一些关于利弊的反馈。提前感谢您提供的任何见解。

4

3 回答 3

34

工具包 v/s 框架

GWT 是一个工具包。它的优势在于它提供的用于创建应用程序的工具。虽然它没有提供框架。开发人员通常会在 GWT 上构建一个小型框架以满足他们的需求。MVP 模式一直非常强调构建应用程序,但这并不是使用 GWT 的唯一方式。

卡布奇诺是一个框架。它具有构建应用程序的规定方式。此外,它还提供库来执行高级任务,如动画、拖放撤消/重做等。GWT 不为此类任务提供任何库,尽管有第三方库可用。

这意味着 Cappuccino 应用程序往往比相应的 GWT 应用程序更丰富。

离线编译与运行时翻译

GWT 相信在编译时做出决定。浏览器检测、I18N、图像内联、精灵的生成、uibinder 模板评估都在编译时执行。延迟绑定允许开发人员在他们自己的应用程序中利用这个概念。

编辑

默认情况下,卡布奇诺不需要编译。浏览器下载objective-j文件,然后框架在运行时直接翻译/解释它们。但是,可以使用 jake 进行编译。您可以从几个压缩器/压缩器中进行选择,包括google 的闭包编译器

由于这种架构决策,GWT 应用程序在运行时往往比等效的 Cappuccino 应用程序更快。但是,由于编译时间成本,开发往往比 Cappuccino 慢。GWT 开发插件在一定程度上缓解了这种痛苦,但成本并没有完全消失。

由于 GWT 是一个closed-world编译器,它可以删除未使用的代码、内联方法调用、实习生字符串并以 Cappuccino 无法做到的方式优化代码。如果 Cappuccino 引入编译步骤,它可以执行相同的优化;但据我所知,没有办法在编译时进行翻译。

对于可选的编译步骤,这一点变得没有意义。但是,与 GWT 应用程序相比,不执行此类编译的卡布奇诺应用程序的性能会很差。

类型安全

GWT 是 java 的,因此是类型安全的。Objective J 是 javascript,因此是动态类型的。这有其优点和缺点,由于是宗教讨论,我将不做判断。

调试

GWT 提供了一个浏览器插件,可以帮助开发人员直接调试 Java 代码。在开发模式下,开发人员可以看到 java 堆栈跟踪。然而,在运行时,生成的 JS 代码会被混淆,并且很难调试(尽管有一种方法可以告诉 GWT '不要混淆我的代码')。

使用超级开发模式,现在可以直接从 Web 浏览器调试 Java 代码。

Cappuccino 没有开发模式,这意味着你必须使用现有的工具如 firebug 来调试。错误由浏览器报告,要调试代码,您必须使用 JS 调试器。

单元测试

使用 GWT,您可以编写不需要浏览器运行的纯 java 单元测试用例。这具有明显的优势——速度和重用现有基础设施的能力是其中的一部分。当您确实需要浏览器进行测试时,您可以从 GWTTestCase 或 HTMLUnit 中进行选择。也可以使用 Selenium 进行测试。

卡布奇诺应用程序可以使用OJTest进行测试。不幸的是,我找不到太多关于这个主题的文档,所以不能发表太多评论。当然,你总是可以使用 Selenium 来测试你的 webapp。

与 Javascript 的互操作性

GWT 提供了一种与现有 JS 库对话的方法 - 它称为Javascript Native Interface。它成熟且运行良好,但不是很直观。Objective Jjavascript,所以你不需要做任何特殊的事情来与 Javascript 进行互操作。

想象

我不能支持这个论点,但 GWT 倾向于专注于创建高性能 Web 应用程序,而不关心外观和感觉。他们从不在性能上妥协。另一方面,Cappuccino 倾向于关注更高级别的功能和框架,并在运行时性能上妥协。

因此,Cappuccino 应用程序看起来更丰富,但需要一段时间才能加载。GWT 应用程序加载和响应速度更快,但看起来很无聊。我敢肯定,您可以解决这两个问题 - 但这就是开箱即用的方式。

社区支持和支持

GWT 由 Google 提供支持。他们对 GWT 的承诺非常坚定。Google 的较新应用程序(Wave、Adwords、Orkut)是基于 GWT 构建的。Google IO 已经在 GWT 上举行了几次会议。用户论坛非常活跃且响应迅速,工具包本身由 Google 和开源社区积极开发和维护。Cappuccino 用户组没有那么活跃,成员也少得多。

于 2010-05-30T06:42:46.573 回答
5

与 GWT 相比,我对 Cappuccino 的经验要丰富得多,但从外观上看,GWT 看起来非常快且相当健壮。毕竟,它得到了互联网领域相当大的玩家的支持。Google IO 上的演示令人印象深刻。尽管这可能会改变,但 GWT 应用程序在今天的加载时间和部署规模方面完全将 Cappuccino 抛诸脑后。

也就是说,我选择 Cappuccino 有两个原因:首先,虽然 GWT 是一种经典的“足够好”的工程解决方案,但 Cappuccino 直接针对“只有最好的才足够好”的人群。我相信使用 Cappuccino,您可以达到以前在网络上很少见到的标准。不仅在漂亮的像素上,而且在原始功能和力量方面,一切都在“桌面质量”水平上运行。拖放、撤消堆栈、流畅滚动和调整大小、拆分窗格等等。GWT 正在迎头赶上,正如在 Google Wave 中看到的那样,但它还有很长的路要走,而且 Google 历来不太关心润色。例如,这在 Gmail 中是可见的,经过这么多年,它在用户交互中仍然不仅看起来单调而且笨拙。

我选择 Cappuccino 的第二个原因是 Java 以其不灵活、荒谬的冗长和难以理解的风格让我发疯。但这可能只是我。

于 2010-05-29T02:47:38.373 回答
0

你可能对我的新 GWT UI 框架,CappuccinoGWT感兴趣

于 2012-02-02T08:32:54.403 回答