49

问题为什么我应该使用 jQuery 而不是 GWT?可能已过时(作为其答案)。现在,大多数其他 与SO 相关 问题也可能已经过时了。因此,让我们更新有关 GWT 与新项目相关性的最新技术。

GWT 现在更成熟了

自 2009 年问题/答案以来,GWT 已经发展,一些 JS 框架在 Java 中可用:

更重要的是,Java 代码可以转换为独立的 JS 库:gwt-exporter

但是底层的 JS 框架可能就足够了

但是我读的越多,我看到的 Web 开发人员越多地建议放弃 GWT 并直接使用 JS 框架(Firebug,JS 框架的 IDE 插件......)。

生产率

不过,我喜欢使用相同的 IDE(Eclipse、Netbeans、IntelliJ IDEA...)进行开发和调试的想法。我我会更有效率......我还应该考虑文档和社区(对于这个 SO 问题的论坛反应)......

问题

  1. 对于什么样的 2014 年新项目 GWT 应该(或不)考虑?
  2. 是否有GWT 的相关替代方案可以轻松进行 AJAX Web 应用程序开发和部署?
  3. 目前的模式和趋势是什么?

我的具体情况

我刚刚完成了一个基于 Python3 ( http.server.HTTPServer) 调用 (POST)bash脚本(在 C++ 中进行一些处理)并检索 JSON 数据的 POC(一个 Intranet Web 应用程序)。网页中的一些 JS(无框架)用于渲染。所以我想知道下一次迭代的最佳选择。

但也请回答这个关于其他案例的问题。我希望一个一般性的问题/答案对更多人有用。


2015 年 10 月更新

GWT 看起来不太活跃,因为自 11 个月以来没有新版本。但在过去直到2.4 和 2.5 版本之间的 13 个月Git repo 镜像仍然非常活跃。此外,GWT 是可扩展的,新功能可以来自 GWT 库,而无需发布新的 GWT 框架。例如,参见最常见的移动 GWT 库和相应的发布周期。与此同时,趋势是到处使用 Node.js!新项目采用 GWT 确实取决于开发人员的技能/动机和项目生命周期(营业额/培训/维护)。还可以考虑其他一些标准,例如重用可用源代码和上市时间……请参阅下面的优秀答案。

4

5 回答 5

43

对于第 1 点,我可以给你一些我会使用的标准:

使用基于 JavaScript 的框架时,您通常在初始创建代码时非常快。根据我的经验,在维护(错误修复、新功能、重构)方面你要慢得多,因为工具支持不如静态类型语言那么好。所以对于更大或更长时间运行的项目,我总是选择 GWT,因为 Java 和它的编译器检查/生态系统/工具。我认为随着时间的推移,您将受益于更高的开发效率和扩展性,因为您不会因动态类型而遇到奇怪的问题。对于不会存在太久或不需要大重构的小型项目,JavaScript 框架可以大大提高开发速度。

在目标平台的上下文中调试需求也是我的标准。只要您拥有 DevMode 支持的浏览器,或者至少可以与基于 SuperDevMode 的新源映射一起使用,调试 GWT 代码就非常好。例如,不支持 MacOS X 上的 Safari。对于移动设备,您可以在 Android Chrome 上远程调试 JavaScript,但据我所知,这对于 GWT 是不可能的。

我的另一个标准是团队规模和周转率。基于 Java 的工具(IDE、代码质量检查器等)帮助开发人员,尤其是新开发人员浏览其他开发人员的代码。这也适用于其他静态类型语言,但您要求使用 GWT/Java。

下一个是堆栈问题...如果在服务器端使用 servlet 容器,GWT 很容易解决客户端和远程通信部分。它也很容易与成熟的 Java 企业技术(JPA、EJB、Spring 框架……)相结合。如果您需要/想要拥有堆栈,这是一个很大的优势。如果您要在服务器端不使用 JVM(如上所述)使用多种语言,那么这个不适合您。

当然,GWT 和 JavaScript 框架都有更多标准。

最大的问题是关于偏好。JavaScript 有非常好的概念(例如闭包),但由于它是动态类型,它也存在风险。你更倾向哪个?

关于第2点:

我不确定是否有提供类似功能和工具的 GWT 真正替代品。大多数其他框架只关注一个方面(小部件、优化、数据绑定、远程通信、浏览器支持、I18n,...)。这并不意味着其他框架不好,但您通常需要组合不同的框架来获得 GWT 提供的功能。

关于第 3 点:

  • 我肯定会看看 TypeScript,因为它改进了打字和与 JavaScript 的互操作性
  • 据我记得,Dart 也有类似的目标
  • 常青树是 JQuery,但根据您的需要,有很好的选择。但这是非常主观的
  • 对于小部件,Twitter Bootstrap ( http://getbootstrap.com/ ) 很好,如果它的做事方式适合你。甚至还有一个 GWT 版本(http://gwtbootstrap.github.io/
于 2013-11-20T22:01:41.337 回答
7

斯蒂芬的回答很好。我开始输入它作为对他的评论,但发现我输入的内容超出了我的预期,因此将其作为单独的答案。不是为了积分...

我只是想补充一点我的主观观点。现实情况是,大多数开发人员都是所谓的后端开发人员,没有知识、经验,最重要的是没有开发 Web 前端的愿望。美国 IT 市场的现实是,大多数人在简历中更喜欢 Java,而不是 JS、PHP、Python 和其他外来语言。原因是补偿。Java 开发人员平均获得更高的报酬。其他国家不清楚。

因此,公司中的大多数开发人员都是 Java 开发人员(或 .NET,不在此讨论范围内)。为了使它们在 UI 上工作,您必须使用与 Java 兼容的技术,即 JSP 或 GWT。JSP 需要学习 JS 库以使前端或多或少像样。

显然,如果你想用独特的 UI 给公众留下深刻印象,你必须使用允许更多定制的 JS 库。JSP 和 GWT 都可以工作,因为大部分工作都将在 JS 中完成。正如我上面提到的,很少有公司会有经验丰富的 JS 开发人员。

尽管大多数应用程序都是为内部使用而编写的,而不是面向公众。根据您的描述,您的用例可能属于此类别。

内部非公开的工具通常比公共网站具有更复杂的功能,但只要功能存在并且便于内部使用,它们的设计要求就会更加宽松。

在这种情况下,您可以使用 GWT,它对 Java 开发人员来说比 jQuery 和高级库(例如具有标准主题的 GXT)更不陌生。

对我们来说,带有 GXT 的 GWT 是一种创建一组内部应用程序的简单快捷的方法。凭借我们公司拥有的 Java 开发人员团队,我们永远无法在同一时间段内接近项目的质量甚至完整性。

于 2013-12-04T16:59:41.053 回答
2

只需前往:GWT 示例页面,展示 GWT 应用程序的真实示例

只需阅读这些示例的超重量级性质即可。

GWT 本身并不是那么轻巧,我怀疑它是为创建日期选择器而设计的。GWT 也完全不同于 jQuery。它可能更类似于 JSF2 而不是 jQuery。“我应该使用 GWT 还是 jQuery”这个问题可以这样回答:

如果你想在这里和那里添加日期选择器、一些效果、可排序的表、自动完成。您可能应该使用 jQuery。

如果您想弄清楚是否要使用 GWT 作为前端模板/引擎机制,您应该考虑其他实际上可比的。在讨论 java 时,可能 JSF2 是您唯一的选择。JSF 的学习曲线很陡峭。

我正在深入挖掘,我发现了一个悲伤的帖子:

http://polygoncell.blogspot.mx/2013/07/gwt-for-new-project-no-thanks.html

我来到这个页面是因为我正在阅读即将推出的项目,如 AngularJS、Backbone、单页应用程序 (SPA):简而言之,谷歌放弃了 GWT。GWT 现在是开源的,因为他们只是放弃了它。现在 AngularJS 得到了谷歌的大力推动。

编辑我们亲爱的安德鲁告诉我“证明我的观点”

这是用于评估技术是否具有竞争力的算法。

1)去你最喜欢的工作地点

2) 搜索 {您感兴趣的技术} 工作

3)查看开口数量,相关技术要求等

4) 对竞争技术重复 #2 和 #3

5) 评估

今天 2016 年 5 月 19 日,我在上班时找GWT工作。

工作:23。

我找angularjs工作。

乔布斯:1338。没错。一千三百三十八。

点证明?

于 2014-07-15T17:44:07.550 回答
1

我想回答第 1 点,你必须看看你目前的情况是什么,你的目标是什么。

如果您有一个开发人员团队在他们的职业生涯中大部分时间都在使用 Java,那么您可能会期望他们有 6 个月的时间来学习 JavaScript 的范例。如果您有使用 Groovy 或 Clojure 等语言的经验,您可能会减少一些时间。因此,如果您不希望该项目持续超过一年左右,那么 GWT 可能是您要走的路。

相反,如果你有一个 JS 开发人员团队,他们可能会发现静态类型系统相当令人沮丧,并且学习有效地使用它可能需要半年时间。因此,如果是这种情况,那么您可能不想将 GWT 用于任何学习曲线超过生产力的新项目。

我不太确定第 2 点在问什么。如果您要询问整个堆栈框架,我猜您可以使用 nodejs 找到一些东西,尽管我认为我没有足够的经验来提供建议。

在我工作的第 3 点上,我们似乎正朝着使用 JS 框架(尤其是 AngularJS)的方向发展,其中一些(新)服务器/服务是用 Python 和 Groovy 编写的,而遗留系统仍然是用 Java 编写的。我们还使用 Clojure 编写了一些服务。

于 2014-09-13T10:51:16.323 回答
0

GWT 是相关的。它有 130,000 名开发人员在使用它。如果您不相信我,请看 [GWT is come back in .. in 2015][blog.xam.de/2014/02/gwt-is-coming-back-in-2015.html] 和另一个 stackexchange 问题其中谈到了这一点。GWT 不应该是您的首选,因为它增加了很多复杂性。

GWT 适合哪些项目?GWT 要复杂得多

  • Java 是一种更难的语言,因此很难编写糟糕的代码
  • 编译成 javaScript 会增加复杂性
  • GWT 是为极其复杂的 Web 应用程序从头开始构建的
  • GWT 社区比 JavaScript 社区更倾向于优先考虑用户体验和性能而不是开发人员体验

但是,它的代码更干净更易于维护,它是 java,速度更快,如果您使用 J2ObjC,您可以在 jvm 和 ios 上重用您的代码


使用 GWT - Java - 从其他平台重用您自己的代码有一些非常令人信服的理由。例如,谷歌收件箱使用 GWT 在 Web 上重用大部分 android 代码,并在 iPhone(感谢 J2ObjC)和服务器(感谢 JVM 能够在许多不同平台上运行)上再次重用它的代码。- 使用 java 库和工具,java 开发人员 - 许多开发人员更喜欢 java 而不是 js,并且有充分的理由喜欢它 - 从头开始​​为复杂、高性能的 Web 应用程序构建。- Java 代码更简洁,更易于维护

根据谷歌趋势工作趋势,GWT 一直在下降,但 javaScript 和 jQuery 也在下降。我不知道为什么这些技术都在下降。我的理论是有很多新框架正在从 GWT 和 javaScript 中窃取开发人员。我认为这并不一定意味着 javaScript 和 GWT 正在消亡。这无非是更多竞争的结果。

于 2014-11-13T02:02:29.750 回答