我需要在jQuery和GWT之间为我的新项目做出决定.
我有一段时间没用JavaScript编程,过去几天我一直在研究GWT.它看起来非常棒,为不同的浏览器和所有浏览器生成所有不同的JS,但是:
使用jQuery开发Java需要花费更多时间(至少对于这个项目而言)
文档很差(例如,我应该如何知道在设计页面时我应该使用哪些元素? - 这里没有足够的文档)
我一直在为我的大多数项目使用jQuery而且非常好.
我想说服客户端jQuery更适合这个项目,我需要更多的参数来支持这个.
我会选择JQuery.
我曾经维持过一个GWT项目,最终迫使我重新写两次.首先作为重构的GWT应用程序,在JQuery中排名第二.
我很长时间没有认真对待Javascript.最后一次是2002年.我是一名Java开发人员,所以我对GWT的第一印象非常棒.但那只是印象.
我在GWT找到的问题:
它会强制您遵循其客户端/服务器结构.最后,我想要的是AJAX和那些优秀的小部件.GWT的小部件本身看起来并不那么好看.在美学上,我更喜欢Adobe Flex!但为了使比较更接近,JQuery的UI看起来比GWT更好.此外,您还可以从JQuery获得精彩的Theme Roller支持.
我试过DWR.这很棒.使用DWR而不是GWT在Java代码中启用AJAX要容易得多.
如果你正在使用GWT,最终你将被迫学习JavaScript.SpringSource的Arjen曾经说过XML和SOAP(虽然不是确切的引用):"你如何开发WebServices而不知道XML?SOAP就是XML.你无法避免它".GWT也是如此.它到底仍然是Javascript.
实际上,Javascript与Java相比并不难.更多人了解Javascript而不是Java.即便是网页设计师也知道.你是程序员,你害怕Javascript?
回到项目我改写了.当我重新编写GWT应用程序时,我花了将近两个月的时间来重写它.使用JQuery我花了两个星期,而且我对JavaScript很生气.
使用JQuery,您并不真正编写hardcorde JavaScript.这就是你首先使用JQuery的原因.使用GWT维护代码非常糟糕.你想看看你在代码中做的最新变化......去编译......等待GWT ... 5分钟...冲洗......并重复并希望它不会引发错误.如果是,您将再次重新编译,并等待另外5分钟.冲洗并重复.使用JQuery更改一行,刷新浏览器.完成.
我知道我在这里不客观,但我只是分享我的经验:)道德是不要害怕Javascript.谷歌无论如何都使用Javascript
我建议将GWT用于那些不了解JavaScript但(或许)更熟悉Java的团队.使用GWT,您可能会在兼容性测试中节省数天(如果不是几周),并且可以避免许多人对该语言不熟悉的常见JavaScript陷阱.GWT也有大包装的功能CSS精灵,嵌入式数据,以及更多.
但是,如果您了解并理解JavaScript,我会使用JavaScript,无论您选择哪个库.虽然我没有机会过于仔细地检查GWT生成的代码,但我在Google I/O上看到了一些例子,虽然它看起来很糖果和闪光,但你可能会创建更优雅的JavaScript代码来实现这一目标.办法.
如果您的团队最熟悉Java并且您计划进行大量的客户端功能,那么您至少应该评估GWT.服务器端/客户端之间的类型安全,Eclipse调试和共享代码将让您的Java开发团队感到舒适.
但是,如果您的团队习惯使用jQuery或其他JavaScript库进行JavaScript编程,那么坚持使用纯JavaScript技术可能更容易.GWT有一种接管页面大部分的方法,这是大多数JavaScript开发人员所不熟悉的.通过接管页面,我的意思是典型的GWT代码喜欢创建自己的DOM元素,而不是向页面上的现有元素添加功能.这就是为什么许多GWT应用程序在页面首次加载时都有"加载..."屏幕的原因.这不是必需的,但它是GWT开发中最常见的风格.
生成的代码来自GWT的事实与大多数GWT开发人员的关联性较低.GWT允许您将Java编译为等同于普通java*.class文件的东西,但是使用JavaScript语法,Web浏览器会理解如何解释.GWT更像是编译器而不是模板驱动的代码生成器.有时您需要检查生成的代码,但大多数情况下,您的调试将通过Java调试器以Java形式进行.
另一件需要考虑的事情是,无论您选择哪种客户端技术,您的开发团队都需要熟悉HTML,JavaScript,CSS和浏览器编程.GWT允许您在熟悉的Java环境中编写客户端代码,但它并不掩盖您在浏览器中工作的事实.
首先将GWT与jQuery进行比较没有多大意义.虽然构建jQuery是为了使跨浏览器更容易与DOM一起工作,但GWT是为了创建大型Web应用程序而构建的.
因此,如果你有一些带有一些独立小部件的静态方面,比如日历,滑块等,jQuery就足够了.如果你想构建单页面应用程序,也许是一个庞大的团队,GWT是更好的方法.GWT有很多很好的设计架构,尤其是MVP模式的构建,UI-Binder模板系统,i18n支持等.
因此,当JavaScript开发人员在一个大型GWT应用程序上工作超过一年时,我建议永远不要仅使用jquery构建单个页面应用程序,因为它不是为其构建的.如果您想使用JavaScript,请查看主干,脊椎,淘汰赛或道场.
顺便说一下,构建GWT架构一样好,你将有很多JAVA开销.因此,如果您的项目正在增长,那么编译您的css和i18n属性的时间将会变得烦人.
"马匹课程"
选择对项目最有意义的一个.有些事情需要考虑
时间紧,比较熟悉一个
其他开发人员使用所选工具的速度和可维护性.一个人在另一个人中的流行也可能对此产生影响
有任何可以在项目中使用的代码,例如插件,实用程序功能等.
如果不了解项目的具体内容,您的体验以及客户使用不同技术/框架的开放程度,那么这里就没有决定性的答案.
将这个引人注目的参数列表列在另一个上面,因为我已经从这里开始,然后与参与该项目的其他人讨论得出结论.
答案并不容易.答案是"它取决于":
GWT:
如果你知道并喜欢Java
如果您的服务器代码也是用Java编写的,那么用Java编写客户端代码就可以在客户端和服务器上使用相同的代码
如果你喜欢强类型语言提供的东西:编译时类型检查,自动重构,自动代码生成(Eclipse中的Ctrl + 1),代码完成(Ctrl + Space)
如果你喜欢面向组件的编程(例如MenuBar创建一个菜单)
如果GWT的复杂性(与jQuery相比)对你来说不是问题
如果生成的大代码对你来说不是问题
jQuery的:
如果你知道并喜欢JavaScript
您不需要在客户端和服务器上使用相同的代码(例如,客户端 - JS,服务器 - Java或PHP)
如果您不需要编译时类型检查,自动重构等
如果你不需要面向组件的编程(在jQuery中创建一个复杂的组件,你需要创建一系列div,并调用$("那些div").makeXXXXControl())
如果你喜欢简单(jQuery比GWT简单)
如果你需要非常小的代码(例如,加快网站加载)
就个人而言,我会为大多数项目推荐GWT,但jQuery也有专业人士,有些人可能更喜欢jQuery.