GWT 与 Cappuccino

标签 gwt cappuccino

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




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

最佳答案

工具包v/s 框架

GWT 是 toolkit .它的优势在于它提供的用于创建应用程序的工具。但它不提供框架。开发人员通常会在 GWT 上构建一个小型框架来满足他们的需求。构建应用程序的 MVP 模式受到了很多重视,但这并不是使用 GWT 的唯一方法。

Cappuccino 是 Framework .它具有构建应用程序的规定方式。此外,它还提供库来执行高级任务,如动画、拖放撤消/重做等。GWT 不为此类任务提供任何库,但第三方库可用。

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

离线编译与运行时翻译

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

编辑

默认情况下, Cappuccino 不需要编译。浏览器下载objective-j 文件,然后框架在运行时直接翻译/解释它们。但是,可以 compile using jake .您可以从多个压缩器/压缩器中进行选择,包括 google's closure compiler .

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

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

通过可选的编译步骤,这一点变得毫无意义。但是,与 GWT 应用程序相比,不执行此类编译的 Cappuccino 应用程序将具有较差的性能。

类型安全

GWT 是 java - 因此是 type safe . Objective J 是 javascript,因此是动态类型的。这个有自己的advantages and disadvantages ,既然是宗教讨论,我就不做判断了。

调试

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

使用 super-dev-mode现在可以直接从 Web 浏览器调试 Java 代码。

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

单元测试

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

可以使用 OJTest 测试 Cappuccino 应用程序.不幸的是,我找不到有关该主题的太多文档,因此无法发表太多评论。当然,您始终可以使用 Selenium 来测试您的 web 应用程序。

与 Javascript 的互操作性

GWT 提供了一种与现有 JS 库对话的方法——它被称为 Javascript Native Interface .它已经成熟并且运行良好,但不是很直观。 Objective J 是 javascript,因此您无需执行任何特殊操作即可与 Javascript 进行互操作。

愿景

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

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

社区支持与支持

GWT 由 Google 提供支持。他们对 GWT 的 promise 非常坚定。来自 Google 的较新应用程序(Wave、Adwords、Orkut)基于 GWT 构建。 Google IO 已经就 GWT 举行了几次 session 。 user forum非常活跃且响应迅速,工具包本身由 Google 和开源社区积极开发和维护。 Cappuccino user group不那么活跃,成员也少得多。

关于GWT 与 Cappuccino ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2933266/

相关文章:

java - 将 Javascript 代码插入脚本元素以设置窗口栏

javascript - Objective-J 的文档记录如何?文档是否足以开始认真使用它?

ruby-on-rails - 将 Cappuccino 与 Ruby on Rails 集成

cappuccino - 在 Cappuccino 上调整大小处理程序

打开项目文件时 Xcode 崩溃

java - 如何设置 GWT Datepicker 月份标签的格式?

java - 在 GWT 应用程序中外部化 HTML 的最佳方法?

cappuccino - 如何使此代码符合 KVO?

java - 检测 sencha ext-gwt 3.0 树中的删除目标节点

java - 将 mysql 查询结果推送到客户端 GWT