各种主流浏览器内核引擎的对比分析
要搞清楚瀏覽器內(nèi)核是什么,首先應(yīng)該先搞清楚瀏覽器的構(gòu)成。簡(jiǎn)單來(lái)說(shuō)瀏覽器可以分為 兩部分,shell+內(nèi)核。其中shell的種類(lèi)相對(duì)比較多,內(nèi)核則比較少。Shell是指瀏覽器的外殼:例如菜單,工具欄等。主要是提供給用戶(hù)界面操 作,參數(shù)設(shè)置等等。它是調(diào)用內(nèi)核來(lái)實(shí)現(xiàn)各種功能的。內(nèi)核才是瀏覽器的核心。內(nèi)核是基于標(biāo)記語(yǔ)言顯示內(nèi)容的程序或模塊。也有一些瀏覽器并不區(qū)分外殼和內(nèi)核。 從Mozilla將Gecko獨(dú)立出來(lái)后,才有了外殼和內(nèi)核的明確劃分。目前主流的瀏覽器有IE6、IE8、Mozilla、FireFox、 Opera、Safari、Chrome、Netscape等。
什么是瀏覽器內(nèi)核
瀏覽器內(nèi)核又可以分成兩部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。它負(fù)責(zé)取得網(wǎng)頁(yè)的內(nèi)容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計(jì)算網(wǎng)頁(yè)的顯示方式,然后會(huì)輸出至 顯示器或打印機(jī)。瀏覽器的內(nèi)核的不同對(duì)于網(wǎng)頁(yè)的語(yǔ)法解釋會(huì)有不同,所以渲染的效果也不相同。所有網(wǎng)頁(yè)瀏覽器、電子郵件客戶(hù)端以及其它需要編輯、顯示網(wǎng)絡(luò)內(nèi) 容的應(yīng)用程序都需要內(nèi)核。(參見(jiàn)維基百科)JS引擎則是解析Javascript語(yǔ)言,執(zhí)行javascript語(yǔ)言來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)的動(dòng)態(tài)效果。最開(kāi)始渲染引 擎和JS引擎并沒(méi)有區(qū)分的很明確,后來(lái)JS引擎越來(lái)越獨(dú)立,內(nèi)核就傾向于只指渲染引擎。有一個(gè)網(wǎng)頁(yè)標(biāo)準(zhǔn)計(jì)劃小組制作了一個(gè)ACID來(lái)測(cè)試引擎的兼容性和性 能。內(nèi)核的種類(lèi)很多,如加上沒(méi)什么人使用的非商業(yè)的免費(fèi)內(nèi)核,可能會(huì)有10多種,但是常見(jiàn)的瀏覽器內(nèi)核可以分這四種:Trident、Gecko、 Presto、Webkit。
Trident又稱(chēng)MSHTML,是微軟開(kāi)發(fā)的渲染引擎(包含了Javascript引擎JScript),他已經(jīng)深入了Windows操作系統(tǒng)的 骨髓,例如Windows Media Play,Windows Explorer,Outlook Express等都使用了。目前很多瀏覽器都使用這個(gè)引擎,例如IE,Maxthon(最新版已經(jīng)不使用)等。
Gecko是C++開(kāi)發(fā)的,Open Source的渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有Firefox。
Webkit是蘋(píng)果公司基于KHTML開(kāi)發(fā)的。他包括Webcore和JavaScriptCore(SquirrelFish,V8)兩個(gè)引擎。主要的使用者有Safari,Chrome。
Presto由Opera Software公司開(kāi)始的,用于Opera的渲染引擎。Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了Presto的內(nèi)核。
主流瀏覽器所使用的內(nèi)核分類(lèi)
Trident內(nèi)核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等
Gecko內(nèi)核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內(nèi)核:Opera7及以上
Webkit內(nèi)核:Safari,Chrome等
| Engine | Creator | Software license | Leading application |
| Gecko | Netscape/Mozilla Foundation | MPL/GNU GPL/GNU LGPL tri-license | Mozilla Firefox |
| KHTML | KDE | GNU LGPL | Konqueror |
| Presto | Opera Software | Proprietary | Opera |
| Tasman | Microsoft | Proprietary | Microsoft Entourage |
| Trident | Microsoft | Proprietary | Internet Explorer |
| WebKit (Based on KHTML) | WebKit Foundation | GNU LGPL, BSD-style | Safari, Google Chrome |
JS引擎
JavaScript最初由網(wǎng)景公司的Brendan Eich設(shè)計(jì),是一種動(dòng)態(tài)、弱類(lèi)型、基于原型的語(yǔ)言,內(nèi)置支持類(lèi)。以它為基礎(chǔ),制定了ECMAScript標(biāo) 準(zhǔn)。他的起源并不是如《Javascript高級(jí)程序設(shè)計(jì)》書(shū)中所述,是Brendan Eich自主發(fā)明的。(參考aimingoo的考證文章)JavaScript在瀏覽器的實(shí)現(xiàn)中還必須含有DOM和BOM。Web瀏覽器一般使用公共 API來(lái)創(chuàng)建主機(jī)對(duì)象來(lái)負(fù)責(zé)將DOM對(duì)象反射進(jìn)JavaScript。
| ? | Trident | Gecko | WebKit | KHTML | Presto | |
| Name of ECMAScript Engine | JScript | Spidermonkey | JavaScriptCore | KJS | linear b/futhark | |
| ECMAScript Version | Edition 3 | Yes | 0.6 | Yes | Yes | 7.0 |
| JavaScript 1.5 extensions | No | 0.6 | Yes | Yes | 7.0 | |
| JavaScript 1.7 extensions | No | 1.8.1 | No | No | No | |
| JavaScript 1.8 extensions | No | 1.9 | No | No | No | |
瀏覽器內(nèi)核實(shí)現(xiàn)原理
渲染流程如下所示:
Mozilla架構(gòu)設(shè)計(jì):界面和實(shí)現(xiàn)分離。采用標(biāo)記語(yǔ)言,JavaScript,C++來(lái)開(kāi)發(fā)。JSEngine就是指SpideMonkey,Layout就是指Gecko。Mozilla的一個(gè)關(guān)鍵部分是XPCOM和NSPR。
Webkit的處理流程:
瀏覽器內(nèi)核的優(yōu)缺點(diǎn)
Trident:這種瀏覽器內(nèi)核是IE瀏覽器用的內(nèi)核,因?yàn)樵谠缙贗E 占有大量的市場(chǎng)份額,所以這種內(nèi)核比較流行,以前有很多網(wǎng)頁(yè)也是根據(jù)這個(gè)內(nèi)核的標(biāo)準(zhǔn)來(lái)編寫(xiě)的,但是實(shí)際上這個(gè)內(nèi)核對(duì)真正的網(wǎng)頁(yè)標(biāo)準(zhǔn)支持不是很好,甚至在 2005年,與網(wǎng)頁(yè)標(biāo)準(zhǔn)制定組織(W3C理事會(huì))所制定的標(biāo)準(zhǔn)發(fā)生了脫節(jié),同時(shí) Trident 內(nèi)核本身的BUG比較多,對(duì)一些符合W3C標(biāo)準(zhǔn)的網(wǎng)頁(yè)代碼支持不是很好,這在早期的IE版本中比較明顯,比如IE5.5以前(包括IE5.5),其實(shí) IE6對(duì)W3C標(biāo)準(zhǔn)的支持也不是很好,而我們現(xiàn)在很多人都在使用IE6,事實(shí)上它也屬于一個(gè)比較早的版本。
但是由于IE的高市場(chǎng)占有率,微軟也很長(zhǎng)時(shí)間沒(méi)有更新Trident內(nèi)核,這導(dǎo)致了二個(gè)結(jié)果
1,Trident內(nèi)核和W3C標(biāo)準(zhǔn)脫節(jié)。
2,Trident內(nèi)核的大量Bug等安全問(wèn)題沒(méi)有得到解決,加上一些專(zhuān)家學(xué)者公開(kāi)自己認(rèn)為IE瀏覽器不安全的觀點(diǎn),使很多用戶(hù)開(kāi)始轉(zhuǎn)向其他瀏覽器,FF,Opera就是這時(shí)期興起的。
Gecko:這是Firefox 和 Flock 所采用內(nèi)核,這個(gè)內(nèi)核的優(yōu)點(diǎn)就是功能強(qiáng)大、豐富,可以支持很多復(fù)雜網(wǎng)頁(yè)效果和瀏覽器擴(kuò)展接口,但是代價(jià)是也顯而易見(jiàn)就是要消耗很多的資源,比如內(nèi)存。
Presto:Opera 采用的是 Presto內(nèi)核,Presto內(nèi)核被稱(chēng)為公認(rèn)的瀏覽網(wǎng)頁(yè)速度最快的內(nèi)核,這得益于它在開(kāi)發(fā)時(shí)的天生優(yōu)勢(shì),在處理JS腳本等腳本語(yǔ)言時(shí),會(huì)比其他的內(nèi)核快3倍左右,缺點(diǎn)就是為了達(dá)到很快的速度而丟掉了一部分網(wǎng)頁(yè)兼容性。
Webkit:Webkit 是 Safari 采用的內(nèi)核,不過(guò) Safari 是蘋(píng)果系統(tǒng)下的瀏覽器(雖然也有windows版,但是比較少),所以只簡(jiǎn)單介紹一下這個(gè)內(nèi)核的優(yōu)點(diǎn)和缺點(diǎn),優(yōu)點(diǎn)就是網(wǎng)頁(yè)瀏覽速度較快,雖然不及 Presto 但是也勝于 Gecko 和 Trident,缺點(diǎn)是對(duì)于網(wǎng)頁(yè)代碼的容錯(cuò)性不高,也就是說(shuō)對(duì)網(wǎng)頁(yè)代碼的兼容性較低,會(huì)使一些編寫(xiě)不標(biāo)準(zhǔn)的網(wǎng)頁(yè)無(wú)法正確顯示。
總結(jié):就瀏覽器來(lái)說(shuō),互聯(lián)網(wǎng)經(jīng)歷了十年的高速發(fā)展期,近幾年市場(chǎng)上也推出了很多新的瀏覽器,但是他們并非是采用自主開(kāi)發(fā)的內(nèi)核,所以瀏覽器內(nèi)核本身實(shí)際沒(méi)有實(shí)質(zhì)突破。
在CSS3中,各個(gè)瀏覽器的私有屬性前綴:
-moz代表firefox瀏覽器私有屬性 -ms代表IE瀏覽器私有屬性 -webkit代表chrome、safari私有屬性 -o-表示opera轉(zhuǎn)載于:https://www.cnblogs.com/wangjunqiao/p/5212561.html
總結(jié)
以上是生活随笔為你收集整理的各种主流浏览器内核引擎的对比分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: github网站下载方法
- 下一篇: 2017年html5行业报告,云适配发布