主流瀏覽器發(fā)展史及其內(nèi)核初探

當(dāng)我們?cè)谛聲r(shí)代調(diào)侃 IE 瀏覽器兼容性問(wèn)題的時(shí)候田轧,或多或少忘記了 IE 瀏覽器是第一款支持 CSS 的商用瀏覽器兼呵;當(dāng)我們驚嘆于 Chrome 將 Webkit 內(nèi)核發(fā)揮的如此極致的時(shí)候,又或多或少忘記了 Safari 才是 Webkit 內(nèi)核的始作俑者。千姿百態(tài)的瀏覽器中,有的很早就被淘汰了似踱,有的直到現(xiàn)在還被廣泛使用在各類主流操作系統(tǒng)之上。有趣的是志衣,縱觀瀏覽器的發(fā)展史屯援,其內(nèi)核的派生猛们、競(jìng)爭(zhēng)與互相借鑒共同演繹出了盤根錯(cuò)節(jié)的“家族圖譜”念脯。

本文通過(guò)回顧兩次瀏覽器大戰(zhàn),并對(duì)各大主流瀏覽器的發(fā)展作出簡(jiǎn)介弯淘,展開一場(chǎng)瀏覽器內(nèi)核的初探之旅绿店,揭開神秘的面紗。

什么庐橙,足以稱之為瀏覽器

盡管在各式各樣的瀏覽器中有的僅提供純文字接口來(lái)實(shí)現(xiàn) HTML 頁(yè)面假勿,但絕大多數(shù)現(xiàn)代瀏覽器都或多或少擁有有如下特點(diǎn):

  • 可用于使用萬(wàn)維網(wǎng);
  • 提供豐富多彩的用戶界面:其中包括上下頁(yè)态鳖、刷新转培、地址欄、書簽浆竭、顯示源碼等功能浸须;
  • 支持解析多種網(wǎng)頁(yè)標(biāo)準(zhǔn):HTML、HTML5邦泄、CSS删窒、SVG、XHTML顺囊、WebGL肌索、JavaScript 和 MathML 等;
  • 支持多種文件格式及協(xié)議:可以通過(guò)瀏覽器打開特定格式的文件進(jìn)行查詢特碳、編輯等操作诚亚,且提供 HTTPS晕换、FTP 等網(wǎng)絡(luò)協(xié)議的支持;
  • 可通過(guò)多個(gè)窗口或多個(gè)標(biāo)簽頁(yè)同時(shí)打開多種由統(tǒng)一資源標(biāo)識(shí)符標(biāo)志的信息資源:網(wǎng)絡(luò)亡电、圖片届巩、影音等;
  • 可通過(guò)開放開發(fā)的瀏覽器插件來(lái)拓展瀏覽器功能份乒。

因此恕汇,我們可以將能夠提供上述多個(gè)功能的應(yīng)用程序稱之為瀏覽器。

瀏覽器大戰(zhàn)

2003 年或辖,蘋果公司開發(fā)的 Safari 瀏覽器代替微軟公司的 IE 瀏覽器瘾英,成為了 Mac OS X v10.3 之后版本的默認(rèn)瀏覽器。同時(shí) Safari 在不久之后帶來(lái)的大名鼎鼎的 Webkit 內(nèi)核颂暇,這一系列動(dòng)作都印證著曾大一統(tǒng)主流瀏覽器江山的 IE 瀏覽器份額逐漸受到其他瀏覽器蠶食缺谴,由此劃分開了第一輪瀏覽器大戰(zhàn)和第二輪瀏覽器大戰(zhàn)的時(shí)代背景。

第一輪大戰(zhàn)

第一輪瀏覽器大戰(zhàn)主要圍繞在二十世紀(jì)末期——人們開始注意到萬(wàn)維網(wǎng)耳鸯,而當(dāng)時(shí)的市場(chǎng)及網(wǎng)頁(yè)瀏覽標(biāo)準(zhǔn)均以 Netscape (網(wǎng)景公司)主導(dǎo)湿蛔。這一主導(dǎo)性來(lái)源于其推出的 Netscape Navigator 瀏覽器改進(jìn)了“史前”瀏覽器 Mosaic 的實(shí)用性及穩(wěn)定性,同時(shí)在網(wǎng)絡(luò)上提供免費(fèi)試用版?zhèn)z個(gè)要點(diǎn)县爬。這時(shí)阳啥,以用戶界面友好立足市場(chǎng)的微軟公司也通過(guò)爭(zhēng)取到 Mosaic 的授權(quán)開發(fā)出了 IE 瀏覽器。倆者為爭(zhēng)取更多的用戶來(lái)開了商業(yè)戰(zhàn)爭(zhēng)序幕财喳。

縱然 IE 瀏覽器步入市場(chǎng)較晚察迟,IE 瀏覽器從技術(shù)層面通過(guò)最先支持 CSS、新增網(wǎng)頁(yè)動(dòng)態(tài)加載及圖片位置改變等優(yōu)勢(shì)耳高,逐步提高了市場(chǎng)占有率扎瓶。與之俱來(lái)的對(duì)開發(fā)者開發(fā)同時(shí)運(yùn)行在倆個(gè)瀏覽器上的網(wǎng)頁(yè)難度逐步上升。

因此泌枪,一場(chǎng)要求網(wǎng)頁(yè)無(wú)論使用 IE 或 Netscape 均能正常瀏覽的 “可用任何瀏覽器瀏覽”(Viewable With Any Browser)運(yùn)動(dòng)悄然崛起概荷。

在這輪大戰(zhàn)中,IE 瀏覽器的開發(fā)商微軟公司同時(shí)使用了諸多商業(yè)手段來(lái)與公司的規(guī)模相對(duì)較小的 Netscape 瀏覽器爭(zhēng)搶用戶碌燕。

Netscape 瀏覽器從最高峰達(dá)到市場(chǎng) 90% 的占有率下降到遠(yuǎn)遠(yuǎn)不夠 IE 瀏覽器市場(chǎng)占有率的同時(shí)误证,網(wǎng)景公司最終落敗,被美國(guó)在線公司以 42 億美元收購(gòu)陆蟆。

WorldWideWeb - 世界上第一個(gè)網(wǎng)頁(yè)瀏覽器

第二輪大戰(zhàn)

當(dāng) IE 瀏覽器成功寡占瀏覽器市場(chǎng)時(shí)雷厂,諸多問(wèn)題逐漸暴露了出來(lái):

  • IE 瀏覽器使用專屬格式,不尊重網(wǎng)頁(yè)公開標(biāo)準(zhǔn)叠殷,使得開發(fā)者開發(fā)的網(wǎng)頁(yè)只能完整地運(yùn)行在 IE 瀏覽器上改鲫,其它非微軟平臺(tái)及瀏覽器無(wú)法正常顯示;
  • 高占有率的 IE 瀏覽器已然成為電腦蠕蟲病毒攻擊的主要目標(biāo)之一,當(dāng)安全漏洞被發(fā)現(xiàn)時(shí)像棘,蠕蟲病毒也隨著IE的普及稽亏,在網(wǎng)絡(luò)快速傳播。

Netscape 瀏覽器在其公司衰落之時(shí)開放了瀏覽器源代碼缕题,與此同時(shí) IE 瀏覽器的安全性問(wèn)題持續(xù)引發(fā)關(guān)注截歉,經(jīng)過(guò)長(zhǎng)時(shí)間的醞釀?wù)Q生出了安全性較高的 Firefox 瀏覽器與 IE 瀏覽器展開了競(jìng)爭(zhēng)。

經(jīng)過(guò)從多種市場(chǎng)占有率的競(jìng)爭(zhēng)與發(fā)展來(lái)看烟零,新出的瀏覽器逐步與 IE 瀏覽器平分市場(chǎng)瘪松,最終于 2012 年的報(bào)告中顯示,Chrome 瀏覽器的市場(chǎng)占有率已上升至 33%锨阿,超過(guò) IE 瀏覽器并成為全球第一大瀏覽器宵睦。

瀏覽器內(nèi)核

瀏覽器的內(nèi)核通常僅指排版引擎。這里在介紹完瀏覽器中的排版引擎后加入解析 JavaScript 的引擎作出簡(jiǎn)要說(shuō)明墅诡。

1. 排版引擎

在沒有計(jì)算機(jī)的年代壳嚎,人們通過(guò)對(duì)藝術(shù)的直觀把握來(lái)進(jìn)行報(bào)紙、期刊的統(tǒng)一排版∧┰纾現(xiàn)在我們只需輸入規(guī)則的代碼指令烟馅,讓瀏覽器的排版引擎來(lái)幫我們做自動(dòng)化地做這些事情,并輸出至顯示器或打印機(jī)然磷。

同樣的代碼指令在不同的排版引擎(即內(nèi)核)上的執(zhí)行效果不盡相同郑趁,這里提幾個(gè)著名的內(nèi)核,來(lái)展現(xiàn)它們的特點(diǎn)及其相互之間的發(fā)展關(guān)系样屠。

①. Trident 內(nèi)核

Trident 內(nèi)核運(yùn)行在 IE 上穿撮,又稱 IE 內(nèi)核缺脉,是 IE 的排版引擎的名稱痪欲。Trident 曾因其市場(chǎng)占有量龐大而不思進(jìn)取,一度與 W3C 標(biāo)準(zhǔn)脫節(jié)(05 年)攻礼,給了運(yùn)行在 Safari业踢、Chrome、Firefox 和 Opera 等瀏覽器 上的內(nèi)核提供了很大的發(fā)展空間礁扮。隨著微軟逐步放棄 IE 瀏覽器品牌知举,Trident 內(nèi)核版本也不再更新。

②. EdgeHTML 內(nèi)核

EdgeHTML 內(nèi)核開啟了 Trident 內(nèi)核的分支太伊,成為了替代 IE 瀏覽器的 Microsoft Edge 瀏覽器的主要排版引擎雇锡。EdgeHTML 移除所有舊版 IE 瀏覽器遺留下來(lái)的代碼,并通過(guò)尊重網(wǎng)頁(yè)標(biāo)準(zhǔn)僚焦、重寫主要的代碼以和其他現(xiàn)代瀏覽器的設(shè)計(jì)精神互通有無(wú)锰提。

③. KHTML 內(nèi)核

KHTML 是由 KDE 自由軟件社區(qū)所開發(fā)的 HTML 排版引擎,由 C++ 語(yǔ)言編寫。這里提到 KHTML 是因?yàn)槠涫窃缙?Safari 的內(nèi)核最終選型立肘。Safari 開發(fā)團(tuán)隊(duì)因?qū)?KHTML 作出大量的改動(dòng)边坤,逐步從 KHTML 中脫離出來(lái),KHTML 逐漸淡出主流瀏覽器中谅年。

④. Webkit 內(nèi)核

Webkit 的前身是 KHTML 引擎茧痒,屬于其一個(gè)開源分支,是 Safari 及早期 Chromium 融蹂、Amazon Kindle 等瀏覽器的默認(rèn)內(nèi)核旺订。通常所說(shuō)的 Webkit 不僅僅是排版引擎,其包括用來(lái)渲染 HTML 和 CSS 的 Webcore 引擎和用來(lái)解析 JS 的 JSCore超燃。JSCore 將在后文有關(guān) JS 引擎中敘述耸峭。Webcore 便用來(lái)處理排版。

⑤. Chromium/Blink

Chrome 瀏覽器的內(nèi)核來(lái)源于 Webkit 的 Webcore淋纲,最終用谷歌公司自主開發(fā)的開源排版引擎 Blink 所代替劳闹;同時(shí) Chrome 瀏覽器對(duì)于 JavaScript 代碼的解析也使用了自己的 V8 引擎。

Blink 同樣來(lái)自于 Webkit洽瞬,據(jù)說(shuō) Blink 刪除了 880w 行 webkit 代碼本涕。Blink 引擎問(wèn)世后,國(guó)產(chǎn)各種 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱伙窃,可以在瀏覽器地址欄輸入 chrome://version 進(jìn)行查看菩颖。

⑥. Gecko 內(nèi)核

Gecko 是 Netscape6 和 Firefox 的內(nèi)核。Gecko 代碼公開为障,使用該內(nèi)核瀏覽器很多晦闰。其誕生來(lái)源于 IE 的不思進(jìn)取。微軟內(nèi)部人員不滿鳍怨,與一停止更新 Netscape 的員工一起在創(chuàng)辦 了 Mozila 后開發(fā)呻右,常被稱為 Firefox 內(nèi)核,跨平臺(tái)使用鞋喇。

⑦. Presto 內(nèi)核

Opera 瀏覽器早期使用的內(nèi)核声滥,Opera 在 Blink 引擎推出之后轉(zhuǎn)用 Blink,其中原因包括毫無(wú)推廣上的優(yōu)勢(shì)(主要原因)和使用 Webkit 內(nèi)核的 Opera 可以兼容谷歌 Chrome 瀏覽器等侦香。但換內(nèi)核代價(jià)慘痛落塑,從快速輕量化與穩(wěn)定到異常卡頓與不穩(wěn)定罐韩,書簽同步都困難憾赁,很多用戶流失。Presto 內(nèi)核最終停留在了 12.17散吵。

⑧. More

這里便不一一列舉各個(gè)不同的內(nèi)核了龙考,下圖可以看到內(nèi)核存在時(shí)間的對(duì)比膘壶,從而方便看出哪些內(nèi)核還在使用中。

2. JavaScript 引擎

瀏覽器上不僅僅可以解析 HTML 和 CSS洲愤,也可以解析腳本語(yǔ)言 JavaScript 颓芭,而后者便需要 JS 引擎作支持。常見的 JS 引擎有 JScript 引擎柬赐、Chakra 引擎亡问、V8 引擎、KJS 引擎等肛宋,這里作出小談州藕。

①. KJS 引擎

與早期 KHTML 排版引擎相配的,還有用來(lái)解析 JavaScript 的 KJS 引擎酝陈。KJS 同樣由 KDE 社區(qū)開發(fā)床玻。其后因?yàn)?Webkit 作為分支的誕生,逐步被可以直接將 JS 代碼編譯為原生機(jī)器碼的 JavaScriptCore 引擎替代沉帮。JavaScriptCore 成為了 Webkit 中的一個(gè)重要組件锈死。

②. Chakra 引擎

Chakra 是由微軟為 IE9+ 版本開發(fā)的 JavaScript 引擎,在一個(gè)獨(dú)立的 CPU 核心上即時(shí)編譯腳本穆壕,與瀏覽器并行待牵。在 2009 年 11 月 18 日舉行的 SunSpider 測(cè)試展示了 IE9 的 PDC 版本對(duì)腳本的執(zhí)行遠(yuǎn)快于 IE8,但是仍然慢于 Firefox 3.5喇勋、Google Chrome 4 和 Safari 4缨该。

③. V8 引擎

V8 由 Google 公司開發(fā),是開源的 JavaScript 引擎川背。V8 在運(yùn)行之前將 JavaScript 編譯成了機(jī)器碼贰拿,而非字節(jié)碼或是解釋執(zhí)行它,以此提升性能熄云∨蚋基于 V8 引擎對(duì) JavaScript 的高性能解析,Node.js 也選擇了 V8 引擎作為其在服務(wù)端解析 JavaScript 的首選引擎皱碘,促進(jìn)了前端的蓬勃發(fā)展询一。

小結(jié)

通過(guò)前半部分隐孽,我們談到了瀏覽器的特點(diǎn)癌椿,并通過(guò)兩次瀏覽器大戰(zhàn)交代了主流瀏覽器的發(fā)展史;通過(guò)后半部分菱阵,我們看到千姿百態(tài)的瀏覽器內(nèi)核原來(lái)有足夠多的共性——每一個(gè)新的內(nèi)核并不是憑空而出的踢俄,都從上一個(gè)可以替代的內(nèi)核中吸收了足夠多的經(jīng)驗(yàn)。

這時(shí)晴及,如果有人讓你談?wù)剬?duì)瀏覽器內(nèi)核的理解都办,你就可以說(shuō)將其拆分成排版引擎和 JS 引擎來(lái)分別說(shuō)說(shuō)它們的特點(diǎn)了。但本文只是起點(diǎn),有關(guān)一些瀏覽器為什么宣稱自己是雙內(nèi)核琳钉,有關(guān)瀏覽器組成势木,有關(guān)瀏覽器進(jìn)程調(diào)度,有關(guān)內(nèi)核渲染機(jī)制等問(wèn)題都還沒有涉及歌懒,可以留在問(wèn)尾以作延伸思考啦桌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谱秽,隨后出現(xiàn)的幾起案子洽蛀,更是在濱河造成了極大的恐慌,老刑警劉巖疟赊,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郊供,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡近哟,警方通過(guò)查閱死者的電腦和手機(jī)驮审,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吉执,“玉大人疯淫,你說(shuō)我怎么就攤上這事〈撩担” “怎么了熙掺?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咕宿。 經(jīng)常有香客問(wèn)我币绩,道長(zhǎng)蜡秽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任缆镣,我火速辦了婚禮芽突,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘董瞻。我一直安慰自己诉瓦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布力细。 她就那樣靜靜地躺著睬澡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眠蚂。 梳的紋絲不亂的頭發(fā)上煞聪,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逝慧,去河邊找鬼昔脯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笛臣,可吹牛的內(nèi)容都是我干的云稚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沈堡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼静陈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起诞丽,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲸拥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后僧免,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刑赶,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年懂衩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撞叨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浊洞,死狀恐怖牵敷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沛申,我是刑警寧澤劣领,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站铁材,受9級(jí)特大地震影響尖淘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜著觉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一村生、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饼丘,春花似錦趁桃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至典徘,卻和暖如春蟀苛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逮诲。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工帜平, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梅鹦。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓裆甩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親齐唆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗤栓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容