1.3 还原一个真实的JavaScript
迷失也好,误解也罢,都动摇不了JavaScript作为一种强大开发语言的本质,也无法阻止其在Web应用开发中发挥越来越重要的作用。我们需要还原一个真实的JavaScript,下面来了解一下JavaScript的历史。
JavaScript最早的历史可以追溯到Nombas公司于1992年开发的一种叫做Cmm(C-minus-minus)的嵌入式脚本语言。Nombas开发Cmm的本意是为了在其一个叫做Cenvi的共享软件产品中提供一个可以替代宏操作的脚本语言,并且该脚本语言的语法与C语言十分接近,以方便C语言程序员的学习与掌握。Cmm十分成功,让很多人知道了脚本语言的强大威力,为了更好地描述这种语言,Nombas后来把Cmm改名为ScriptEase,并且逐渐发展成为Nombas产品实现强大功能的关键支撑技术。
当互联网技术开始发展与普及时,Netscape Navigator出现了,并且取得了非凡的成功。Nombas顺时地开发了CEnvi的网页嵌入式版本,这就是第一个在Web页上使用的客户端脚本语言。但那时的Nombas还没有意识到这项技术的重要性,更没有想到这种方法会对Web开发技术所产生的革命性的影响;ScriptEase在毫无意识中成为了现在JavaScript技术的鼻祖。
而此时,正处于风头浪尖上的Netscape Navigator正面临着一个很关键的问题:客户端的表单验证。虽然Internet得到了发展,上网用户越来越多,早期的Internet上网用户基本上还是用很慢的拨号上网方式,每一次页面访问都要花费漫长的下载时间。而雪上加霜的是当时的Netscape Navigator没有客户端的表单验证功能,所有表单验证都需要提交服务器进行验证,然后将验证结果返回。这种方式可想而知是多么的痛苦,Internet用户不得不为其一丁点的误操作而付出惨痛的网络流量与时间上的代价。
当然,对此问题以技术创新闻名的Netscape不会坐视不管,于是一种叫做LiveScript的脚本语言在Netscape工程师Brendan Eich的手中开始实现,当时的定位不仅仅为了解决客户端表单验证问题,还能在服务器端编写服务器端程序(类似于VBScript,可工作于客户端与服务器端),这种脚本语言有一段时间也被称做LiveWire。在1995年Netscape Navigator 2.0即将发布时,当时的Java技术正在兴起,并且有着更进一步发展的趋势,为了赶时髦,也为了搭上Java这个顺风车,LiveScript在随着Netscape Navigator发布时,改名为JavaScript,版本为1.0。
这一改名终于宣布了对Web开发产生深远、重大影响的JavaScript的正式诞生,也为JavaScript种种的误解埋下了祸根。
最突出也是最常见的一种误解就是认为JavaScript是对Java的一种简单实现和低级版本,这种印象使很多严肃的程序员对其不屑一顾,认为它只是能够完成一些小花样的玩具技术,对真正的应用开发毫无用处,从而从客观上阻止了JavaScript的普及与应用。
虽然存在以上的误解,但是JavaScript 1.0还是取得了巨大的成功,因为Web开发者第一次能在客户端通过JavaScript实现很多以前几乎不可能完成的功能,如表单验证等。在Netscape发布Netscape Navigator 3.0时,JavaScript也从1.0升级到了1.1版本。与此同时,微软发布了Internet Explorer 3.0,由于见识了JavaScript 1.0的成功,因此随着Internet Explorer 3.0一起发布的还有一个基本上与JavaScript类似的客户端脚本,微软将其命名为JScript。由于微软在软件领域的地位,特别是后来Internet Explorer在浏览器市场取得的巨大成功,JScript的出现,也可以看成是JavaScript发展史上重要的一环。
这样,Netscape Navigator中的JavaScript, Internet Explorer中的JScript同时存在,由于缺少标准,给Web中的JavaScript开发带来了严重的困扰,为了实现兼容Navigator与Internet Explorer的JavaScript开发方案,开发者不得不写出很多繁杂与奇怪的代码去兼容JavaScript与JScript。这样一来,对JavaScript进行标准化的呼声也越来越高了。
为了取得主动权,Netscape于1997年将JavaScript 1.1作为一个标准草案提交给欧洲计算机制造商协会(ECMA)。第39技术委员会(TC39)被ECMA委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法与语义”。由来自于各主要脚本编程提供商的技术专家组成的TC39制定了ECMA-262标准,即定义了一种叫做ECMAScript的脚本语言。随后,国际标准化组织(ISO)、国际电工委员会(IEC)也采用了ECMAScript作为标准。从此,客户端的脚本语言有了统一的国际标准,各个JavaScript提供商也在斗争与协商中艰难地向ECMAScript标准靠拢,虽然就目前的情况来看不容乐观,各种各样的兼容性问题依然存在,但是毕竟有了一个努力的目标,从而也有理由奢望一个美好的未来。
JavaScript从1995年诞生到现在也不过只有十多年的历史,但是在日新月异的计算机技术领域,十多年前的技术到现在还具有如此的活力,足见JavaScript的成功。它的成功来自于其切实能解决Web开发者所关心的问题,并且在不断地与新技术的融合、交流中发展了自己,从而保持其长久的竞争力。本书后面的章节将会专门讲述JavaScript怎样与新技术进行融合、交流。