2011年5月4日星期三

[转载]Firefox完全手册_第一章_10

本文转自“如何@科技

 

第一章-IE与Firefox-他们的前世今生
10.各浏览器的内核,排版引擎续 2

  下面再说说更前端的一个模块,也是目前正在突飞猛进的一个领域:

  JavaScript,是由Netscape开发的面向对象的脚本语言,它在浏览器中起到的作用大过美国总统(……卸任的)。Netscape引入浏览器的JavaScript语言也是完全依据ECMAScript规范的。

  作为标准的脚本语言,JavaScript的引入给互联网交互创造了坚实的基础。应该说,我们今天的网页上能有各种各样的神奇的应用,真是多亏了 Netscape/Mozilla!(如果也像微软一样另起炉灶,今天恐怕还止步在十年前的水平),由此受益最大的企业,应该就是Google 了,Google的那些经典服务是万万离不开Javascript。从这一点看,不知能不能把Google帮Mozilla推广Firefox理解为报恩呢?呵呵。

  而微软的IE,却并没有使用完全符合ECMAScript规范的JavaScript,而是将自己的另一项技术:JScript强加给了用户,起名为JScript意图大概是要与JavaScript混淆,但请记住一点:JScript是微软的注册商标!

  IE中使用的JScript与ECMAScript(或JavaScript)是交集关系,不仅不完全使用ECMAScript标准定义的方法、属性,还加入大量自己的私有定义,这些方法、属性只有IE能够识别,其他非授权浏览器都不能识别(专利权)。这一现实不仅一直让无数开发者头痛,更是其他浏览器发展的一大绊脚石。

  可是,但是因为种种原因,大众却会下意识地认为认为微软的也是JavaScript。这也是我前一篇开头所说,“让我们怀着悲愤的心情”讨论,的原因。

  作为垄断的必要环节,Internet Explorer一直使用包括JScript在内的一系列专有的网页标准延伸,其他还包括HTML,CSS和DOM等(比如Office中的那些让人眼花缭乱的富格式),使很多网站往往只能被IE正常显示。

  这也是IE占有绝对市场的情况下,非常难以撼动的因素之一。

  话题扯远了,言归正传。

  互联网中后期的发展中,DHTML、Ajax的应用越发的广泛且重要起来,于是,浏览器的开发者们又将精力投入到Javascript执行效率和扩展性上。

  慢慢的,浏览器开发者将这一部分功能从网页排版引擎中派生出来,形成一个单独模块:脚本解释引擎,也叫Javascript解释引擎,对于有些浏览器来说,叫Javascript解析架构。

  这一方面,Google走在了前面。

  应该说这也是情理之中的,如前所述,作为新兴的IT巨头,Google的核心项目大都是以Javascript作为客户端的主要手段去实现的,比如著名的Gmail,Google Map谷歌地图,Google Docs谷歌文档,还有核心中的核心:AdWords,AdSense,等等。

  在Ajax应用技术上,Google是当之无愧的王者,一个高效的解释引擎对Google的发展当然无比重要!好比一把菜刀对于一个悍妇,哦,不,一把锋利的宝剑对一个英雄那么重要!

  Google在08年底推出的Chrome浏览器,针对Javascript的解析的速度,使用了来自丹麦的一款叫作V8的开源脚本解释引擎。这个引擎并不出名,但是非常出彩。

  传统上,所有的浏览器,执行JavaScript都是采用“解释”的方法。而Chrome的V8引擎,采用了JIT(Just-In-Time 即时编译)的方法,把JavaScript 编译成二进制文件并放在内存中执行。

  我一直以为这是SUN针对JAVA提出的,查了一下资料,发现80年代就有了,汗,不过可以肯定的是,即时编译技术一直是JAVA平台得以傲视群雄的特性,后来微软的.NET也学了过去,才总算让自己的服务器系统不再是低效“弱质”的代名词。

  时代进步啊,现在连脚本语言都在JIT了。

  也正是这种方法,使得V8引擎对网页中的JavaScript的处理非常快速,特别是在Ajax应用中,据说实际速度比IE快六千七百多万倍。(“据说”这件事有时候是不太靠谱)