国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

主流瀏覽器發展史及其內核初探

happyfish / 1068人閱讀

摘要:有趣的是,縱觀瀏覽器的發展史,其內核的派生競爭與互相借鑒共同演繹出了盤根錯節的家族圖譜。本文通過回顧兩次瀏覽器大戰,并對各大主流瀏覽器的發展作出簡介,展開一場瀏覽器內核的初探之旅,揭開神秘的面紗。

當我們在新時代調侃 IE 瀏覽器兼容性問題的時候,或多或少忘記了 IE 瀏覽器是第一款支持 CSS 的商用瀏覽器;當我們驚嘆于 Chrome 將 Webkit 內核發揮的如此極致的時候,又或多或少忘記了 Safari 才是 Webkit 內核的始作俑者。千姿百態的瀏覽器中,有的很早就被淘汰了,有的直到現在還被廣泛使用在各類主流操作系統之上。有趣的是,縱觀瀏覽器的發展史,其內核的派生、競爭與互相借鑒共同演繹出了盤根錯節的“家族圖譜”。

本文通過回顧兩次瀏覽器大戰,并對各大主流瀏覽器的發展作出簡介,展開一場瀏覽器內核的初探之旅,揭開神秘的面紗。

什么,足以稱之為瀏覽器

盡管在各式各樣的瀏覽器中有的僅提供純文字接口來實現 HTML 頁面,但絕大多數現代瀏覽器都或多或少擁有有如下特點:

可用于使用萬維網;

提供豐富多彩的用戶界面:其中包括上下頁、刷新、地址欄、書簽、顯示源碼等功能;

支持解析多種網頁標準:HTML、HTML5、CSS、SVG、XHTML、WebGL、JavaScript 和 MathML 等;

支持多種文件格式及協議:可以通過瀏覽器打開特定格式的文件進行查詢、編輯等操作,且提供 HTTPS、FTP 等網絡協議的支持;

可通過多個窗口或多個標簽頁同時打開多種由統一資源標識符標志的信息資源:網絡、圖片、影音等;

可通過開放開發的瀏覽器插件來拓展瀏覽器功能。

因此,我們可以將能夠提供上述多個功能的應用程序稱之為瀏覽器。

瀏覽器大戰

2003 年,蘋果公司開發的 Safari 瀏覽器代替微軟公司的 IE 瀏覽器,成為了 Mac OS X v10.3 之后版本的默認瀏覽器。同時 Safari 在不久之后帶來的大名鼎鼎的 Webkit 內核,這一系列動作都印證著曾大一統主流瀏覽器江山的 IE 瀏覽器份額逐漸受到其他瀏覽器蠶食,由此劃分開了第一輪瀏覽器大戰和第二輪瀏覽器大戰的時代背景。

第一輪大戰

第一輪瀏覽器大戰主要圍繞在二十世紀末期——人們開始注意到萬維網,而當時的市場及網頁瀏覽標準均以 Netscape (網景公司)主導。這一主導性來源于其推出的 Netscape Navigator 瀏覽器改進了“史前”瀏覽器 Mosaic 的實用性及穩定性,同時在網絡上提供免費試用版倆個要點。這時,以用戶界面友好立足市場的微軟公司也通過爭取到 Mosaic 的授權開發出了 IE 瀏覽器。倆者為爭取更多的用戶來開了商業戰爭序幕。

縱然 IE 瀏覽器步入市場較晚,IE 瀏覽器從技術層面通過最先支持 CSS、新增網頁動態加載及圖片位置改變等優勢,逐步提高了市場占有率。與之俱來的對開發者開發同時運行在倆個瀏覽器上的網頁難度逐步上升。

因此,一場要求網頁無論使用 IE 或 Netscape 均能正常瀏覽的 “可用任何瀏覽器瀏覽”(Viewable With Any Browser)運動悄然崛起。

在這輪大戰中,IE 瀏覽器的開發商微軟公司同時使用了諸多商業手段來與公司的規模相對較小的 Netscape 瀏覽器爭搶用戶。

Netscape 瀏覽器從最高峰達到市場 90% 的占有率下降到遠遠不夠 IE 瀏覽器市場占有率的同時,網景公司最終落敗,被美國在線公司以 42 億美元收購。

第二輪大戰

當 IE 瀏覽器成功寡占瀏覽器市場時,諸多問題逐漸暴露了出來:

IE 瀏覽器使用專屬格式,不尊重網頁公開標準,使得開發者開發的網頁只能完整地運行在 IE 瀏覽器上,其它非微軟平臺及瀏覽器無法正常顯示;

高占有率的 IE 瀏覽器已然成為電腦蠕蟲病毒攻擊的主要目標之一,當安全漏洞被發現時,蠕蟲病毒也隨著IE的普及,在網絡快速傳播。

Netscape 瀏覽器在其公司衰落之時開放了瀏覽器源代碼,與此同時 IE 瀏覽器的安全性問題持續引發關注,經過長時間的醞釀誕生出了安全性較高的 Firefox 瀏覽器與 IE 瀏覽器展開了競爭。

經過從多種市場占有率的競爭與發展來看,新出的瀏覽器逐步與 IE 瀏覽器平分市場,最終于 2012 年的報告中顯示,Chrome 瀏覽器的市場占有率已上升至 33%,超過 IE 瀏覽器并成為全球第一大瀏覽器。

瀏覽器內核

瀏覽器的內核通常僅指排版引擎。這里在介紹完瀏覽器中的排版引擎后加入解析 JavaScript 的引擎作出簡要說明。

1. 排版引擎

在沒有計算機的年代,人們通過對藝術的直觀把握來進行報紙、期刊的統一排版。現在我們只需輸入規則的代碼指令,讓瀏覽器的排版引擎來幫我們做自動化地做這些事情,并輸出至顯示器或打印機。

同樣的代碼指令在不同的排版引擎(即內核)上的執行效果不盡相同,這里提幾個著名的內核,來展現它們的特點及其相互之間的發展關系。

①. Trident 內核

Trident 內核運行在 IE 上,又稱 IE 內核,是 IE 的排版引擎的名稱。Trident 曾因其市場占有量龐大而不思進取,一度與 W3C 標準脫節(05 年),給了運行在 Safari、Chrome、Firefox 和 Opera 等瀏覽器 上的內核提供了很大的發展空間。隨著微軟逐步放棄 IE 瀏覽器品牌,Trident 內核版本也不再更新。

②. EdgeHTML 內核

EdgeHTML 內核開啟了 Trident 內核的分支,成為了替代 IE 瀏覽器的 Microsoft Edge 瀏覽器的主要排版引擎。EdgeHTML 移除所有舊版 IE 瀏覽器遺留下來的代碼,并通過尊重網頁標準、重寫主要的代碼以和其他現代瀏覽器的設計精神互通有無。

③. KHTML 內核

KHTML 是由 KDE 自由軟件社區所開發的 HTML 排版引擎,由 C++ 語言編寫。這里提到 KHTML 是因為其是早起 Safari 的內核最終選型。Safari 開發團隊因對 KHTML 作出大量的改動,逐步從 KHTML 中脫離出來,KHTML 逐漸淡出主流瀏覽器中。

④. Webkit 內核

Webkit 的前身是 KHTML 引擎,屬于其一個開源分支,是 Safari 及早期 Chromium 、Amazon Kindle 等瀏覽器的默認內核。通常所說的 Webkit 不僅僅是排版引擎,其包括用來渲染 HTML 和 CSS 的 Webcore 引擎和用來解析 JS 的 JSCore。JSCore 將在后文有關 JS 引擎中敘述。Webcore 便用來處理排版。

⑤. Chromium/Blink

Chrome 瀏覽器的內核來源于 Webkit 的 Webcore,最終用谷歌公司自主開發的開源排版引擎 Blink 所代替;同時 Chrome 瀏覽器對于 JavaScript 代碼的解析也使用了自己的 V8 引擎。

Blink 同樣來自于 Webkit,據說 Blink 刪除了 880w 行 webkit 代碼。Blink 引擎問世后,國產各種 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱,可以在瀏覽器地址欄輸入 chrome://version 進行查看。

⑥. Gecko 內核

Gecko 是 Netscape6 和 Firefox 的內核。Gecko 代碼公開,使用該內核瀏覽器很多。其誕生來源于 IE 的不思進取。微軟內部人員不滿,與一停止更新 Netscape 的員工一起在創辦 了 Mozila
后開發,常被稱為 Firefox 內核,跨平臺使用。

⑦. Presto 內核

Opera 瀏覽器早期使用的內核,Opera 在 Blink 引擎推出之后轉用 Blink,其中原因包括毫無推廣上的優勢(主要原因)和使用 Webkit 內核的 Opera 可以兼容谷歌 Chrome 瀏覽器等。但換內核代價慘痛,從快速輕量化與穩定到異常卡頓與不穩定,書簽同步都困難,很多用戶流失。Presto 內核最終停留在了 12.17。

⑧. More

這里便不一一列舉各個不同的內核了,下圖可以看到內核存在時間的對比,從而方便看出哪些內核還在使用中。

2. JavaScript 引擎

瀏覽器上不僅僅可以解析 HTML 和 CSS,也可以解析腳本語言 JavaScript ,而后者便需要 JS 引擎作支持。常見的
JS 引擎有 JScript 引擎、Chakra 引擎、V8 引擎、KJS 引擎等,這里作出小談。

①. KJS 引擎

與早期 KHTML 排版引擎相配的,還有用來解析 JavaScript 的 KJS 引擎。KJS 同樣由 KDE 社區開發。其后因為 Webkit 作為分支的誕生,逐步被可以直接將 JS 代碼編譯為原生機器碼的 JavaScriptCore 引擎替代。JavaScriptCore 成為了 Webkit 中的一個重要組件。

②. Chakra 引擎

Chakra 是由微軟為 IE9+ 版本開發的 JavaScript 引擎,在一個獨立的CPU核心上即時編譯腳本,與瀏覽器并行。在 2009 年 11 月 18 日舉行的 SunSpider 測試展示了 IE9 的 PDC 版本對腳本的執行遠快于 IE8,但是仍然慢于 Firefox 3.5、Google Chrome 4 和 Safari 4。

③. V8 引擎

V8 由 Google 公司開發,是開源的 JavaScript 引擎。V8 在運行之前將 JavaScript 編譯成了機器碼,而非字節碼或是解釋執行它,以此提升性能?;?V8 引擎對 JavaScript 的高性能解析,Node.js 也選擇了 V8 引擎作為其在服務端解析 JavaScript 的首選引擎,促進了前端的蓬勃發展。

小結

通過前半部分,我們談到了瀏覽器的特點,并通過兩次瀏覽器大戰交代了主流瀏覽器的發展史;通過后半部分,我們看到千姿百態的瀏覽器內核原來有足夠多的共性——每一個新的內核并不是憑空而出的,都從上一個可以替代的內核中吸收了足夠多的經驗。

這時,如果有人讓你談談對瀏覽器內核的理解,你就可以說將其拆分成排版引擎和 JS 引擎來分別說說它們的特點了。但本文只是起點,有關一些瀏覽器為什么宣稱自己是雙內核,有關瀏覽器組成,有關瀏覽器進程調度,有關內核渲染機制等問題都還沒有涉及,可以留在問尾以作延伸思考。


Hello,我是韓亦樂,現任本科軟工男一枚。軟件工程專業的一路學習中,我有很多感悟,也享受持續分享的過程。如果想了解更多或能及時收到我的最新文章,歡迎訂閱我的個人微信號:韓亦樂。我的簡書個人主頁中,有我的訂閱號二維碼和 Github 主頁地址;[我的知乎主頁]中也會堅持產出,歡迎關注。

本文內部編號經由我的 Github 相關倉庫統一管理;本文可能發布在多個平臺但僅在上述倉庫中長期維護;本文同時采用【知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議】進行許可。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88794.html

相關文章

  • Netty4.x 源碼實戰系列(一):ServerBootstrap 與 Bootstrap 初探

    摘要:而用于主線程池的屬性都定義在中本篇只是簡單介紹了一下引導類的配置屬性,下一篇我將詳細介紹服務端引導類的過程分析。 從Java1.4開始, Java引入了non-blocking IO,簡稱NIO。NIO與傳統socket最大的不同就是引入了Channel和多路復用selector的概念。傳統的socket是基于stream的,它是單向的,有InputStream表示read和Outpu...

    BakerJ 評論0 收藏0
  • 興業計算機團隊:國產CPU大盤點!

    摘要:年,中科院計算所半導體所有關研制大規模集成電路的單位和廠合并,成立中科院微電子中心。目前是國資比例最高通過中國長城控股的國產企業,是聚焦國家戰略需求和重大項目的國家隊。年,海光信息同達成合作,共同合資成立兩家子公司,引入架構授權。本文將重點圍繞國產CPU的發展歷程與當前產業鏈各領軍企業的布局情況作詳盡解讀(并包含特大號獨家整理的最新進展),具體如下:1、國產CPU發展歷程回溯2、飛騰:PK生...

    Tecode 評論0 收藏0
  • 初探WebSocket

    摘要:流控制通常就是在客戶端的頁面使用一個隱藏的窗口向服務端發出一個長連接的請求。和長鏈接以上幾種服務器推的技術中長輪詢和流控制其實都是基于長鏈接來實現的,也就是中所謂的。通信協議于年被定為標準,并被所補充規范。 初探WebSocket node websocket socket.io 我們平常開發的大部分web頁面都是主動‘拉’的形式,如果需要更新頁面內容,則需要刷新一個,但Slack工...

    Channe 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<