本文介紹了常用瀏覽器內核與JavaScript引擎
一、瀏覽器內核
Rending Engine, 顧名思義,稱之為渲染網頁內容的,將網頁的代碼轉換為你看得見的頁面,因為是排版,所以排版,所以肯定會有排版錯誤等問題。為什么會有排版錯誤呢,一部分是由于網站本身編寫不規范,另一方面是瀏覽器本身的不規范,現在有一些主流的排版引擎,因為這些排版引擎都有其代表的瀏覽器,所以常常會把排版引擎的名稱和瀏覽器的名稱混用,其實這樣是不合理的,因為一個完整的瀏覽器不會只有唯一的排版引擎,還有自己的界面框架和其他的功能支撐,而排版引擎本身也不可能實現瀏覽器的所有功能,下面羅列出幾款主流的的排版引擎和瀏覽器
1、Trident內核(window)
Trident就是大名鼎鼎的IE瀏覽器所使用的內核,也是很多瀏覽器所使用的內核,MS現在采用的越來越少,反之使用webkit的越來越多,老的trident內核(比如IE6)當年占得市場份額很大,后果就是大量的網頁是專門為IE6等老trident內核編寫,但這些網頁的代碼并不符合w3c標準,于是完全符合w3c標準的網頁在老trident內核下出現了偏差,這就是為什么后來很多人覺得后來的IE9網頁排版有點混亂,而IE6正常,其實不是瀏覽器的兼容性差了,而是你訪問的的網頁不符合新的標準,目前可供調用的最新版的Trident內核是IE9使用的內核,較之前的版本對w3c的標準支持增了很多
基于Trident內核的瀏覽器有:
ie6,ie7,ie8(Trident 4.0) , ie9(trident 5.0) , ie10(trident6.0);
世界之窗,360安全瀏覽器, 遨游2.0(3.0以上版本開始采用webkit內核),搜狗瀏覽器,騰訊TT;其中部分版本的瀏覽器是雙核瀏覽器,甚至是多核,
2、Gecko(跨平臺)
Natescape6啟用的內核,現在又mozilla基金會進行維護,是開源的瀏覽器內核,目前主流的Gecko內核是mozilla firefox, 由于firefox的出現,IE的霸主地位逐漸被削弱,chrome的出現加速了這個進程,非trident內核的興起逐漸改變了整個互聯網的格局,最直接的推動是編碼的標準化,也使MS在競爭的壓力下不得不改進IE,不過可惜的是,雖然是開源的,也開發了這么多年,基于Gecko的瀏覽器并不多見,除了一些簡單的改動或者重新編譯,深度定制或者增了強外殼的還是比較少見。另外就是一些軟件借用了Gecko,比如音樂管理軟件songbird
3、khtml(Linux)
KDE開發的內核,速度快捷,容錯率低,這種內核不見得有很多人知道,但后面看下去你就會明白,常見的khtml內核的瀏覽器有:konqueror
4、webkit(跨平臺)
由khtml發展而來,也是apple給開源世界的一大貢獻,是目前最火熱的瀏覽器內核,火熱的不是說它的市場份額,而是應用的面積和勢頭,因為脫胎于khtml,所以具有高速的特點,同樣遵守w3c標準,從目前來看,webkit內核是最具有潛力而且是已經有相當成績的新型內核,性能非常好,對w3c標準的支持也非常完善,本人十分看好他、
常見的基于webkit內核的瀏覽器主要有:
apple 的safari(win/mac/iphone/ipad) 、google的chrome、塞班手機瀏覽器、Android手機默認的瀏覽器
5、Presto(跨平臺)
opera所 采用的內核,準確的說是opera7.0及以后的版本采用的內核,之前的版本采用的內核是elektra, 無容置疑,Presto內核對w3c的支持也很良好,presto對頁面文字的解析方面的性能比webkit還要高,對頁面有較高的閱讀性。
然而為了減少研發成本,Opera在2013年2月宣布放棄Presto,轉而跟隨Chrome使用WebKit分支的Chromium引擎作為自家瀏覽器核心引擎。
在Chrome與2013年推出Blink引擎(也是基于WebKit的分支)之后,Opera也緊跟其腳步表示將轉而使用Blink作為瀏覽器核心引擎。
基于presto的內核的瀏覽器有:opera
二、JavaScript引擎
說完了排版引擎,下面來說說JavaScript引擎,顧名思義,js引擎就是用來執行javascript代碼的, 簡單的舉個例子,一個計算圓周率的網頁,排版引擎把頁面的框架顯示出來,最終的結果要用javascript來計算,所以javascript引擎的快慢也是對整個網頁的速度有很大的影響,特別是最近 目前越來越多的類似webQQ、Gmail等大量復雜的基于javascript運算的網站,不同的執行引擎的速度的差別很顯然易見。為甚么要單獨拿出來說,因為還涉及到跑分,現在通俗的說那個瀏覽器更快,實際上是指執行javascript腳本的速度也就是javascript的渲染速度,而不是頁面的載入速度,在網速允許的情況下,其實各瀏覽器的網頁載入的速度差別不是很大,由于現在javascript在頁面中的比重越來越大,越來越多的動態畫面開始大量借助于javascript,比如現在主流的SNS、郵箱、網頁游戲,所以javascript的渲染速度也是一個很重要的指標,javascript的渲染速度越快,動態頁面的顯示也就是越快,opera在javascript引擎的跑分上一直是遙遙領先的,一般來說在最新版本之間PK,opera基本上都會奪冠。
1、IE
chakra:查克拉,IE9啟用的新的javascript引擎
2、Chrome
V8:開源,由Google丹麥開發,是Google Chrome的一部分。
注:我們上面提到Chrome是基于WebKit的分支,而WebKit又由渲染引擎“WebCore”和JS解釋引擎“JSCore”組成,可能會讓你搞不清V8和JSCore的關系。你可以這樣理解——WebKit是一塊主板,JSCore是一塊可拆卸的內存條,谷歌實際上認為Webkit中的JSCore不夠好,才自己搞了一個V8 JS引擎,這就是Chrome比Safari在某些JS測試中效率更高的原因。
3、Opera
Linear A:用于Opera 4.0~6.1版本。
Linear B:用于Opera 7.0~9.2版本。
Futhark:用于Opera 9.5~10.2版本。
Carakan:由Opera軟件公司編寫,自Opera10.50版本開始使用。
4、Firefox
SpiderMonkey:第一款JavaScript引擎,由Brendan Eich在Netscape Communications時編寫,用于Mozilla Firefox 1.0~3.0版本。
Rhino:由Mozilla基金會管理,開放源代碼,完全以Java編寫。
TraceMonkey:基于實時編譯的引擎,其中部份代碼取自Tamarin引擎,用于Mozilla Firefox 3.5~3.6版本。
JaegerMonkey:德文J?ger原意為獵人,結合追蹤和組合碼技術大幅提高性能,部分技術借鑿了V8、JavaScriptCore、WebKit:用于Mozilla Firefox 4.0以上版本。
IonMonkey:可以對JavaScript編譯后的結果進行優化,用于Mozilla Firefox 18.0以上版本。
OdinMonkey:可以對asm.js進行優化,用于Mozilla Firefox 22.0以上版本。
5、其它
KJS:KDE的ECMAScript/JavaScript引擎,最初由Harri Porten開發,用于KDE項目的Konqueror網頁瀏覽器中。
Narcissus:開放源代碼,由Brendan Eich編寫(他也參與編寫了第一個SpiderMonkey)。
Tamarin:由Adobe Labs編寫,Flash Player 9所使用的引擎。
Nitro(原名SquirrelFish):為Safari 4編寫。