在2003年年初,因为朋友许恩良的缘故,我来到了上海和为科技有限公司工作。公司的创始人是赖毅,他也曾经是开发人员出身,有着非常丰富的开发经验。赖毅是一个喜欢自出机杼的人(这样的人一般都是某一方面的高手),他设计开发了和为中间件平台,作为公司的快速开发平台。从开发效率上来说,这个平台确实比Struts之类当时流行的开源框架要高很多。这个平台的奇特之处还在于它完全将表现层的开发前推到浏览器端来做,通过XMLHTTP与服务器通信,通过 自己定义的一套映射规则,在服务器端不需要编写任何Java代码,而只需要编写一些XML配置文件。在这个平台上做开发,开发人员大部分时间都是在写JavaScript,服务器端的开发工作量并不大。这个平台的核心设计思想是基于服务的编程(SOP),这与今天的基于REST的Web服务有着一些相通之处。
后来我发现这个平台也存在着一些自己的缺陷,但是在当时为我带来了一种全新的设计思路,我当时对于完全基于Java的Web表现层开发技术感到失望(当时主 要是JSP和Struts,Turbine、Cocoon等框架并没有流行起来)。结合JavaScript、XMLHTTP和Servlet来建造一个 快速开发平台,这确实是一种崭新的设计思路。以这种思路来做开发,要比使用Struts一类框架简便很多。当时赖毅已经有了一整套的架构设计思想(涵盖客 户端和服务器端),而Ajax这个术语直到2005年才出现,赖毅可以说是超前了时代两年以上。而且在这个平台中,因为我们主要是在浏览器端做事情,可以 充分利用浏览器端的所有资源,开发出一些让用户使用起来非常简便的组件。最典型的就是不刷新页面更新数据、输入提示和自动补全,这在和为中间件平台中是非 常基本的功能。和为中间件平台还实现了复杂的DataGrid组件(我们叫做Workbench),允许用户以类似Excel的方式,直接在表格中进行添加、编辑、删除等操作。
在这个时候,我意识到了XMLHTTP是一种非常有价值的技术,并且对JavaScript重新产生了浓厚的兴趣。我花了很多时间读完了中国Linux论坛赠送给我的《JavaScript权威指南》。并且花了很多时间学习 Mozilla的JavaScript,当时没有很多文档,主要是看Mozilla的newsgroup。其实我在2001年就做过一些DHTML开发, 但是当时是基于IE4和Netscape4,需要写两套完全不同的代码,这些经验已经没有多大价值,而且当时我也没有深入学习过JavaScript。我 对Web前端技术开发真正重视起来是在到了和为公司之后的事情了。
2001年我做Web开发使用的是ColdFusion,在当时几种Web开发技术ASP、PHP、JSP、ColdFusion中, ColdFusion的开发效率是最高的。但是ColdFusion是商业产品,在国内的用户很少。ColdFusion全部使用自定义的tag来做开发,JSP开始支持自定义tag,并且在JSTL推出之后建议完全基于JSTL,而不是scriptlet做开发,这些在我看来就是对ColdFusion的拙劣模仿。使用ColdFusion做开发的愉快感觉到了使用JSP就不存在了,Struts的笨拙也没有引起我很多的好感。
我基于和为中间件平台做了一些开发后,积累了一点心得体会,在JavaEye论坛2004年3月首次聚会上,我做了一个关于XMLHTTP的演讲。当时的 Java开发人员用过XMLHTTP的比较少,所以显得有些另类。但是另一位演讲人曹晓钢(现在很多人称他为曹老师)以前也用过不少XMLHTTP,所以一下子就理解了我们的设计思路。其后的一段时间,我在JavaEye论坛上与一些网友围绕基于XMLHTTP的设计和具体的技术问题开展了很多有益的讨 论。JavaEye论坛可以说是当时这类讨论最为集中和深入的地方。
到了2005年2月以后,国外传来了一个新的技术术语——Ajax,我在阅读了定义这个技术的那篇著名的文章之后确认,我们过去两年来做开发所基于的技术就是Ajax。当时我已经读完了《网站重构》,并且朋友赵泽欣(醒来)的介绍下理解了Unobtrusive JavaScript的含义。我决心以后的Web前端开发一定要基于真正的Web标准来做开发,这样我们才能够获得最大的利益。
Ajax在国外能够火起来,并不是偶然的。国外的开发团队其实对于Web前端开发相当重视,JavaScript和DHTML开发高手在国外有着很好的待遇,他们在这些方面的开发上有着多年的积累。然而在国内,真正精通JavaScript和DHTML的人凤毛麟角,我所知道的就只有设计开发Buffalo的陈金 洲和设计开发jsvm的万常华等屈指可数的几个人(当然也是因为我孤陋寡闻)。而且也缺乏深层次的交流,大多都是闭门造车。有名的51js网站的主要作用 是下载一些质量参差不齐的代码,而且那里几乎没有人关心所谓的Web标准为何物。
这在很大原因上是由于国内的大多数Web开发团队过于热衷于跟从软件大厂(M$、Sun、etc.)的技术,不敢自己做尝试,另外也是由于国内缺乏高水平的Web前端开 发图书。虽然介绍HTML/XHTML和JavaScript的书并不少,但是都不够综合,无法反应出Web前端开发技术的全貌。而且不涉及到Web Remoting(XMLHttpRequest是其中一种技术),最多只能是些小打小闹,无法做什么大事。
Ajax技术的兴起促进了各个方面对于Web前端开发技术的重视。在国内的出版单位中,得风气之先的是图灵公司。当时我听说国外出版了一本书叫做Ajax in Action,我一直想翻译这本书。2005年10月的一天,在朋友的介绍下,图灵公司的主编刘江找到我,说在找这本书的译者。我们一拍即合,确定了翻译这本书的计划。
Ajax in Action这本书很厚,内容很深,翻译工作量非常大,我们采用集体合作的方式,由7位译者完成初稿,最后由我来校对和润色。终于在2006年4月的前两天完成了全部的翻译任务。图灵公司只用了不到一个月的时间就将这本书送到了读者的手中,效率奇快,但是这本书的制作质量还是很高的。
在2006 年下半年,我和赵泽欣等人又为博文视点公司翻译了《Ajax模式与最佳实践》,并且在2007年1月,将台湾翻译的《Ajax设计模式》改写为大陆版本。 这两本书今年4月都将正式出版。到了现在,国外Ajax领域的三本重量级的著作都已经引进到了国内,并且图灵公司和博文视点公司在今年之内还将出版一大批 Web前端开发的图书,涵盖XHTML、CSS、JavaScript、Ajax等各个领域。今年之内Web前端开发图书将会极大丰富,足以满足国内 Web前端开发者的各种需要。赵泽欣目前正在负责为图灵公司翻译ppk on JavaScript,这是一本目前关于JavaScript开发最为深入的著作,作者是QuirksMode网站的站长。
某一种技术的兴起,出版界的关注是必不可少的,除此之外,建立一个自由深入交流相关技术的社区也是非常重要的。各方面共同努力,才有可能建立起一个繁荣的生 态系统。2005年11月,在刘江的建议下,我创建了Ajax中国这个网站,邀请赵泽欣担任管理员。并且在2006年,我们协助图灵公司,和China- Pub等单位合作,举办了一届国内的Ajax开发大赛。
昨天我在JavaEye论坛上看到,在美国,目前对于Ajax开发人员的需求呈现迅速上升的趋势:
>">http://www.javaeye.com/topic/66495
相信在国内,对于Ajax开发人员的需求也会有相同的趋势。
在国外Ajax技术和Web2.0兴起的大背景下,Web前端开发技术被放到了聚光灯下,引起了高度的关注。因缘际会,我们在这两年,为在国内建立起Web前端开发的生态系统做了一点微不足道的贡献。我相信这个技术领域并不是昙花一现的过渡技术,将来还会不断取得长足的发展。我以后的精力将主要放在建设这个社区上面。我希望国内的Web前端开发的爱好者也能够加入我们的社区,共同努力,使得国内Web前端开发的生态系统不断发展壮大。