只是使用者看到僅僅只是瀏覽器本身,卻很少能看到瀏覽器最核心的部分—瀏覽器核心。從第一款libwww(Library WorldWideWeb)瀏覽器發展至今已經經歷了無數競爭與淘汰了。現在國內常見的瀏覽器有:IE、Firefox、QQ瀏覽器、Safari、Opera、Google Chrome、百度瀏覽器、搜狗瀏覽器、獵豹瀏覽器、360瀏覽器、UC瀏覽器、遨遊瀏覽器、世界之窗瀏覽器等。但目前最為主流瀏覽器有五大款,分別是IE、Firefox、Google Chrome、Safari、Opera。

瀏覽器最重要的部分是瀏覽器的核心。瀏覽器核心是瀏覽器的核心,也稱“渲染引擎”,用來解釋網頁語法並渲染到網頁上。瀏覽器核心決定了瀏覽器該如何顯示網頁內容以及頁面的格式資訊。不同的瀏覽器核心對網頁的語法解釋也不同,因此網頁開發者需要在不同核心的瀏覽器中測試網頁的渲染效果。

瀏覽器核心又可以分成兩部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。它負責取得網頁的內容(HTML、XML、影象等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,然後會輸出至顯示器或印表機。瀏覽器的核心的不同對於網頁的語法解釋會有不同,所以渲染的效果也不相同。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網路內容的應用程式都需要核心。JS 引擎則是解析 Javascript 語言,執行 javascript 語言來實現網頁的動態效果。

最開始渲染引擎和 JS 引擎並沒有區分的很明確,後來 JS 引擎越來越獨立,核心就傾向於只指渲染引擎。有一個網頁標準計劃小組製作了一個 ACID 來測試引擎的相容性和效能。核心的種類很多,如加上沒什麼人使用的非商業的免費核心,可能會有 10 多種,但是常見的瀏覽器核心可以分這四種:Trident、Gecko、Blink、Webkit。

1、IE瀏覽器:

IE是微軟公司旗下瀏覽器,是目國內使用者量最多的瀏覽器。IE誕生於1994年,當時微軟為了對抗市場份額佔據將近百分之九十的網景Netscape Navigator,於是在Windows中開發了自己的瀏覽器Internet Explorer,自此也引發了第一次瀏覽器大戰。結果可想而知,微軟大獲全勝,網景不得不將自己賣給AOL公司。但實際上事情並沒有結束,網景後來開發了風靡一時的Firefox火狐,至今Firefox也成為世界五大瀏覽器之一。

1996年,微軟從Spyglass手裡拿到Spyglass Mosaic的原始碼和授權,開始開發自己的瀏覽器IE。後來,微軟以IE和Windows捆綁的模式不斷向市場擴充套件份額,使IE成為市場的絕對主流。現在裝了Windows系統的電腦基本無法解除安裝IE。

2、Opera瀏覽器:

Opera是挪威Opera Software ASA公司旗下的瀏覽器。1995年,opera公司釋出第一版Opera瀏覽器,使用自己研發的Presto核心。當時opera公司的開發團隊不斷完善Presto核心,使Opera瀏覽器一度成為頂級瀏覽器。直到2016年奇虎360和崑崙萬維收購了Oprea瀏覽器,從此也丟棄了強大的Presto核心,改用當時Google開源的webkit核心。後來Opera瀏覽器跟隨Google將瀏覽器核心改為Blink核心。自此Presto核心也淡出了網際網路市場。

3、Safari瀏覽器:

第二次瀏覽器大戰是從蘋果公司釋出Safari瀏覽器開始的。2003年,蘋果公司在蘋果手機上開發Safari瀏覽器,利用自己得天獨厚的手機市場份額使Safari瀏覽器迅速成為世界主流瀏覽器。Safari是最早使用webkit核心的瀏覽器也是現在蘋果預設的瀏覽器。

4、Firefox瀏覽器:

Firefox瀏覽器使Mozilla公司旗下瀏覽器,也是剛才提到的網景公司後來的瀏覽器。網景被收購後,網景人員創辦了Mozilla基金會,這是一個非盈利組織,他們在2004年推出自己的瀏覽器Firefox。Firefox採用Gecko作為核心。Gecko是一個開源的專案,程式碼完全公開,因此受到很多人的青睞。Firefox的問世加快了第二次瀏覽器大戰的開始。第二次瀏覽器大戰與第一次二元鼎力的局面不同,這一次的特點就是百家爭鳴,也自此打破了IE瀏覽器從98年網景被收購後獨步瀏覽器市場的局面。

5、Chrome瀏覽器:

Chrome瀏覽器是google旗下的瀏覽器。Chrome瀏覽器至釋出以來一直講究簡潔、快速、安全,所以Chrome瀏覽器到現在一直受人追捧。最開始Chrome採用webkit作為瀏覽器核心,直到2013年,google宣佈不再使用蘋果的webkit核心,開始使用webkit的分支核心Blink。

以上是五大瀏覽器的簡介,接下來是四大核心。在介紹五大瀏覽器的同時也已經順便介紹了四大核心。四大核心分別是:Trident(也稱IE核心)、webkit、Blink、Gecko。五大瀏覽器採用的都是單核心,而隨著瀏覽器的發展現在也出現了雙核心。像360瀏覽器、QQ瀏覽器都是採用雙核心。

作為前端開發,熟悉四大核心是非常有必要的。四大核心的解析不同使網頁渲染效果更具多樣化。下面總結一下各常用瀏覽器所使用的核心。

1、IE瀏覽器核心:Trident核心,也是俗稱的IE核心;

2、Chrome瀏覽器核心:統稱為Chromium核心或Chrome核心,以前是Webkit核心,現在是Blink核心;

3、Firefox瀏覽器核心:Gecko核心,俗稱Firefox核心;

4、Safari瀏覽器核心:Webkit核心;

5、Opera瀏覽器核心:最初是自己的Presto核心,後來是Webkit,現在是Blink核心;

6、360瀏覽器、獵豹瀏覽器核心:IE+Chrome雙核心;

7、搜狗、遨遊、QQ瀏覽器核心:Trident(相容模式)+Webkit(高速模式);

8、百度瀏覽器、世界之窗核心:IE核心;

9、2345瀏覽器核心:以前是IE核心,現在也是IE+Chrome雙核心;

Trident (['traɪd(ə)nt])

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瀏覽器的瀏覽效果問題。

補充:IE 從版本 11 開始,初步支援 WebGL 技術。IE8 的 JavaScript 引擎是 Jscript,IE9 開始用 Chakra,這兩個版本區別很大,Chakra 無論是速度和標準化方面都很出色。

國內很多的雙核瀏覽器的其中一核便是 Trident,美其名曰 “相容模式”。

Window10 釋出後,IE 將其內建瀏覽器命名為 Edge,Edge 最顯著的特點就是新核心 EdgeHTML。關於 Edge 瀏覽器更多可以參考 如何評價 Microsoft Edge 瀏覽器? 以及 微軟開源Edge的JS引擎ChakraCore

關於 IE 的歷史,推薦這篇文章 激盪20年:IE瀏覽器的輝煌與落寞

Gecko (['gekəʊ])

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

一提到 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 引擎)

Chromium/Blink

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,裡面說Blink 引擎問世後,國產各種 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱,可以在瀏覽器位址列輸入

chrome://version

進行檢視。比如在 360 下:

五大主流瀏覽器及四大核心

2020年1月16日微軟釋出基於chrominum的edge瀏覽器效能提升很大,可與chrome媲美

Presto (['prestəʊ])

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 的懷抱。

轉 一一Left一一。