问题Why should I use jQuery instead of GWT?可能已过时(作为答案)。如今,most of the其他SO相关问题也可能已过时。所以,让我们更新state of the art关于新项目的GWT相关性。
现在GWT更加成熟
自2009年问答以来,GWT已经发展,一些JS框架以Java形式提供:
甚至更多,Java代码可以转换为独立的JS库:gwt-exporter
但是低级JS框架可能就足够了
但是我阅读的内容越来越多,我看到Web开发人员建议他们退回GWT并直接使用JS框架(Firebug,JS框架的IDE插件......)。
生产力
但是,我喜欢使用相同的IDE(Eclipse,Netbeans,IntelliJ IDEA ......)进行开发和调试的想法。我认为我会更有成效......我也应该考虑文档和社区(论坛反应性就这个SO问题而言)......
问题
我的具体案例
我刚刚完成了基于Python3(http.server.HTTPServer
)调用(POST)bash
脚本(在C ++中进行一些处理)和检索JSON数据的POC(内联网Web应用程序)。网页中的一些JS(无框架)用于渲染。所以我想知道下一次迭代的最佳选择。
但是也请回答关于其他案件的这个问题。我希望一般性问题/答案对更多人有用。
2015年10月更新
GWT看起来不太活跃,因为自11个月以来没有新发布。但过去直到13 months between versions 2.4 and 2.5。 Git repo mirror仍然非常活跃。此外,GWT是可扩展的,并且新功能可以来自GWT库而无需新的GWT框架发布。例如,参见most common mobile GWT libraries以及相应的发布周期。与此同时,趋势是在任何地方使用Node.js!新项目采用GWT实际上取决于开发人员的技能/动力和项目生命周期(周转/培训/维护)。还可以考虑重用可用源代码和上市时间等其他标准......请参阅以下优秀答案。
答案 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点:
答案 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,它更快,如果你使用J2ObjC,你可以在jvm和ios上重用你的代码
使用GWT有一些非常令人信服的理由 - 爪哇 - 从其他平台重用您自己的代码。例如,谷歌收件箱使用GWT在网络上重用大部分的Android代码,并在iPhone(感谢J2ObjC)和服务器上再次使用它的代码(感谢JVM能够在许多不同的平台上运行)。 - 使用Java库和工具,java开发人员 - 许多开发人员更喜欢java和js,并且有充分的理由喜欢它 - 从头开始构建复杂,高性能的Web应用程序。 - Java代码更清晰,更易于维护
根据google trends和indeed job trends,GWT一直在下降,但javaScript和jQuery也在下降。我不知道为什么这些技术都会崩溃。我的理论是,有很多新的框架正在从GWT和javaScript中窃取开发人员。我认为这并不一定意味着javaScript和GWT即将死亡。这只不过是竞争激烈的结果。