GWT仍然适用于大型企业应用吗?

10

我们公司计划开发一款全新的Web前端应用程序。

以下是一些背景信息:

  1. 它必须具有市场化的外观和感觉。
  2. 我们的开发团队没有Java经验,对Silverlight、JavaScript、JQuery或CSS的使用经验有限。
  3. 时间到市场是一个因素。
  4. 我们需要从Oracle数据库中流式传输大量数据。
  5. 它必须支持500-1000个并发用户。
  6. 它将被内部防火墙所托管。
  7. 我们需要地图(地理空间)功能。

有人建议使用GWT而不是Silverlight或传统技术(JavaScript、JQuery、CSS等)。

我不确定这是否是正确的选择?很多关于GWT的新闻都来自于2007/2008年。这让我觉得这项技术已经过时,甚至可能已经停滞不前。

如果你可以选择,你会选择GWT吗?


参见:https://dev59.com/dHRB5IYBdhLWcg3wAjbR - Ryan
  1. 如果GWT是为应用程序的客户端而设计的,那么它就没有任何关联。
- TheHippo
7个回答

18

很遗憾,在这种情况下,您的两个陈述是相互矛盾的:

  • 我们的开发团队没有Java经验
  • 时间对市场推出非常重要

我是一名Java程序员,最近一年左右开始学习GWT。使用编译语言和成熟的开发工具直接编写到浏览器中非常有效。我可以比以前更快地进行Web开发(使用ASP、JSP、ExtJS等)。

但正如其他评论者所说:如果您没有Java经验,那么在短时间内同时学习两种技术(Java和GWT)将是一个真正的挑战。如果您确实设法在合理的时间内上市,我只能想象代码库会非常糟糕(因为您正在学习),这将是组织新企业的非常糟糕的基础。

另一方面,您也没有其他相关技能的“很多”能力。

我认为有更有效的解决方案。就像一些明智老绵羊项目经理所说:

我有三个变量来交付您的项目:时间、成本和质量。选择其中任意两个

在您的情况下,如果组织希望在短时间内获得高质量的产品,则成本因素必须弥补 - 您的组织应该购买一些临时的GWT专业知识,以提供您一个坚实的软件架构并为您的团队指导几个月。之后,您将准备好接管,并通过“站在巨人的肩膀上”继承高质量的代码库。


谢谢ianmyo!还有其他所有人...至少我现在知道这是一个可行的选择。 - Joyce
1
很好的答案...感谢您对我的回答进行编辑;-) - GhostCat

12
像其他人所说,GWT绝对不是一个濒临死亡的项目。实际上,现在有超过20名来自Google内部的常规贡献者(相比2008年的半打)。Wave(尽管作为Google服务已经停止,但仍然作为Apache基金会项目存在),Orkut,AdWords,Google Moderator和新的(仍处于测试版)Google Groups都使用了GWT;Google Buzz的一些部分和Google的其他项目也使用它构建。

现在关于你的选择:

  • Silverlight是一种濒临死亡的技术。微软明确表示,它现在投资于“HTML5”:http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834
  • GWT主要是一个客户端工具包,但它配备了用于客户端服务器通信的“高生产力”工具(GWT-RPC和RequestFactory用于端到端协议,AutoBeans用于简单的JSON序列化)。通过UiBinder,您可以轻松地利用您的Web设计技能。
  • 如果您熟悉JS,那么就去吧,但是您必须选择“正确的工具包”(jQuery?Google Closure?)。否则(似乎是这种情况),这真的取决于您需要/想要多少“ajaxy”。我坚信“单页应用程序”,但您的情况可能有所不同,或者您可能有特定的约束条件。无论如何,您都必须选择一种服务器端技术。
根据您的需求、愿望和技能,我会选择GWT或“某个JS工具包”。无论如何,您都将完全控制外观和感觉(除非您选择其中一个臃肿的播放器:ExtJS / ExtGWT,SmartGWT或类似产品;这些可能会缩短上市时间,但以后会在性能、与其他工具包的集成和外观和感觉方面付出代价)。
鉴于您所说的技能情况,尽管您缺乏Java经验,我一定会推荐GWT;因为缺乏JavaScript经验比缺乏Java经验更糟糕(您谈到了一个“大型应用程序”,因此开始正确构建事物和/或拥有帮助重构的工具非常重要,这些都可以通过Java实现)。
@ianmayo在我写上述内容时回复了,我只能赞同他所说的!

6
GWT绝对不是老旧或垂死的技术!许多谷歌自己的应用都是使用GWT开发的。您可以下载GBST案例研究,了解全球金融公司如何使用GWT提高生产力并创建丰富的用户体验。您必须知道,当您使用GWT时,自动使用javascript、html等技术。您可以使用Java创建GWT应用程序,但是当您编译它时,GWT会生成一个包含html文件、javascript代码、css等的文件夹... 我强烈推荐它!

谷歌自己的很多应用都是使用 GWT 开发的。我确实听说过这样的话,但我没有看到实际的例子。提到了 Google Wave,但那已经被放弃了。谢谢,我会查看你提到的案例研究。 - Joyce
我不确定有哪些应用程序,但我知道Java是Google使用最多的编程语言。这意味着什么... - tim_a
新的Google Analytics UI是使用GWT实现的。该过渡由项目负责人在YouTube上的Google IO视频中描述。 - ianmayo

6
为了不误导读者,保持在受尊敬的stackoverflow中客观的观点。以下评论表达了我使用GWT时遇到的确切经验。GWT是否正在消亡取决于有多少新应用程序将采用它,Google趋势可以说明(gwt trend)。
摘自https://softwareengineering.stackexchange.com/questions/38441/when-not-to-use-google-web-toolkit 我对回答这个问题既有利又有弊 - 优点在于我以前使用过它,缺点在于在使用GWT之前我已经非常熟悉HTML / CSS / JavaScript了。这使得我使用GWT的方式让其他不太了解DHTML的Java开发人员感到疯狂。

GWT做到了它所说的 - 它将JavaScript和某种程度的HTML抽象为Java。对于许多开发人员来说,这听起来很棒。然而,正如Jeff Atwood所说,我们知道所有抽象都是失败的抽象(如果考虑GWT,则值得一读)。使用GWT会特别引入以下问题:

GWT中使用HTML很糟糕。

就像我说的那样,它在某种程度上甚至抽象了HTML。对于Java开发人员来说,这听起来很好。但事实并非如此。HTML是文档标记格式。如果您想创建Java对象来定义文档,则不会使用文档标记元素。它令人疯狂地冗长。它也没有足够的控制力。在HTML中,基本上只有一种方法可以编写

<p>Hello how are <b>you</b>?</p>

在GWT中,您有3个子节点(文本、B、文本)附加到P节点。您可以首先创建P,也可以首先创建子节点。其中一个子节点可能是函数的返回结果。经过几个月的开发和许多开发人员的努力,通过跟踪GWT代码来解释HTML文档的外观是一种令人头痛的过程。

最终,团队决定也许使用HTMLPanel来处理所有HTML是正确的方法。现在,您失去了许多GWT的优点,即将元素轻松地提供给Java代码以便于数据绑定。

GWT中使用CSS很糟糕。

通过与HTML抽象相关联,这意味着您必须使用CSS的方式也不同。自从我上次使用GWT(大约9个月前)以来,它可能已经得到了改善,但当时,CSS支持一团糟。由于GWT让您创建HTML的方式,因此您经常会遇到您不知道注入哪些节点的级别(任何CSS开发人员都知道这会严重影响渲染)。有太多嵌入或链接CSS的方式,导致名称空间混乱。除此之外,您还有精灵支持,这听起来很好,但实际上会改变您的CSS,并且我们在写入属性时遇到了问题,稍后必须明确地覆盖它们,或者在某些情况下,阻碍了我们匹配手工编码的CSS并不得不以GWT不会破坏它的方式重新设计它。

问题的并集和利益的交集

任何语言都将具有自己的一组问题和优点。是否使用它是基于这些问题和优点的加权公式。当您有一个抽象时,您得到的是所有问题的并集和所有利益的交集。 JavaScript有它的问题,并且通常受到服务器端工程师的嘲笑,但它也有很多对快速Web开发有帮助的功能

在GWT中使用HTML很糟糕。GWT中的UI Binder意味着您可以在HTML中设计UI并利用对象来表示元素。 - Rebzie
引述者的经验来自于2010年初,此时还没有GWT 2.0中的UiBinder。UiBinder解决了"GWT中的HTML/CSS不太好用"的问题,并实现了UI与逻辑之间的关注点分离。 - Aleksandr Dubinsky

4
首先,GWT 不是一种过时的技术,它的使用率在逐渐增加,其最新版本是 2.2。我已经使用 GWT 两年了,从版本 1.6 开始。自那以后,它的改进非常惊人。
由于 GWT 是客户端技术,它对应用程序的可扩展性只有积极的影响。因为像 jsf、struts 和 wicket 这样的服务器端 Web 技术会消耗服务器资源,而 GWT 不需要任何服务器资源来渲染用户界面。
但是你的团队存在一个问题。因为你们没有 Java 经验,所以要适应新的技术 Java 和 GWT 会比较困难。如果你们有时间学习,我强烈建议学习 GWT。

1

学习GWT需要大约1年的时间。如果您开发的应用程序像MicrosoftOffice或PhotoShop一样复杂,使用GWT会很有价值。对于小型和相对简单的应用程序来说,使用GWT是没有意义的,我认为99%的Web应用程序不需要使用GWT。GWT确实是一个浪费时间的框架,您必须有非常强烈的理由才能使用它。


这可能就是总结了。 - Aleksandr Dubinsky

-1

GWT并不是一个即将消亡的框架,但它却是一个浪费时间的框架。它存在安全问题。你可以轻松地对GWT应用程序进行CSRF(跨站点请求伪造)请求。此外,Java和Javascript是完全不同的语言,你无法轻易地进行翻译。为了提高生产力,请避免使用GWT。


1
我猜你得学习一下跨站请求伪造(XSRF),才能了解到任何网站都有潜在的漏洞,除非你保持良好的实践。对于GWT来说也是如此,但至少有人指出并且鼓励这样做。 - koma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接