首先得搞懂瀏覽器內核究竟指的是什麼。javascript
瀏覽器內核又能夠分紅兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,而後會輸出至顯示器或打印機。瀏覽器的內核的不一樣對於網頁的語法解釋會有不一樣,因此渲染的效果也不相同。全部網頁瀏覽器、電子郵件客戶端以及其它須要編輯、顯示網絡內容的應用程序都須要內核。JS 引擎則是解析 Javascript 語言,執行 javascript 語言來實現網頁的動態效果。html
最開始渲染引擎和 JS 引擎並無區分的很明確,後來 JS 引擎愈來愈獨立,內核就傾向於只指渲染引擎。有一個網頁標準計劃小組製做了一個 ACID 來測試引擎的兼容性和性能。內核的種類不少,如加上沒什麼人使用的非商業的免費內核,可能會有 10 多種,可是常見的瀏覽器內核能夠分這四種:Trident、Gecko、Blink、Webkit。java
Trident(IE內核):該內核程序在 1997 年的 IE4 中首次被採用,是微軟在 Mosaic("馬賽克",這是人類歷史上第一個瀏覽器,今後網頁能夠在圖形界面的窗口瀏覽) 代碼的基礎之上修改而來的,並沿用到 IE11,也被廣泛稱做 "IE內核"。程序員
Trident其實是一款開放的內核,其接口內核設計的至關成熟,所以纔有許多采用 IE 內核而非 IE 的瀏覽器(殼瀏覽器)涌現。因爲 IE 自己的 "壟斷性"(雖然名義上 IE 並不是壟斷,但實際上,特別是從 Windows 95 年代一直到 XP 初期,就市場佔有率來講 IE 的確藉助 Windows 的東風處於 "壟斷" 的地位)而使得 Trident 內核的長期一家獨大,微軟很長時間都並無更新 Trident 內核,這致使了兩個後果——一是 Trident 內核曾經幾乎與 W3C 標準脫節(2005年),二是 Trident 內核的大量 Bug 等安全性問題沒有獲得及時解決,而後加上一些致力於開源的開發者和一些學者們公開本身認爲 IE 瀏覽器不安全的觀點,也有不少用戶轉向了其餘瀏覽器,Firefox 和 Opera 就是這個時候興起的。非 Trident 內核瀏覽器的市場佔有率大幅提升也導致許多網頁開發人員開始注意網頁標準和非 IE瀏覽器的瀏覽效果問題。web
補充:IE 從版本 11 開始,初步支持 WebGL 技術。IE8 的 JavaScript 引擎是 Jscript,IE9 開始用 Chakra,這兩個版本區別很大,Chakra 不管是速度和標準化方面都很出色。chrome
國內不少的雙核瀏覽器的其中一核即是 Trident,美其名曰 "兼容模式"。django
Window10 發佈後,IE 將其內置瀏覽器命名爲 Edge,Edge 最顯著的特色就是新內核 EdgeHTML。關於 Edge 瀏覽器更多能夠參考 如何評價 Microsoft Edge 瀏覽器? 以及 微軟開源Edge的JS引擎ChakraCore瀏覽器
關於 IE 的歷史,推薦這篇文章 激盪20年:IE瀏覽器的輝煌與落寞安全
Gecko(Firefox 內核):Netscape6 開始採用的內核,後來的 Mozilla FireFox(火狐瀏覽器) 也採用了該內核,Gecko 的特色是代碼徹底公開,所以,其可開發程度很高,全世界的程序員均可覺得其編寫代碼,增長功能。由於這是個開源內核,所以受到許多人的青睞,Gecko 內核的瀏覽器也不少,這也是 Gecko 內核雖然年輕但市場佔有率可以迅速提升的重要緣由。網絡
事實上,Gecko 引擎的由來跟 IE 不無關係,前面說過 IE 沒有使用 W3C 的標準,這致使了微軟內部一些開發人員的不滿;他們與當時已經中止更新了的 Netscape 的一些員工一塊兒創辦了 Mozilla,以當時的 Mosaic 內核爲基礎從新編寫內核,因而開發出了 Gecko。不過事實上,Gecko 內核的瀏覽器仍然仍是 Firefox (火狐) 用戶最多,因此有時也會被稱爲 Firefox 內核。此外 Gecko 也是一個跨平臺內核,能夠在Windows、 BSD、Linux 和 Mac OS X 中使用。
一提到 webkit,首先想到的即是 chrome,能夠說,chrome 將 Webkit內核 深刻人心,卻不知,Webkit 的鼻祖實際上是 Safari。如今不少人錯誤地把 webkit 叫作 chrome內核(即便 chrome內核已是 blink 了),蘋果都哭瞎了有木有。
Safari 是蘋果公司開發的瀏覽器,使用了KDE(Linux桌面系統)的 KHTML 做爲瀏覽器的內核,Safari 所用瀏覽器內核的名稱是大名鼎鼎的 WebKit。 Safari 在 2003 年 1 月 7 日首度發行測試版,併成爲 Mac OS X v10.3 與以後版本的默認瀏覽器,也成爲蘋果其它系列產品的指定瀏覽器(也已支持 Windows 平臺)。
如上述可知,WebKit 前身是 KDE 小組的 KHTML 引擎,能夠說 WebKit 是 KHTML 的一個開源的分支。當年蘋果在比較了 Gecko 和 KHTML 後,選擇了後者來作引擎開發,是由於 KHTML 擁有清晰的源碼結構和極快的渲染速度。
Webkit內核 能夠說是以硬件盈利爲主的蘋果公司給軟件行業的最大貢獻之一。隨後,2008 年穀歌公司發佈 chrome 瀏覽器,採用的 chromium 內核便 fork 了 Webkit。
PS:Apple 在 Safari 裏面使用了本身的 Nitro JavaScript 引擎(只用 WebKit 來渲染 HTML),因此通常說到 Webkit,一般指的就是渲染引擎(而不包括 Javascript 引擎)
2008 年,谷歌公司發佈了 chrome 瀏覽器,瀏覽器使用的內核被命名爲 chromium。
chromium fork 自開源引擎 webkit,卻把 WebKit 的代碼梳理得可讀性提升不少,因此之前可能須要一天進行編譯的代碼,如今只要兩個小時就能搞定。所以 Chromium 引擎和其它基於 WebKit 的引擎所渲染頁面的效果也是有出入的。因此有些地方會把 chromium 引擎和 webkit 區分開來單獨介紹,而有的文章把 chromium 納入 webkit 引擎中,都是有必定道理的。
谷歌公司還研發了本身的 Javascript 引擎,V8,極大地提升了 Javascript 的運算速度。
chromium 問世後,帶動了國產瀏覽器行業的發展。一些基於 chromium 的單核,雙核瀏覽器如雨後春筍般拔地而起,例如 搜狗、360、QQ瀏覽器等等,無一不是套着不一樣的外殼用着相同的內核。
然而 2013 年 4 月 3 日,谷歌在 Chromium Blog 上發表 博客,稱將與蘋果的開源瀏覽器核心 Webkit 分道揚鑣,在 Chromium 項目中研發 Blink 渲染引擎(即瀏覽器核心),內置於 Chrome 瀏覽器之中。
webkit 用的好好的,爲什麼要投入到一個新的內核中去呢?
Blink 實際上是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 項目此前一直使用 WebKit(WebCore) 做爲渲染引擎,但出於某種緣由,並無將其多進程架構移植入Webkit。
後來,因爲蘋果推出的 WebKit2 與 Chromium 的沙箱設計存在衝突,因此 Chromium 一直停留在 WebKit,並使用移植的方式來實現和主線 WebKit2 的對接。這增長了 Chromium 的複雜性,且在必定程度上影響了 Chromium 的架構移植工做。
基於以上緣由,Google 決定從 WebKit 衍生出本身的 Blink 引擎(後由 Google 和 Opera Software 共同研發),將在 WebKit 代碼的基礎上研發更加快速和簡約的渲染引擎,並逐步脫離 WebKit 的影響,創造一個徹底獨立的 Blink 引擎。這樣以來,惟一一條維繫 Google 和蘋果之間技術關係的紐帶就這樣被切斷了。
Google 和蘋果在多個領域都是競爭對手,而惟獨在瀏覽器引擎上有技術合做,利益一致。但爲了各自的利益,誰都不會拿出 100% 的 "誠意" 來作好 WebKit,由於你作出來的成果競爭對手能夠直接享用。移動互聯網已經崛起,手機和平板設備端必將成爲瀏覽器的另外一個戰場。這個時候,若是 Google 跟蘋果仍然黏在一塊兒,將會嚴重阻礙雙方的進步,也會阻礙 WebKit 的進步。
聽說 Blink 刪除了 880w 行 webkit 代碼。
至於爲何叫 blink?有興趣的能夠看下這篇訪談 Paul Irish on Chrome Moving to Blink,裏面說
複製代碼it fits that Blink will never support the infamous <blink> tag.
Blink 引擎問世後,國產各類 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱,能夠在瀏覽器地址欄輸入 chrome://version
進行查看。好比在 360 下:
Presto 是挪威產瀏覽器 opera 的 "前任" 內核,爲什麼說是 "前任",由於最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。
Opera 的一個里程碑做品是 Opera7.0,由於它使用了 Opera Software 自主開發的 Presto 渲染引擎,取代了舊版 Opera 4 至 6 版本使用的 Elektra 排版引擎。該款引擎的特色就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。
Presto 加入了動態功能,例如網頁或其部分可隨着 DOM 及 Script 語法的事件而從新排版。Presto 在推出後不斷有更新版本推出,使很多錯誤得以修正,以及閱讀 Javascript 效能得以最佳化,併成爲當時速度最快的引擎。
然而爲了減小研發成本,Opera 在 2013 年 2 月宣佈放棄 Presto,轉而跟隨 Chrome 使用 WebKit 分支的 Chromium 引擎做爲自家瀏覽器核心引擎,Presto 內核的 Opera 瀏覽器版本永遠的停留在了 12.17。在 Chrome 於 2013 年推出 Blink 引擎以後,Opera 也緊跟其腳步表示將轉而使用 Blink 做爲瀏覽器核心引擎。
Presto 與開源的 WebKit 和通過谷歌加持的 Chromium 系列相比毫無推廣上的優點,這是 Opera 轉投 WebKit 的主要緣由,而且使用 WebKit 內核的 Opera 瀏覽器能夠兼容谷歌 Chrome 瀏覽器海量的插件資源。可是換內核的代價對於 Opera 來講過於慘痛。使用谷歌的 WebKit 內核以後,本來快速,輕量化,穩定的 Opera 瀏覽器變得異常的卡頓,並且表現不穩定,Opera 本來舊內核瀏覽器書籤同步到新內核上的工做 Opera 花了整整兩年時間,期間不少 Opera 的用戶紛紛轉投谷歌瀏覽器和其餘瀏覽器,形成了衆多的用戶流失。時至今日如今還有上千萬人在使用老版本的 Opera。
不少人都認爲 Opera 瀏覽器終止在了 12.17,此後所更新的 Opera 版本號再也不是原來那個 Opera。
說好的 Presto Forever 呢?
移動端的瀏覽器內核主要說的是系統內置瀏覽器的內核。
目前移動設備瀏覽器上經常使用的內核有 Webkit,Blink,Trident,Gecko 等,其中 iPhone 和 iPad 等蘋果 iOS 平臺主要是 WebKit,Android 4.4 以前的 Android 系統瀏覽器內核是 WebKit,Android4.4 系統瀏覽器切換到了Chromium,內核是 Webkit 的分支 Blink,Windows Phone 8 系統瀏覽器內核是 Trident。
瀏覽器內核主要指的是瀏覽器的渲染引擎,2013 年之前,表明有 Trident(IE),Gecko(firefox),Webkit(Safari chrome 等)以及 Presto(opera)。2013 年,谷歌開始研發 blink 引擎,chrome 28 之後開始使用,而 opera 則放棄了自主研發的 Presto 引擎,投入谷歌懷抱,和谷歌一塊兒研發 blink 引擎,國內各類 chrome系的瀏覽器(360、UC、QQ、2345 等等)也紛紛放棄 webkit,投入 blink 的懷抱。
還有一點文章裏沒有說的很明白,就是 Webkit 實際上是 KHTML 的分支,這裏的 KHTML 指渲染引擎,Webkit 其實就泛指了 Webkit 的渲染引擎 WebCore,而 Webkit 引擎的 Javascript 引擎 JSCore 則是 KJS 的分支。而 chrome 則搭載了本身的 Javascript 引擎 V8。引用 各主流瀏覽器內核介紹 裏的一段話:
咱們上面提到 Chrome 是基於 WebKit 的分支,而 WebKit 又由渲染引擎 "WebCore" 和 JS 解釋引擎 "JSCore" 組成,可能會讓你搞不清 V8 和 JSCore 的關係。你能夠這樣理解—— WebKit 是一塊主板,JSCore 是一塊可拆卸的內存條,谷歌實際上認爲 Webkit 中的 JSCore 不夠好,才本身搞了一個 V8 JS 引擎,這就是 Chrome 比 Safari 在某些 JS 測試中效率更高的緣由。
若是說 chromium 還不足以脫離 Webkit 的 "帽子",Blink 的出現,表明着 chrome 將自主研發渲染引擎(Blink)以及 Javascript 引擎(V8)。能夠期待在不久的未來,人們談起 chrome 想到的不是 Webkit 而是 Blink。
轉自http://www.cnblogs.com/zichi/p/5116764.html