常见浏览器内核概述

来源:互联网 发布:阿里云报价单 编辑:程序博客网 时间:2024/06/07 09:54

一、 浏览器内核【Rendering Engin】 (排版引擎/渲染引擎/解释引擎)

  • 概述what? 
    负责对网页语法的解释并渲染网页,将网页的代码转换为最终可见的页面形式,并且决定浏览器如何显示网页的内容以及页面的格式信息。不同浏览器内核对网页编写语法的解释也有不同,故同一网页在不同内核浏览器中渲染效果也不尽相同,这就需要网页编写者在不同内核浏览器中测试网页显示的效果。

  • 为什么会排版错位呢? 
    由于浏览器内核负责渲染网页内容的,进行排版,因此必然会出现排版错位等问题。造成此现象的原因有:网站本身编写不规范、浏览器本身的渲染不标准等等。

  • 内核分类 
    1. Trident 内核(Windows)

    Trident(又称为MSHTML),于1997年,IE4中首次被采用,是微软在Mosaic(NCSA Mosai的简称,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器,由伊利诺伊大学厄巴纳-香槟分校的NCSA组织于1993年发表,并于1997年1月7日正式终止开发和支持)代码的基础之上修改而来的,并沿用至IE11,通常被称为IE内核。

    由于IE本身的“垄断性”而使得Trident内核的长期一家独大,微软很长时间都没有更新Trident内核,这导致了两个后果: 
    1) Trident内核曾经几乎与W3C标准脱节(2005年) 
    2) Trident内核的大量 Bug等安全性问题没有得到及时解决,然后加上一些致力于开源的开发者和一些学者们公开自己认为IE浏览器不安全的观点,也有很多用户转向了其他浏览器,Firefox和Opera就是这个时候兴起的。非Trident内核浏览器的市场占有率大幅提高也致使许多网页开发人员开始注意网页标准和非IE浏览器的浏览效果问题。

    Trident内核不同版本介绍

    Trident(又称为MSHTML),是微软开发的一种排版引擎。它的第一个版本随着1997年10月Internet Explorer第四版的发布而发布。随后,Trident不断地被更新和完善: 
    Trident II(IE5)——增进对CSS1.0的支持及对CSS2重大的变更 
    Trident III(IE5.5)——修正部分CSS的排版控制 
    Trident IV(IE6)——修正了一部分box-model的错误以及增加了“兼容模式(Quirks Mode)”切换功能,以增加对文件类型描述(Document Type Definition,DTD)的支持 
    Trident V(IE7)——修正许多CSS排版处理上的错误以及增加对PNG格式alpha通道(半透明)的支持

    IE从版本11开始,初步支持WebGL技术。IE8的JavaScript引擎是Jscript,IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。

    Trident内核的常见浏览器有: 
    [1]IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0); 
    [2]360安全浏览器(1.0-5.0为Trident,6.0为Trident+Webkit,7.0为Trident+Blink); 
    360极速浏览器(7.5之前为Trident+Webkit,7.5为Trident+Blink); 
    [3]猎豹极轻浏览器、猎豹安全浏览器(1.0-4.2版本为Trident+Webkit,4.3及以后版本为Trident+Blink)、猎豹极轻浏览器; 
    [4]傲游浏览器(傲游1.x、2.x为IE内核,3.x为IE与Webkit双核); 
    [5]百度浏览器(早期版本); 
    [6]世界之窗浏览器(最初为IE内核,2013年采用Chrome+IE内核); 
    [7]搜狗高速浏览器(1.x为Trident,2.0及以后版本为Trident+Webkit); 
    [8]其它: 
    2345浏览器、腾讯TT、淘宝浏览器、采编读浏览器、阿云浏览器(早期版本)、瑞星安全浏览器、Slim Browser、 GreenBrowser、爱帆浏览器(12 之前版本)、115浏览器、155浏览器、闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器、海豚浏览器(iPhone/iPad/Android)、UC浏览器(Blink内核+Trident内核)等。

    其中部分浏览器的新版本是“双核”甚至是“多核”,其中一个内核是Trident,然后再增加一个其他内核。国内的厂商一般把其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”,用户可以来回切换。

    2.Gecko(跨平台) 
    特点:代码完全公开,以C++编写的网页排版引擎。

    因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko内核的浏览器也很多,这也是Gecko内核虽然年轻但市场占有率能够迅速提高的重要原因。

    目前为Mozilla家族网页浏览器以及Netscape 6以后版本浏览器所使用。这软件原本是由网景通讯公司开发的,现在主要由Mozilla基金会进行维护,是开源的浏览器内核,这套排版引擎提供了一个丰富的程序界面以供因特网相关的应用程序使用,例如网页浏览器、HTML编辑器、客户端/服务器等等。虽然最初的主要对象是Mozilla的衍生产品,如Netscape和Mozilla Firefox(火狐内核),现在已有很多其他软件现在利用这个排版引擎。Gecko也是一个跨平台内核,可以在Windows、BSD、Linux和Mac OS X中使用。

    常见的Gecko内核的浏览器: 
    Mozilla Firefox、Mozilla SeaMonkey、Epiphany(早期版本)、Flock(早期版本)、K-Meleon.

    3.KHTML 
    KHTML,是HTML网页排版引擎之一,由KDE所开发。

    KDE系统自KDE2版起,在档案及网页浏览器使用了KHTML引擎。该引擎以C++编程语言所写,并以LGPL授权,支援大多数网页浏览标准。由于微软的Internet Explorer的占有率相当高,不少以FrontPage制作的网页均包含只有IE才能读取的非标准语法,为了使KHTML引擎可呈现的网页达到最多,部分IE专属的语法也一并支援。

    KHTML拥有速度快捷的优点,但对错误语法的容忍度则比Mozilla产品所使用的Gecko引擎小。

    苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用,并发布所修改的最新及过去版本源代码。后来发表了开放源代码的WebCore及WebKit引擎,它们均是KHTML的衍生产品,在开发网站列出引擎改变内容,并会传回至KDE计划。由于两个衍生产品各走不同路线,使两者源代码偏离,在与KDE交换更新会出现困难。其中一个原因,是苹果在对外公开源代码之前,以一年时间编修他们的KHTML。另外,苹果传送更新至KDE计划的方式,多是一口气把大量改动一起传送,KDE在整理资料也出现一定的困难,及后苹果表示会以CVS格式来传送。再者,苹果所作出的改动包括Mac OS X系统独有的事物,如Objective-C、KWQ等,在Linux及KHTML是没有的。但KDE方面仍透过这些改动,为KHTML加入新功能及加快其排版速度。

    基于KHTML内核的内核: 
    WebKit、WebCore。

    使用KHTML的产品

    • KDE Konqueror - KDE的网页浏览器及档案管理员
    • Safari - 苹果电脑的网页浏览器
    • Embedded Konqueror - PDA上的网页浏览器
    • SkyKruzer - SkyOS上的网页浏览器
    • ABrowse - Syllable操作系统上的网页浏览器
    • Nokia Series 60 移动电话的浏览器

    4.WebKit(跨平台) 
    Webkit(Safari内核,Chrome内核原型,开源),是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来,均是自由软件,在GPL条约下授权,同时支持BSD系统的开发。因此,Webkit也是自由软件,同时开放源代码。在安全方面不受IE、Firefox的制约,所以Safari浏览器在国内还是很安全的。

    Google Chrome、360极速浏览器以及搜狗高速浏览器高速模式也使用Webkit作为内核(在脚本理解方面,Chrome使用自己研发的V8引擎)。WebKit 内核在手机上的应用也十分广泛,如 Google 的手机 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的Browser内核引擎,都是基于WebKit。

    目前,webkit内核是公认的最快的网页浏览方式。

    WebKit内核常见的浏览器: 
    傲游浏览器3、Apple Safari (Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android 默认浏览器。

    5.Chromium(跨平台) 
    Chromium 是 Google 的chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。以BSD许可证等多重自由版权发行并开放源代码。

    早自2006年开始开发,设计思想基于简单、高速、稳定、安全等理念,在架构上使用了Apple发展出来的WebKit排版引擎、Safari的部份源代码与Firefox的成果,并采用Google独家开发出的V8引擎以提升解译JavaScript的效率,而且设计了“沙盒”、“黑名单”、“无痕浏览”等功能来实现稳定与安全的网页浏览环境。Chromium是Google为发展自家的浏览器Google Chrome(以下简称Chrome)而开启的计划,所以Chromium相当于Chrome的工程版或称实验版(尽管Chrome自身也有β版阶段),新功能会率先在Chromium上实现,待验证后才会应用在Chrome上,故Chrome的功能会相对落后但较稳定。Chromium的更新速度很快,每隔数小时即有新的开发版本发布,而且可以免安装,下载zip封装版后解压缩即可使用(Windows下也有安装版)。Chrome虽然理论上也可以免安装,但Google仅提供安装版。

    常见的Chromium内核的浏览器: 
    Google Chrome、Chromium、SRWare Iron、Comodo Dragon 
    使用Chromium开源代码(基于webkit内核)的浏览器: 
    360极速浏览器、枫树浏览器、太阳花浏览器、世界之窗极速版、傲游浏览器和UC浏览器电脑版等。 
    搜狗高速浏览器和qq浏览器官网未提及Chromium,只是说采用webkit内核,经网友测试这两款浏览器极有可能也是使用的Chromium,只是官方不承认而已。

    6.Presto(跨平台) 
    2003年,Presto是商业引擎,在Opera7中首次被使用,特点是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。此内核曾经被Opera12.17及更早版本所采用,现已停止开发并废弃。

    Presto是一个动态内核,页面的全部或者部分都能够在回应脚本事件时等情况下被重新解析,且在执行Javascript时具有最快速度。根据在同等条件下的测试,Presto内核执行同等Javascript所需的时间仅约Trident和Gecko内核的1/3(Trident内核最慢,不过两者相差没有多大)。曾有小测试显示Presto部分快部分慢,各内核总体相当。只是测试中Apple机的硬件条件和普通PC机不同所以没有测试WebCore内核。

    使用Presto的浏览器有: 
    除开Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770网络浏览器等,发展前景受限制。 
    目前,Opera现已改用Google Chrome的Blink内核。

    7.Blink 
    Blink是一个由Google和OperaSoftware开发的浏览器排版引擎,Google计划将这个渲染引擎作为Chromium计划的一部分,并且在2013年4月的时候公布了这一消息。这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)和Yandex浏览器中使用。

    8.WebCore 
    WebCore是苹果公司开发的排版引擎,是另一排版引擎“KHTML”基础上而来的。

    使用WebCore的主要有: 
    Safari、OmniWeb、Shiira、Swift等。

二、JavaScript引擎

  • 概述 
    JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。例如:一个算圆周率的网页,排版引擎显示页面的框架,但最终结果需要用到 Javascript 来计算,所以Javascript引擎的快慢也影响着整个网页的速度,特别是目前越来越多类似 WebQQ、Gmail 等大量应用了复杂的 Javascript 运算的网站,不同的引擎最终的速度差异会相当大。

    很多时候,大家在评论哪个浏览器更快,其实基本上指的是JavaScript的渲染速度,而不是页面的载入速度。在网速一定的情况下,各浏览器的页面载入速度差别不大。但是,越来越多的动态页面开始大量借助JavaScript,比如SNS、邮箱、网页游戏等,所以JavaScript在页面中的比重会越来越大,从而使得JavaScript的渲染速度也成为一个很重要的指标。JavaScript的渲染速度越快,动态页面的展示也越快。 
    Opera在JavaScript引擎的跑分上面一直都是很牛逼的,一般来说最新测试版之间PK,Opera基本都会夺冠。

    1.Chakra 
    Chakra由微软为其Internet Explorer 9 (IE9) 网页浏览器开发的JScript引擎。该引擎的32位元版本(Internet Explorer 10才同时支援64位元)的一个特色是,它在一个独立的CPU核心上即时编译脚本,与浏览器并行。该引擎也能够访问电脑的图形处理器(GPU),特别是对 3D 图形和视频的情况。

    引擎的提高则是为了回应不断发展的与之竞争的浏览器,IE 8 在Javascript 方面仍然落后于其它浏览器。于 2009 . 11 . 18举行的 SunSpider 测试展示了 IE9 的 PDC 版本对脚本的执行远快于 IE8,但是仍然慢于Firefox 3.6, Chrome 4 和 WebKit Nightly。

    2.SpiderMonkey / TraceMonkey / JaegerMonkey

    SpiderMonkey(跨平台) 
    Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎,另外还有一个叫做Rhino的Java版本。为了在SpiderMonkey中运行JavaScript代码,应用程序必须有三个要素:JSRuntime,JSContext和全局对象。 
    SpiderMonkey应用在Mozilla Firefox 1.0-3.0。

    TraceMonkey 
    Firefox启用于2008年,目标为改善Mozilla JavaScript引擎,并提高浏览器产生页面与回应时间的速度,即为了让Firefox能够与桌面端程式及各种新兴应用技术如Microsoft Silverlight与Adobe Flash相竞争。 
    TraceMonkey应用在Mozilla Firefox 3.5-3.6版本。

    JaegerMonkey 
    随着竞争厂商陆续改善浏览器性能,竞争激烈,固Firefox逐渐落后。为此,Mozilla基金会为Firefox开发全新的JaegerMonkey引擎。 
    JaegerMonkey应用在Mozilla Firefox 4.0及后续的版本。

    3.V8(JavaScript引擎) 
    V8可以独立运行,也可以嵌入到任何C++应用程序。项目托管在Google Code上,基于BSD协议,目前该JavaScript引擎已用于其它项目的开发,任何组织或个人可以将其源码用于自己的项目中。

    第一个版本随着第一个版本的Chrome与2008年9月2日发布。该引擎使用C++开发,并在谷歌浏览器中使用。在运行JavaScript之前,相比其它的JavaScript引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。因此,JavaScript程序在V8引擎下的运行速度媲美二进制程序。

    应用: 
    Chrome、傲游3。

    4.Nitro 
    应用于Safari 4及后续的版本。

    5.Linear A/Linear B/Futhark/Carakan 
    Linear A应用于Opera 4.0-6.1版本; 
    Linear B应用于Opera 7.0~9.2版本; 
    Futhark应用于Opera 9.5-10.2版本; 
    Carakan应用于Opera 10.5及后续的版本。

    7.KJS 
    KHTML对应的JavaScript引擎。

三、有关的测试项目

  • V8引擎 
    测试传送门,现在很多“双核”浏览器都用它来跑分测试JavaScript引擎,分数越高越好。

  • Acid3 
    测试传送门,主要是对网页标准的兼容性测试,目的是考核浏览器对于Web技术的支持,分数越高表示越符合网页的开发标准,满分是100分。

    2008年3月3日正式发布。其测试焦点集中在ECMAScript(ECMA-262标准化的脚本程序设计语言)、DOM Level 3( DOMImplementation,允许实现者挑选产品检测特性)、Media Queries(媒体查询)和data: URL。

  • HTML5 
    测试传送门,测试浏览器对HTML5标准的支持,分数越高越好。

四、拓展

  • IETab 
    这是一款浏览器扩展,并非内核。在没有第三方编译版本的时候,IETab一直是 Mozilla Firefox、Chrome等非Trident内核的浏览器的安装量最大的扩展之一,方便用户在不开启IE的情况下调用Trident内核访问一些兼容性比较差的网站。它解决很多使用不规范语言、包含ActiveX或者要求IEonly的网页的浏览问题。但是绝大多数MozillaFirefox/GoogleChrome的扩展在使用IE tab浏览的标签页内无法使用。

  • Trident/Gecko双核浏览器

    虽然IETab能实现部分需求,但是深度订制的毕竟还是不一样,所以Trident/Gecko双核浏览器就诞生了,Sleipnir、Avant 12(Orca)是这类里面比较常见的。Avant 12因为有Orca的前期积累,所以轻车熟路,后面还打算加入Chromium,变成三核浏览器,但是偏偏现在Mozilla Firefox和Chrome都在疯狂刷版本号,肯定有一部分精力要花在跟进版本上。

  • Trident/WebKit双核浏览器 
    现在国内最主流的“双核”浏览器基本都是这个架构,360极速浏览器、世界之窗浏览器极速版、傲游3、搜狗浏览器3、QQ浏览器、枫树浏览器、快快浏览器、百度浏览器、阿云浏览器(后期版本)、太阳花浏览器,其中最奇葩的是傲游3。其它双核浏览器都是基于Chromium的,而傲游是基于WebKit的,但是偏偏又用的是V8引擎。

  • Trident/Gecko/WebKit三核浏览器 
    目前能见的应该就是日本的Lunascape,Avant增加了WebKit内核之后也会归类到这里。说实话,Lunascape比较难使用。各个内核相对独立,外壳本身不够强化,稳定性不高。

五、其它(参照其它资料)

  • Chrome/Chromium 
    很多人都会说自己用的双核浏览器是Chrome/IE双核的,或者说是基于Chrome的。其实这种说法并不正确,因为Chrome本身并不开源,其它厂商是不能去定制Chrome的。能被修改、定制的是Chromium,Chrome的开源开发版本,代码和Build都提供下载。Chromium/Chrome两个单词都是铬,分别是拉丁文和英文,除了名字之外,存在很多不同。Chromium一天最多可以更新十几乃至二十个版本,实验性的新特性都会现在这里放出,但是Chromium本身其实并不稳定。Chrome总共有四个更新分支:Canary、Dev、Beta、Stable,稳定性依次增强。

  • 一直被模仿,一直被超越的Opera 
    Opera其实很好看也很好用,而且极度创新(貌似全页面缩放、多标签浏览、鼠标手势、快速拨号等功能都是它首创的),但是市场占有率一直很低。很多很好用的新特性总是被抄袭,所以大家笑称Opera“一直被模仿,一直被超越”。坊间传闻多标签页浏览器就是Opera发明的,但是貌似有人考究了这个传闻其实不属实。不过快速拨号、Turbo浏览等功能就是扎扎实实Opera首创的。

0 0
原创粉丝点击