将Google Web Toolkit(GWT)用作完整的Java Web框架是否有意义?

时间:2009-04-13 16:40:32

标签: java gwt wicket web-frameworks

我感兴趣的是GWT可以作为我整个表示层的基础。

我很想知道是否有人成功地尝试过这种方法 - 或者说没有成功 - 并且可以说服或不会让我试图这样做。

7 个答案:

答案 0 :(得分:7)

大约一年前我和GWT合作过。当时它似乎是一个好主意,有许多警告:

  • 我在API的某些部分遇到了“问题”,这可能与你编写的事实有关,就像你在java中实际上你实际上是在为一个单独编译的环境编写代码一样像java一样,所以你做了一些不正确的假设(在这种情况下,将嵌套值传递给前端)。我认为还有一个是重写我的ant脚本,使用32位jvm进行gwt编译。
  • 我花了一些时间试图调整外观 - 我们从未部署完成的项目,所以我不确定这需要多少工作才能达到专业水平,但它似乎(逻辑上)喜欢它可以与调整摆动界面相媲美。也许在视觉上比html更笨拙。
  • 因为ajax在最终产品中对你很隐蔽,所以如果表现不佳,我会对我可能会做些什么感到担心。

话虽这么说,看起来绝对值得玩,我的经历很久很久以前在互联网时代,特别是考虑到它现在可能更加成熟。值得指出的是,它是从大多数MVC框架开发GUI代码的一种非常不同(且令人耳目一新)的方式,值得一看,除此之外别无其他原因。

我的感觉是,如果你正在构建一个具有非常苛刻的图形要求的高负载专业站点,GWT可能不是一个好的选择,否则没问题。

答案 1 :(得分:2)

您提到GWT会处理表示层。你也会用Java做业务层吗?如果是这种情况,我想指向IT Mill Toolkit,这正是如此:它是一个使用GWT来呈现其GUI组件的工具包,允许您完全用Java完成应用程序。我认为它试图硬币的术语是“服务器驱动的RIA”。

我来自PHP背景,但很快就开始喜欢这个工具包了。但是,我不会再说什么,让你做自己的决定可能会更好。

Disclamer:我在IT Mill工作,虽然这与我的观点无关。

答案 2 :(得分:1)

GWT相对较新。随着代码库的增长,编译过程往往变得有点慢。当我们使用它时,我们发现许多问题与更复杂的小部件的布局和渲染,并且模拟器与真实服务器完全不同。另外,我们在使用i18n时遇到了从右到左语言的问题......

总而言之,GWT有(通常?)年轻技术的问题。但是,它确实使某些事情变得非常简单,就像你命名它时的Ajaxifying一样。

答案 3 :(得分:1)

我们已经为一个非常大的项目做了这个,只要你知道它的局限性,优点和缺点,它就会很好。有趣的演示是我们最少的麻烦,因为我们只是像使用CSS一样剥离它,就像任何其他HTML页面一样。该项目上线,运行完美,所以我没有抱怨。

我在这里找到的陷阱你可以在这里找到:

Biggest GWT Pitfalls?

答案 4 :(得分:1)

我们开发了一个大型HR门户应用程序,整个表示层在GWT中完成。后端是春天。这一切都运行良好,UI已经受到用户的好评。非常重要的是,我们很容易添加新功能并维护应用程序。我认为使用Javascript库做一些可比较和可维护的东西要困难得多。

你确实需要某种客户端框架,或者你最终会编写一个(就像我们一样!):我们的应用程序是基于GWT Portlets(免费和开源)构建的。

我们使用HTML片段为不同部署的应用程序设置外观,并将每个“页面”的布局存储在XML文件中。

答案 5 :(得分:0)

答案 6 :(得分:-1)

GWT in it的self是一个UI增强库,而不是一个框架。如果您将它与Google App Engine一起使用,那么您就拥有了一个基本框架。 (这是一个不同的故事,当我看着它时,我决定不将它包含在我们的架构中)。

这是一个很棒的图书馆,我们用它做了一些很棒的事情。然而,由于它是一个库,它只能与您的架构一样好。

对于64位编译器,ANT没有问题。

< java failonerror =" true"叉="真"类名=" com.google.gwt.dev.Compiler" DIR =" $ {dir.GWTCompile}"> < -dir.GWTCompile是包含GWT的目录 - >     <类路径>类路径     < /类路径>     < jvmarg value =" - $ {gwt.maxMem}" />     < arg value =" @ {gwt.baseModule}" />     < arg value =" DEBUG" />     < arg value =" -strict" />   < / Java和GT;

就生成的代码而言,如果您想要查看它,它就在您的战争中。 (它也是开源的,所以你可以在那里查看它。)

GWT在编译过程中做了什么: 它为不同的浏览器集创建了几个JS库副本(编译可能需要几分钟的一个原因),您可以根据需要添加/删除它们。这减少了需要下载的JS包,并提高了速度,因为如果(FF)那就不需要那些讨厌的(EI)。 但是,当您进行本地调试(至少在eclipse中)时,您不必等待,允许将其留给构建服务器(或者当您需要手动构建和部署(neanderthals)时)。

GWT的缺点。由于它是一个javascript客户端(几乎是纯粹的),你不能将它用于不支持它的东西,或支持其中一个版本。 因此,对于像iPad和iPhone这样的东西,如果你不使用旨在弥补这些差距的额外库(如mgwt),你可能会遇到一些问题。