有没有人使用GWT并且可以说它真正实现了它所承诺的东西?

Avi*_*i Y 28 javascript java gwt

我是一名Java Web开发人员,而且作为大多数Web开发人员,我使用了大量的JavaScript.即使我不像许多其他Java开发人员那样讨厌JavaScript,我仍然意识到它的错误.

GWT是一种使用java编写javascript的方法.由于我很长时间都认识这两种语言,所以我对这种说法持怀疑态度.我的意思是,我很难相信你可以使用GWT真正创建具有丰富GUI的完整Java动态Web应用程序.这就是为什么我在这里询问是否有人有机会在大型项目上与GWT合作.如果是这样,我真的很想听听他们对此的看法.

Chi*_*Chi 38

我在GWT中编写了相当大的应用程序,我不得不说GWT比项目开始时给我的印象更深刻.我对平台的一般'感觉'是事情经过深思熟虑,除非他们做得好,否则他们不做事,并且可以在所有浏览器上做得很好(IE用户仍然是你的用户!)

现在,请记住,GWT真正擅长的是创建大型,高度动态的单页面样式的webapps.如果你的目标是增强一个带有一些javascript效果的静态页面,那么GWT就是大规模的过度杀戮(gquery可能会改变这个,但我没有gquery的经验)

我喜欢的一些功能包括:

  • 能够在服务器端和客户端之间共享代码.(当然,如果你的服务器端是用java编写的).我没想到最初会使用这个,但在实践中,它确实可以节省大量的代码重复.但是,我发现一般情况下,这仅适用于使用GWT编写的代码 - 使用未编写GWT的代码通常不能很好地工作.这是因为GWT只有JDK中的类的子集,而在javascript中,您必须比在服务器端更多地关注性能.
  • 它旨在实现最快的javascript,比你手工编写的更快(因为如果你手工编写它,代码将无法维护).不幸的是,许多人使用的浏览器具有令人难以置信的慢速javascript引擎,因此javascript代码的性能非常重要.Gwt的编译器是一个真正的优化编译器 - 它将内联方法,实习所有字符串.尽可能虚拟化方法调用等.因为您正在为每个浏览器和语言环境进行编译,所以编译器还可以内联特定于浏览器和特定于语言环境的代码.这个Google I/O演示文稿中有一些基准测试.
  • 它还会自动将您的图像精灵拼凑在一起,以最大限度地减少所需的http请求数量,从而再次提高您网站的速度.GWT 2.0允许您将任意文件组合在一起.
  • gwt创建的大多数文件都有一个强大的哈希值作为文件名,这样可以让你设置永久缓存的文件,但如果文件发生变化则不必担心人们会使用旧版本
  • GWT 2.0中的代码拆分非常令人印象深刻,并且很难手工完成.随着应用程序的大小增加,处理javascript的大小越来越重要,并且您需要能够将其拆分为块
  • 您使用静态类型语言编码.我知道有些人更喜欢动态打字,但我喜欢将这场辩论与emacs vs vi辩论进行比较 - 两个阵营都有很多聪明人,并且在互联网上争论并不会改变任何人的偏好
  • 您可以使用java生态系统中存在的许多优秀工具,这些工具通常比等效的javascript工具更成熟. - junit,java IDE,java调试器,重构等.

  • 哦,我猜最大的缺点是: - 编译时 - 托管模式很棒,但你现在无法将它用于系统非默认浏览器 - GWT 2.0和进程外托管模式应该解决这个问题. - java语言有时可能很冗长,尽管这远非一个showstopper.(scala的gwt会非常好:)) (3认同)

Kel*_*ton 5

如果您熟悉JavaScript和Java,那么您真的非常适合充分利用GWT.许多人没有意识到GWT是非常好的分层,你可以真正决定你想要在哪个级别工作.

例如,我有时直接针对项目编写DOM库.这很像编写JavaScript代码,除了你能够正确使用IDE并获得编译器的强大功能.从编译器我得到静态类型检查,许多良好的编译器优化,以及(实际上我最喜欢维护代码)调试模式断言.没有人能真正做出很多断言的能力,但是能够编译一个调试模式是非常好的,它可以进行昂贵的检查以排除错误,然后关闭调试模式并让代码消失.(不仅断言语句消失了,而且从断言中可以获得的所有代码也被编译出来).

其他时候,我针对GWT的UI库编写代码.该代码看起来有点像swing或SWT代码,因此对于纯Java开发人员来说它是最舒服的.在这个级别工作,您不必担心DOM,并且通常可以在不编写任何JavaScript的情况下构建应用程序.您偶尔会遇到一个错误,在某个浏览器上某些内容无法正常运行.GWT人员会考虑这些错误.

您可以选择想要使用的抽象级别.每个级别都有权衡,但GWT应该支持它们.

另外,完全披露:我是上面链接的视频中的家伙,所以你可能会说我非常依赖GWT.