对于新项目仍然是GET相关的吗?

时间:2013-11-20 12:21:10

标签: jquery gwt extjs gxt gquery

问题Why should I use jQuery instead of GWT?可能已过时(作为答案)。如今,most of the其他SO相关问题也可能已过时。所以,让我们更新state of the art关于新项目的GWT相关性。

现在GWT更加成熟

自2009年问答以来,GWT已经发展,一些JS框架以Java形式提供:

  • GwtQuery用于jQuery(gQuery)
  • 对于ExtJS(前ExtGWT)
  • GXT
  • Smart GWT已取代GWT-ext
  • ......当然还有更多......(请随意附上)

甚至更多,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. 目前的模式和趋势是什么?
  4. 我的具体案例

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

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


    2015年10月更新

    GWT看起来不太活跃,因为自11个月以来没有新发布。但过去直到13 months between versions 2.4 and 2.5Git repo mirror仍然非常活跃。此外,GWT是可扩展的,并且新功能可以来自GWT库而无需新的GWT框架发布。例如,参见most common mobile GWT libraries以及相应的发布周期。与此同时,趋势是在任何地方使用Node.js!新项目采用GWT实际上取决于开发人员的技能/动力和项目生命周期(周转/培训/维护)。还可以考虑重用可用源代码和上市时间等其他标准......请参阅以下优秀答案。

5 个答案:

答案 0 :(得分:43)

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

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

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

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

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

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

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

关于第2点:

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

关于第3点:

  • 我肯定会看看TypeScript,因为它改进了与JavaScript的打字和互操作性
  • 据我记忆,Dart有类似的目标
  • 常青树是JQuery,但依赖于你的需求,有很好的选择。但这是非常主观的
  • 对于小部件,Twitter Bootstrap(http://getbootstrap.com/)很不错,如果你做的事情对你来说是好的。甚至还有GWT版本(http://gwtbootstrap.github.io/

答案 1 :(得分:7)

Steffen的答案很棒。我开始输入它作为对他的评论,但发现我输入的内容超出了我的预期,因此将其作为一个单独的答案。不寻找分数......

我只想添加一个主观点。现实情况是,大多数开发人员都是所谓的后端开发人员,他们没有任何知识,经验,最重要的是希望开发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开发团队,我们永远不会在同一时期内接近项目的质量甚至完整性。

答案 2 :(得分:2)

前往: GWT示例页面showcasing real world examples of GWT applications

请阅读这些例子中超重的特性。

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)评估

今天19。2016年5月,我在搜索GWT个工作岗位。

乔布斯:23。

我搜索了angularjs个工作。

乔布斯:1338。那是对的。一千三百三十八。

点证明了吗?

答案 3 :(得分:1)

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

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

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

我不确定第2点在问什么。如果你问的是整个堆栈框架,我猜你可以找到一些使用nodejs的东西,虽然我不认为我有足够的经验来建议。

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

答案 4 :(得分:-1)

GWT是恰当的。它有130,000名开发人员使用它。如果你不相信我只看[GWT将在2015年重新开始] [blog.xam.de/2014/02/gwt-is-coming-back-in-2015.html]和另一个stackexchange问​​题谈到这一点。 GWT不应该是你的第一选择,因为它增加了很多复杂性。

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

  • Java是一种难以编写错误代码的语言
  • 编译为javaScript会增加复杂性
  • GWT是为极其复杂的网络应用而构建的。
  • 与javaScript社区相比,GWT社区倾向于优先考虑用户体验和性能而不是开发者体验

然而,它更干净,更易维护的代码,它是java,它更快,如果你使用J2ObjC,你可以在jvm和ios上重用你的代码

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

根据google trendsindeed job trends,GWT一直在下降,但javaScript和jQuery也在下降。我不知道为什么这些技术都会崩溃。我的理论是,有很多新的框架正在从GWT和javaScript中窃取开发人员。我认为这并不一定意味着javaScript和GWT即将死亡。这只不过是竞争激烈的结果。