您对GWT的体验是什么?

时间:2009-04-07 20:01:08

标签: java gwt

您认为Google Web Toolkit是一个有用的项目吗?是否存在许可问题?

6 个答案:

答案 0 :(得分:6)

GWT非常棒,因为它可以处理许多不同浏览器的问题,如果您不熟悉,可能会非常麻烦。它还有助于以更程序化的方式创建GUI,这也是非网页设计师POV的一大优势。看看GWT的Showcase(其中包含代码的实例),以了解您可以轻松使用(和扩展)的GUI。另一个不错的功能是,您可以轻松地将您的应用程序国际化(阅读this文章,以获得一种方法)。此外,当谷歌编译它时,他们优化代码,这是一个加号。还有很多其他库可以轻松添加功能。

你基本上可以用HTML + JavaScript做任何事情(Steve Reed的例子向你展示了如何在Java中使用JavaScript)。您甚至可以将JavaScript库移植到Java中,并像使用任何Java类一样使用它们。

总体而言,谷歌已经做得非常出色(它在Eclipse中运行得非常好并且有记录)。然而,这是我认真考虑的第一个网络框架(?)所以我认为它非常好并且可能有偏见。需要注意的是:托管模式浏览器本质上是Internet Explorer,因此您需要在不同的浏览器中编译和查看它。

答案 1 :(得分:3)

我们在Google上使用它,虽然我对这个过程的巨大性(计算代码使用的所有Java类的传递闭包,然后转换为JavaScript)保持警惕,但它实际上是一个无缝过渡到使用它UI编程。您需要学习的只是一些特定于GWT的配置(序列化策略可能很粗糙,您必须小心依赖性等),然后您就可以在不考虑GWT及其体系结构的情况下运行。

当我们启动项目时,我没有JavaScript经验,而且我仍然没有JavaScript经验 - 这是一件好事。我从来没有必须检查JavaScript来调试我的程序,部分原因在于可用的优秀调试工具。您可以使用托管模式,它将跳过Java - > JavaScript转换,并允许您在eclipse中保留Java,并按照JavaScript在浏览器中的步骤浏览它。

最后,由于测试绝对会影响您的大型网络应用,因此Selenium可以与GWT共同发挥作用。 Selenium是一个功能性的GUI测试框架,并不替代单元测试,但它是一个非常好的端到端测试,可以补充你的GwtTestCases。

答案 2 :(得分:1)

我已将它用于研究,并发现它是一项很有前景的技术。至于许可,它是Apache 2.0,所以这不应该给你带来问题:

http://code.google.com/webtoolkit/terms.html

答案 3 :(得分:1)

我真的非常不喜欢使用Javascript。 (真的!)另外,我有一个背景,包括使用Java AWT和Swing进行UI编程。所以我发现布局模型非常直观。另外,我很喜欢Eclipse中的自动完成和调试程序。它生成的代码使用相同的跨浏览器。

我在Rails应用程序中使用它,所以我只是将生成的.js文件放在public/javascripts中,在我的布局中需要它,并像往常一样部署。

真正的Javascript程序员通常讨厌它。 Java布局模型非常灵活,但是第一次(第二次,第三次......)你很难看到它。他们也对编译步骤感到恼火。

答案 4 :(得分:1)

如果您想了解GWT社区,建议您查看Google Group for GWT。那里有帖子指向试图显示谁正在使用工具包的页面,人们遇到的问题(以及解决方案!)。

我在我的公司使用GWT,我们取得了巨大的成功。我们迫切需要生成一个基于Web的应用程序,如果没有它我们就无法生成我们已经完成的任务(并且仍然具有相同的总体生产力(感谢IDE),特征速度等... )

答案 5 :(得分:1)

我在目前的工作中使用GWT并喜欢它,因为我现在可以用Java做最好的Javascript忍者可以做的事情。

延迟绑定,它们的引导和缓存优化以及图像包,表明它们对于获得大量性能以及额外的开发工作有多严肃。

但是,需要注意的一点是,要小心将这项技术引入任何正在开发的工作中。我们正在处理一个旧的单片代码库,它产生了大量的HTML文档,其中包含嵌入式javascript,css等等。我选择通过将GWT函数“发布”到窗口来引入一些GWT UI:

public native void publishStuff() /*-{
   $wnd.createGwtUI = @com.acme.foo.MyGwtUI::create();
}-*/;

这些函数从父HTML文档中读取配置。

这个解决方案的稳定性受到底层文档结构的怪癖和缺陷的严重破坏,因此有些人对“跨浏览器”GWT的真实情况有了第一印象。