Google Web Toolkit一瞥

http://code.google.com/webtoolkit/,用Java的方式来写Ajax程序。其实仅从语言的角度讲,我很喜欢js,动态类型、不封闭的类、FP等等。但是考虑到js的浏览器兼容性的问题和配套IDE等等的支持的话(虽然不可否认用FF之后js开发轻松了很多,但是那个倒霉IE)……。

一组跨平台的js ui,非常希望google能把这组ui脱离GWT放出来。开发方式,看看名字就行了(想想SWT),控件、布局、事件监听。Java的好处也全有了,类型检查、Eclipse、Junit,不过可以想象少了纯js的一些动态快感。另外就是applicationCreator的方式挺Rails的,呵呵

如果这个东西成为事实标准的话,这将是一件非常非常奇妙的事情。简单的看我们又多了一个纯java的基于Ajax的RIA解决方案,但事情比这个复杂。因为其个东西被google推出来是很奇怪的——google很有影响力,但是他不是java社区的一分子。他是想趁机混进去,还是纯粹玩玩呢?可能比较短视的看就是IBM等Java厂商对Ajax的有点漠不关心的态度(也许SOA牵扯了IBM等等太多的精力了,也没准它更希望Laszlo或Eclipse RCP,反正对比M$的Altas,我们发现Java世界没有很厂商支持的Ajax方案)让google决定自己来干——google在所有的RIA里肯定最喜欢ajax。而我第一眼看见这个就已经觉得它赢了Laszlo和Eclipse RCP了(类Laszlo、Eclipse RCP的方案里我支持M$的Avalon。但是我觉得更可能的是他们全输,因为没办法推广,OS和AS厂商的对立注定了这种结果,你能让想象Servlet输出XAML或者Windows预装Eclipse吗?)。但是如果IBM又后悔了的话,那也许我们又会面对一个分裂的世界了。

疑问是google打算投入多大的精力来维护GWT,比如我们需要Eclipse GWT Plugin,但是同样可以看到其实真正漂亮的Eclipse Plugin还是需要基金会支持的,但是这是一个来自google的方案。事实是google之前还没有掺入java社区的先例。

PS:想法挺乱,真的觉得Java社区应该有一个厂商支持的类似的东西。也许这个东西就会像其他Ajax Framework一样不温不火,纯粹是我高估了它,难说,呵呵

Ajax ―― Asynchronous JavaScript and XML- –

最近关注了一下,因为提得比较多。觉得这个东西根本的特征――正如嘟嘟老窝上说的(http://www.duduwolf.com/post/webdev_by_ajax.asp)――在于异步。相比传统web应用,ajax应用一样是无状态、断开式连接(虽然javascript的应用可以在客户端维护一些东西,不过我认为这里所说的“利用客户端的计算能力”根本不是什么值得赞扬的),但XmlHttpRequest允许客户用另一条线程去提交Request,这对用户体验提高的好处是很大的。

考虑一个桌面应用,在执行一个极为费时的操作时,如果程序变成“无响应”状态这是极为令人厌恶的,所以这种情况一般建议用另外一个线程来执行费时操作。然而在web应用中,考虑到信息在网络中的往返,我们可以认为哪怕一个最简单的操作都是极费时的。很长一段时间以来面对这种情况用户只能等待这个往返,这就好比桌面程序的“无响应”。由此我们可以类比出另一线程提交请求的好处。

至于有些人说ajax就是aj,ax不过是赶时髦强加上去,开始我是赞这个观点的(google suggest的返回就只是一个字符串,参考这个链接的返回值http://www.google.com/complete/search?hl=en&js=true&qu=ajax)。然而前几天看《程序员》上有人说ajax体现了一个SOA的思想,发现这个说法也很好玩,如果服务器端只是暴露web services接口,browser变成一个使用services的程序,那还真是优雅得可以。可惜如果客户端仅凭javascript+DOM来类似构建RIA的解决方案,那未免太勉为其难了一点。总之把ajax看成一种过渡技术,关注avalon比较合理一点。