GWT仍然适合新项目吗?

这个问题为什么我应该使用jQuery而不是GWT? 可能已经过时(作为答案)。 而其他大多数 SO相关的问题现在也可能已经过时了。 所以,让我们更新关于新项目的GWT相关性的艺术状态 。

GWT现在比较成熟

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

  • GQueryQuery for jQuery(gQuery)
  • GXT ExtJS(原ExtGWT)
  • 智能GWT已经取代了GWT-ext
  • …当然更多…(请随意追加)

甚至更多的Java代码可以转换为独立的JS库: gwt-exporter

但低级的JS框架可能就足够了

但是我越读越多,我看到网页开发人员build议不要使用GWT,直接使用JS框架(用于JS框架的Firebug ,IDE插件…)。

生产率

不过,我喜欢使用相同的IDE(Eclipse,Netbeans,IntelliJ IDEA …)进行开发和debugging的想法。 我我会更有成效…我也应该考虑文档和社区(对于这个SO问题论坛react native)…

问题

  1. GWT应该(或不)考虑什么样的2014年新项目?
  2. 有没有相关的替代GWT的简单的AJAX Web应用程序的开发和部署?
  3. 目前的模式和趋势是什么?

我的具体情况

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

但是也请回答关于其他情况的这个问题。 我希望一个普遍的问题/答案对更多的人有用。


更新2015年10月

GWT看起来不太活跃,因为11个月以来没有新的发布。 但在过去的13个月之间,版本2.4和2.5 。 Git回购镜子仍然非常活跃。 而且,GWT是可扩展的,并且新特征可以来自GWT库而不需要新的GWT框架版本。 请参阅最常见的移动GWT库以及相应的发行周期。 同时,这个趋势是随处使用Node.js! 新项目采用GWT确实取决于开发人员的技能/动机和项目寿命(营业额/培训/维护)。 还有一些其他标准,如可用源代码的重用和上市时间也可能被考虑在内…请参阅下面的出色答案。

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

使用基于JavaScript的框架时,通常在代码的初始创build中速度非常快。 根据我的经验,在维护(缺陷修复,新function,重构)方面,由于工具支持不如静态types语言,所以速度要慢得多。 所以对于大型或长期运行的项目,我总是会selectGWT,因为它是Java编译器检查/生态系统/工具。 我认为,随着时间的推移,您将获得更高的效率和开发规模,因为您不会因为dynamicinput而出现奇怪的问题。 对于活动时间不长或不需要大型重构的小型项目,JavaScript框架可能会成为开发速度的重大推动力。

目标平台上下文的debugging需求也是我的一个标准。 debuggingGWT代码是非常好的,只要你有一个DevMode支持的浏览器,或者至less可以与基于SuperDevMode的新的源地图一起使用。 例如MacOS X上的Safari不被支持。 对于移动设备,您可以在Android Chrome上远程debuggingJavaScript,但据我所知,这是不可能的GWT。

另一个标准是我的团队规模和stream失率。 基于Java的工具(IDE,代码质量检查器等)可以帮助开发人员,尤其是新开发人员浏览其他开发人员的代码。 对于其他静态types语言也是如此,但是您要求使用GWT / Java。

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

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

而最大的问题是关于偏好。 JavaScript有非常好的概念(例如闭包),但是由于它是dynamictypes,所以也是一个风险。 你更倾向哪个?

关于第2点:

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

关于第3点:

  • 我肯定会看看TypeScript,因为它改进了JavaScript的input和互操作性
  • 据我所知,Dart有一个类似的目标
  • 常青树是JQuery,但依赖于您的需求有很好的select。 但这是非常主观的
  • 对于小工具,Twitter Bootstrap( http://getbootstrap.com/ )是很好的,如果它的方式做事情可以为你。 甚至有一个GWT版本( http://gwtbootstrap.github.io/

斯蒂芬很好的回答。 我开始把它作为对他的评论,但发现我input的比我预想的要多,所以把它作为一个单独的答案。 不寻找点…

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

因此,一个公司中的大多数开发人员将是Java开发人员(或.NET,这是在这个对话之外)。 为了使他们在UI上工作,你必须使用Java兼容技术,这将是JSP或GWT。 JSP需要学习JS库来使前端或多或less地呈现出来。

显然,如果你想用独特的用户界面打动公众,你必须使用允许更多定制的JS库。 JS和GWT都可以工作,因为大部分工作将在JS中完成。 正如我上面提到的,很less有公司会有经验的JS开发人员。

尽pipe大部分申请都是为了内部使用而编写的,而不是面向公众。 从你所描述的,你的用例可能属于这个类别。

内部非面向公众的工具通常具有比公共网站更复杂的function,但是只要function在那里并且便于内部使用,它们的devise要求就更加放松。

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

GWT与GXT的合作对于我们来说是创build一套内部应用程序的一种简单快捷的方式。 有了我们公司的Java开发团队,在同一时间内,我们永远不会接近项目的质量甚至完整性。

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

只要阅读这些例子的超重量的性质。

GWT本身并不是那么轻,我怀疑它是为了创build一个dateselect器而devise的。 GWT和jQuery完全不同。 它可能比jQuery更像JSF2。 “我应该使用GWT还是jQuery”这个问题可以这样回答:

如果你想添加datepickers,一些效果,一个可sorting的表,自动完成在这里和那里。 你应该可以使用jQuery。

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

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

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

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

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

这里是用来评估技术是否具有竞争力的algorithm。

1)去你最喜欢的工作网站

2)search{你感兴趣的技术}工作

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

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

5)评估

今天19. 2016年5月,在上class时我search了GWT工作。

工作:23。

我search了angularjs工作。

工作:1338.是的。 一千三百三十八。

点certificate?

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

如果你有一个开发者大部分的职业生涯都在使用Java,那么你可能需要6个月的时间来学习JavaScript的范例。 如果您有Groovy或Clojure等语言的使用经验,那么您可能会把时间缩短一些。 所以,如果你不希望这个项目持续一年多的时间,那么GWT可能就是要走的路。

相反,如果你有一个JS开发团队,他们可能会觉得静态打字系统相当令人沮丧,学习有效的使用它可能需要半年的时间。 所以如果是这样的话,那么你可能就不会希望将GWT用于任何一个新的项目,而这个项目的学习曲线将超过生产力。

我不确定第二点的问题。 如果你问整个堆栈框架,我猜你可以find使用nodejs的东西,虽然我不认为我有足够的经验来build议。

在第三点,我工作的地方,我们似乎正朝着使用JS框架(特别是AngularJS)以及用Python和Groovy编写的一些(新)服务器/服务以及仍然使用Java的遗留系统。 我们也有一些Clojure写的服务。

GWT是相关的。 它有13万个开发者使用它。 如果你不相信我只是看看[GWT回来了..在2015] [blog.xam.de/2014/02/gwt-is-coming-back-in-2015.html]和另一个stackexchange问​​题谈到这个。 GWT不应该是你的第一select,因为它增加了很多的复杂性。

GWT有什么好的项目? GWT要复杂得多

  • Java是一种更难的语言,很难编写错误的代码
  • 编译为javaScript会增加复杂性
  • GWT是从极其复杂的networking应用程序开始构build的
  • GWT社区倾向于比用户体验和性能优先于开发者体验,而不是javaScript社区

但是, 它更清洁,更易维护,它是java,速度更快,如果使用J2ObjC,则可以在jvm和ios上重新使用代码

有一些非常有说服力的理由使用GWT – Java
– 从其他平台重用您自己的代码。 例如,谷歌收件箱使用GWT在networking上重复使用它的大部分android代码,并在iPhone(谢谢J2ObjC)和服务器(感谢JVM在许多不同平台上运行的能力)上重新使用它的代码。 – 使用java库和工具,java开发人员 – 许多开发人员更喜欢java到js,并有很好的理由select它 – 从复杂的,高性能的web应用程序开始。 – Java代码更清洁,更易于维护

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