未刊印的译者序

2009年06月8日 原创, 翻译

引子
这是为去年12月出版的《Google Web Toolkit应用程序开发》写的译者序;遗憾的是,(估计是)由于文字过于随意,被“咔嚓”了。2009年1月,《Google Web Toolkit开发实战》出版,加上《Google Web Toolkit应用程序开发》,是当时国内唯一两本介绍GWT的书,而且恰好一本介绍原理、一本介绍实例。

Ryan Dewsbury,一介技术人员,关注非技术性的用户体验——软件应该带给用户流畅、无障碍的感觉——由来已久。溯本求源,概肇始于他本人曾受到C++模板技术生成代码的强烈震撼。那种如饮甘醴、如沐春风的感觉,让这位C++程序员久久不能释怀。然而,离开工作单位,面对作为软件用户的非技术人员(家人、朋友)却又无法言传那种美妙的“用户体验”。这让他很不爽!——“我决定抽时间编写一个客户端应用程序,让它带给用户的优雅体验,就如同开发者看到写得漂亮的代码一般”。

于是,他用C++开发了一款体积小巧、界面简洁,类似今天Google Talk的即时通信软件。结果受到用户追捧,达到百万级的下载量——简洁作为一种价值观,与full-function(全功能)相对;这与Google对用户体验的理解不谋而合。但是,C++做界面似乎笨拙了点,因此简单的HTML+CSS时常令他心驰神往。

2005年,Ajax被人发现了。虽然基于Ajax技术的Google Maps让Ryan Dewsbury惊呼:桌面级用户体验现身于Web了!然而,在了解“事实真相”后,又不免“怅然若失”——“我知道使用JavaScript存在着很多的局限性。由于这些局限性,几乎不可能用它来构建一个大型复杂的客户端应用程序”——潜台词:“浴火重生”的JavaScript虽然强大,但浏览器不兼容性问题太严重,学起来简直烦人透顶,哪有丝毫“用户体验”可言?简直令人失望至极。更何况,一人之力怎与Goolge的Maps团队相比呢?看来是没有希望开发出具有Google Maps般用户体验的Web应用程序了,唉!

但是,峰回路转,在Ryan Dewsbury熟悉的Java语言与能带给用户更好体验的Ajax应用程之间架起一座“彩虹桥”的Google Web Toolkit(GWT)发布了。真的吗?可以用Java开发Ajax应用程序——不用学习JavaScript、不必面对复杂的浏览器兼容性问题?呵呵——当然要“抢鲜”试一试喽。

结果,仅用3周时间,Ajax应用程序Gpokr诞生了,而且全Java开发;这是一个在线游戏应用程序。发布以后,引得GWT开发团队的高人纷纷赶来试用。在感谢这些GWT“之父”们之后,Ryan Dewsbury没忘提一句“最让我激动不已的,就是GWT编译器能够把优美的Java代码转换成JavaScript”——这不正是自己魂牵梦萦、上下求索的代码生成技术的翻版吗?对Java技术人员及至本书作者而言,GWT相当于提供了C++中的模板技术。GWT编译器就是代码生成器,能把Java代码转换成JavaScript——简直重现了作者当年的那种如饮甘醴、如沐春风的感觉,很有点天作之合的味道,不是吗?接着,作者又发感慨“于是,任何人都可以创建向用户交付美好体验的应用程序,而可靠的GWT则给我留下了深刻的印象”,这不是如获至宝的感觉是什么?

分享分享分享,强烈的“共产主义”精神,反复地刺激着从未写过书的Ryan Dewsbury的思想深处,他的灵魂所在地。对呀,要是写本书就好了,这么一个“令人惊叹的工具”哪能没本书来宣传宣传呢?当时市面上还没有出GWT的书,不过Ryan Dewsbury也没有写书经验。没写过怎么了,反正“当时可以说也没有什么人对GWT很在行”。不会写,先做例子呀!通过做例子,既能搞通GWT,又能掌握相关的Web技术。来他个博观约取、厚积薄发……总之,先埋头编上几个月的程序再说。

Ryan Dewsbury

当然,最好是找几个流行的Ajax应用程序参考着做。比如:Google Start Page(http://www.google.com/ig)、基于Ajax的多搜索引擎集成、Blog文章编辑器、即时通信系统(这个简单,以前用C++就做过,呵呵。不过,这次要基于开发网页了)。最后,来个更牛的基于网页编辑数据库的程序(这个好像跟那个管理MySql的phpAdmin类似,不过那是管理本地数据库文件,而这个管理的则是远程数据库,厉害吧)。嘿,还别说,几个例子做下来,对GWT简直门清了,以前那些似是而非的Web概念也都清晰了。嗯,写书这个想法还真不错哩。

又经过几个月的日夜奋战,本书就新鲜出炉了。