admin管理员组

文章数量:1532197

2024年2月8日发(作者:)

浏览器内核的功能/JS引擎的功能总结

1、浏览器内核

浏览器最重要或者说核心的部分是“Rendering Engine”,可译为“解释引擎”,也即我们平常所说的“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法 的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

浏览器内核很多,不过通常主流的大约只有以下几种:

1)Trident:IE浏览器使用的内核,该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到目前的IE8。 Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器涌现(如

Maxthon、The World 、TT、GreenBrowser、AvantBrowser等)。此外,为了方便也有很多人直接简称其为IE内核。

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

2)Gecko:Netscape6开始采用的内核,后来的Mozilla FireFox (火狐浏览器) 也采用了该内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到 许多人的青睐,Gecko内核的浏览器也很多,这也是Geckos内核虽然年轻但市场占有率能够迅速提高的重要原因。

事实上,Gecko引擎的由来跟IE不无关系,前面说过IE没有使用W3C的标准,这导致了微软内部一些开发人员的不满;他们与当时已经停止更新了的 Netscape的一些员工一起创办了Mozilla,以当时的Mosaic内核为基础重新编写内核,于是开发出了Geckos。不过事实上,Gecko 内核的浏览器仍然还是Firefox (火狐) 用户最多,所以有时也会被称为Firefox内核。此外Gecko也是一个跨平台内核,可以在Windows、 BSD、Linux和Mac OS

X中使用。

3)Presto:目前Opera采用的内核,该内核在2003年的Opera7中首次被使用,该款引擎的特点就是渲染速度的优化达到了极致,也是目前公认网页浏览速度最快的浏览器内核,然而代价是牺牲了网页的兼容性。

实际上这是一个动态内核,与前面几个内核的最大的区别就在脚本处理上,Presto有着天生的 优势,页面的全部或者部分都能够在回应脚本事件时等情况下被重新解析。此外该内核在执行Javascrīpt的时候有着最快的速度,根据在同等条件下的测 试,Presto内核执行同等Javascrīpt所需的时间仅有Trident和Gecko内核的约1/3(Trident内核最慢,不过两者相差没有 多大)。那次测试的时候因为Apple机的硬件条件和普通PC机不同所以没有测试WebCore内核。只可惜Presto是商业引擎,使用Presto的 除开Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770网络浏览器等,这很大程度上限制了Presto的发展。

4)Webkit:苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生

而来,它们都是自由软 件,在GPL条约下授权,同时支持BSD系统的开发。所以Webkit也是自由软件,同时开放源代码。在安全方面不受IE、Firefox的制约,所以 Safari浏览器在国内还是很安全的。

限于Mac OS X的使用不广泛和Safari浏览器曾经只是Mac OS X的专属浏览器,这个内核本身应该说市场范围并不大;但似乎根据最新的浏览器调查表明,该浏览器的市场甚至已经超过了Opera的Presto了——当然 这一方面得益于苹果转到x86架构之后的人气暴涨,另外也是因为Safari 3终于推出了Windows版的缘故吧。Mac下还有OmniWeb、Shiira等人气很高的浏览器。 google的chrome也使用webkit作为内核。 WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Gphone、 Apple 的 iPhone, Nokia’s Series 60

browser 等所使用的 Browser 内核引擎,都是基于 WebKit。

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

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

Gecko引擎小。苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用,并发布所修改的最新 及过去版本源代码。后来发表了开放源代码的WebCore及WebKit引擎,它们均是KHTML的衍生产品,在开发网站列出引擎改变内容,并会传回至 KDE计划。

2、JS引擎

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。JavaScript最初由网景公司的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。以它为基础,制定了ECMAScript标 准。JavaScript在浏览器的实现中还必须含有DOM和BOM。Web浏览器一般使用公共 API来创建主机对象来负责将DOM对象反射进JavaScript。JS引擎负责对JavaScript进行解释、编译和执行,以使网页达到一些动态的效果。

主要的网页浏览器JavaScript引擎:

1) Mozilla

 Rhino,由Mozilla基金会管理, 开放源代码,完全以Java编写。

 SpiderMonkey,第一款JavaScript引擎,由Brendan Eich在Netscape Communications时编写,用于Mozilla Firefox 1.0~3.0版本。

 raceMonkey,基于实时编译的引擎,其中部份代码取自Tamarin引擎,用于 Mozilla

Firefox 3.5~3.6版本。

 gerMonkey&action=edit&redlink=1"JägerMonkey,德文Jäger原意为猎人,结合追踪

和组合码技术大幅提高效能,部分技术借凿了引擎)"V8、JavaScriptCore、WebKit,用于Mozilla Firefox 4.0以上版本。

2)Google

 引擎)"V8,开放源代码,由Google丹麦开发,是Google Chrome的一部分。

3)微软

 akra&action=edit&redlink=1"Chakra,中文译名为查克拉,用于rer_9"Internet Explorer

9。

4)其它

 ECMAScript/JavaScript引擎,最初由rri_Porten&action=edit&redlink=1"Harri Porten开发,用于KDE项目的 Konqueror网页浏览器中。

 rcissus_(JavaScript引擎)&action=edit&redlink=1"Narcissus,开放源代码, 由Brendan

Eich编写(他也参与编写了第一个SpiderMonkey)。

 marin_(JavaScript引擎)&action=edit&redlink=1"Tamarin,由Adobe Labs编写,Flash

Player 9所使用的引擎。

 Nitro(原名SquirrelFish),为 4编 写。

 esto_(layout_engine)&action=edit&redlink=1"Carakan,由ra软件公司编写,自0.50版

本开始使用。

性能演化

Mozilla采用PGO(Profile-guided Optimizations)特性指引优化,使Firefox 3.0的性能大幅提升。HYPERLINK "/zh-cn/6月30日"6月30日发布的Firefox 3.5使用了Tracing和Nanojit技术,能“在某些情况下的速度提升20到40倍”,其中Nanojit的代码由Adobe贡献。note-1"[2]

2008年6月2日,WebKit开发团队声明了SquirrelFish—— 一个新的JavaScript引擎能极大地提升Safari解释脚本的速度。该引擎是Safari 4其中一个新特性,在2008年6月11日发布给程序员使用;最终此JavaScript引擎被称为Nitro。

在浏览器开发者之间展开了一场开发更快的JavaScript引擎的竞赛。2008年,Google Chrome因它的JavaScript性能而被受称赞,但是其它浏览器马上使用了更快的JavaScript引擎。之后,Google Chrome在性能上获得领先,其长处在于它高速的性能和vaScript的 处理速度,这些都由许多网站在主要的浏览器之间的速度测试中得到验证。note-4"[5]note-5"[6]note-6"[7]随 着WebKit的_development"Squirrelfish Extreme和Mozilla的TraceMonkey JavaScript虚拟机 出现,Chrome的JavaScript执行速度就被超越了。Google 丹麦在Chrome 2中开发了更快速的引擎)"V8引擎。

一个典型的浏览器有一个图形引擎和一个独立的JavaScript引擎。这样JavaScript引擎能够被更方便的测试、重新生成或者在另一些项 目中使用。例如Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在 KHTML中,Rhino默认不包含任何布局引擎。但还有其他组合,例如V8与WebKit被用于Google Chrome中。JavaScript引擎能为程序员提供部分操作浏览器的功能(网络、DOM、外部事件、HTML5视频、canvas和存储)。

nSpider_JavaScript基准测试&action=edit&redlink=1"Sunspider是一个器速度测试&action=edit&redlink=1"JavaScript实用基准测试通过一系列关于JavaScript 语言的脚本测试JavaScript引擎的速度。Sunspider不测试无关于JavaScript的特性(不使用HTML、CSS和无网络情况下)。

实现

JavaScript是一种MAScript方言,在许多程序中得以实现,特别是在这些方言通常扩展了语

言,或者库&action=edit&redlink=1"标准库和相关如意味着以一种方言实现的程序不兼容于另一种方言的实现,除非程序使用了方言中的公共子集所具有的特性 和API。

在实现和方言中存在着一些差别。一种语言的方言有一些与语言不同的地方。实现能够执行该语言或方言编写的程序。

应用程序(实现)

Google Chrome,引擎)"V8引擎

x"Mozilla Firefox,版引擎,SpiderMonkey和ino_(JavaScript_engine)&action=edit&redlink=1"Rhino

ECMAScript与一些vaScript 1.5特性及一些pt扩 展

版引擎,KDE项目的queror与苹果的

Adobe Acrobat

enLaszlo&action=edit&redlink=1"OpenLaszlo Platform

x/MSP&action=edit&redlink=1"Max/MSP

esco_(网页浏览器)&action=edit&redlink=1"ANT

Galio 3

方言和最后版本

vaScript

vaScript1.8.1

ECMAScript与一些vaScript 1.5特性及一些pt扩 展

vaScript1.5

vaScript1.5

vaScript1.4

vaScript1.5

vaScript1.5附带ch_Media_Access_Interface&action=edit&redlink=1"RMAI扩展

ECMAScript版本

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

ECMA-262,版本3

本文标签: 引擎内核浏览器网页速度