文 何陡
>> 虽然IE市场占有率较大,但对许多严格按照W3C标准编写的网页代码支持并不好。
最近一段时间,国内不少厂商针对浏览器又打起了口水战,360、傲游、搜狗等浏览器“你方唱罢我登场”,闹得不亦乐乎。傲游更是在2008年声称将推出自主研发内核的浏览器产品。不过,直到现在为止,国内还没有哪一款浏览器产品真正开发成功了成熟的浏览器内核。
事实上,浏览器本来就是由两个部分组成的,底层的浏览器渲染引擎,也就是浏览器的内核,负责对网页语法的解释(如HTML、JavaScript)并将网页显示出来。渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息,不同的内核对网页编写语法的解释也有不同,因此同一网页在不同的内核浏览器里的渲染效果也有少许不同。渲染引擎是浏览器的核心所在,它决定了浏览器最根本的功能。在渲染引擎之上是外壳部分,也被称为Shell。这一部分由各个浏览器厂商决定,其功能和布局则各有不同。
虽然目前市面上的浏览器不下十余种,但常见的浏览器内核却只有4种,除了最常见的IE使用的内核Trident,还包括了Presto、Gecko和WebKit。
之所以说Trident是应用范围最广的浏览器内核,是因为这一内核就是IE使用的内核,由微软在Mosaic代码的基础上修改而产生的。Trident在1997年的IE4中首次被采用并沿用到现在的IE8。
虽然Trident并非开源内核,但却是一款开放的内核,其接口设计很友好也很成熟,因此有很多浏览器厂商都在这一基础上进行开发,给Trident内核加上一个外壳就可以推出一款新的浏览器。在国内市场,这样的浏览器产品包括Maxthon、360浏览器、搜狗浏览器、The World、TT、GreenBrowser、AvantBrowser等。
由于IE很长时间垄断着浏览器市场,因此Trident内核在很长一段时间内都没有进行更新。这一方面使得Trident内核与被作为网页代码重要原则的W3C标准兼容不好,很多遵照W3C标准的网页用IE根本无法正常浏览。另一方面,对内核源代码的疏于更新也使得Trident内核存在大量Bug,近两年经常爆出关于IE浏览器的安全问题,根本问题就在于其内核的Bug。
发布之后,Trident在对新技术的支持更新上还算比较及时。IE5使用的Trident I增加了对CSS1.0的支持及对CSS2重大的变更;IE5.5上使用的Trident III修正了部分CSS的排版控制;IE6使用的Trident IV修正了一部分box-model的错误以及增加了兼容模式切换;IE7使用的Trident V则修正了CSS排版处理上的错误以及增加对PNG格式alpha通道(半透明)的支持。
Gecko首先来源于被IE击倒的Netscape。Netscape 6以后版本的浏览器使用了这一内核,AOL for Mac OS X也使用了这一内核。2003年7月15日,与AOL合并的时代华纳解散了当时已经没有什么声音的Netscape。同一天Mozilla基金会成立,这一基金会继承了Netscape的源代码,也就继承了Gecko内核。
现在仍在Firefox上使用的Gecko内核最大的特点就是代码完全公开,因此二次开发相当简单,全世界的程序员都可以为其编写代码和增加功能。这也是为什么目前Firefox有着数万种扩展应用的主要原因。
Gecko也是一个跨平台内核,可以在Windows、BSD、Linux和Mac OS X中使用。现在,国内浏览器傲游开始使用了这一内核。同时,有很多开发商针对Mozilla XUL开发了网页应用。第三方开发者可以使用XUL和JavaScript在Firefox浏览器访问的页面上实现更多复杂的功能。
>> WebKit引擎的应用范围现在越来越广了。
Presto是这4种渲染引擎中唯一的商业引擎,因此使用Presto的除了Opera之外只有NDS Browser(NDSL上使用的浏览器)、Wii Internet Channle(Wii上使用的浏览器)、Nokia N770网络浏览器等,这很大程度上限制了Presto的发展。
Presto内核在2003年的Opera7中首次被使用,取代了Opera 4到Opera 6版本使用的Elektra渲染引擎,加入了动态功能。Presto内核的主要特点就是渲染速度极快而且表现相当优异。在对脚本处理上Presto和其他内核不同的是,其渲染的页面可以在回应脚本事件时等情况下部分或全部被重新解析。Presto内核在执行Javascrīpt的时候速度比Trident和Gecko内核快近3倍。
不过,由于对页面进行了大量优化,因此Presto内核在对页面元素的兼容性方面比不上Gecko。除了浏览器之外,Macromedia Dreamweaver(MX版本及以上)和Adobe Creative Suite 2在网页相关功能上也使用了Presto的内核。Opera最新的Opera 10则采用了全新的Presto2.2内核。
之所以说WebKit是大牌的选择,是因为苹果是它的缔造者,而Google是它的拥护者。
WebKit最早是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。WebKit引擎由WebCore排版引擎及JavaScriptCore解析引擎组成,是从KDE的KHTML及KJS引擎衍生而来。KHTML和KJS都是自由软件,在GPL条约下授权,同时支持BSD系统的开发,所以WebKit也是开放源代码的渲染引擎。
Google Chrome的推出让WebKit再一次被人们所关注。Chrome对网页的渲染速度和效果完全基于WebKit,Google甚至还发布了一个小插件,让IE可以使用WebKit内核对网页进行渲染。
WebKit引擎受欢迎的原因除了其引擎的高效稳定和兼容性好之外,其源码结构清晰易于维护的特点也是一个重要的原因。最近Google开放了第三方插件平台,相信WebKit内核很快就会有更多的支持者。
另一方面,不少手机浏览器在使用WebKit,主要包括iPhone浏览器、Symbian S60平台的手机浏览器“Web brower for S60”、Palm推出的基于WebKit的Web OS、Google手机自带的浏览器等等。而包括傲游、搜狗等在内的原本使用Trident内核的浏览器产品开始部分转向了WebKit。