跳至內容

Apple Webkit

輕之舟百科,讓知識輕裝啟航
(重新導向自WebKit)
WebKit
中文名WebKit
開發方Apple Inc.、KDE、Google、Nokia、Igalia等[1][2]
首次發布1998年11月4日(KHTML發布)
2005年6月7日(WebKit開源)[2]
編程語言C++[1]
作業系統macOS、iOS、Linux、Windows[1]
類型瀏覽器引擎
許可協議LGPLv2.1(WebCore、JavaScriptCore)
BSD 2-Clause(Apple貢獻部分)[1][3]
網站webkit.org

WebKit是Apple主導開發的開源瀏覽器引擎,主要用於Apple Safari瀏覽器,同時也是iOS和iPadOS平台上所有網頁瀏覽器的底層渲染引擎[1][3]。WebKit最初源自KDE項目的KHTML排版引擎和KJS JavaScript引擎的一個分支[1][4],自2005年正式開源以來,已由KDE貢獻者、Apple、Google、Nokia、BlackBerry、Sony及Igalia等眾多組織和個人持續開發完善[1][2]。WebKit的Blink分支被用於Google Chrome、Microsoft Edge等基於Chromium的瀏覽器[4][5]。

起源與早期發展

[編輯 | 編輯原始碼]

WebKit的起源可追溯至KDE項目於1998年開發的KHTML排版引擎和KJS JavaScript引擎[1][2]。2001年,Apple工程師Don Melton正式從KHTML分支,在Apple內部啟動瀏覽器引擎的研發工作[6]。Apple在當時比較了Firefox的Gecko引擎與KHTML引擎後,選擇了後者,因其擁有更清晰的源碼結構和更快的渲染速度[2][6]。

2003年,Apple推出了搭載WebKit引擎的Safari瀏覽器[6]。2005年6月7日,Apple宣布WebKit正式開源,向社區開放其原始碼[1][2]。

跨平台擴展與廣泛應用

[編輯 | 編輯原始碼]

開源後的WebKit逐漸被多個平台採用。它成為macOS和iOS系統內置的瀏覽器引擎框架,被Safari、Mail、備忘錄、圖書、新聞和App Store等眾多Apple原生應用使用[7]。此外,WebKit還被用於PlayStation 3及後續PlayStation遊戲機、Tizen移動作業系統、Amazon Kindle電子書閱讀器、Nintendo 3DS瀏覽器以及已停用的BlackBerry瀏覽器等設備[1]。

Blink分支(2013年)

[編輯 | 編輯原始碼]

2013年4月3日,Google宣布將WebKit的WebCore組件分叉,創建名為Blink的獨立渲染引擎,用於未來版本的Google Chrome和Opera瀏覽器[1][5]。這一分支的誕生主要源於WebKit與Chrome之間日益增加的複雜性,Google希望通過分叉來簡化架構並加速開發[5][8]。此後,Blink被廣泛應用於所有基於Chromium的瀏覽器,包括Microsoft Edge、Vivaldi、Yandex Browser等[5]。

核心架構

[編輯 | 編輯原始碼]

WebKit的架構主要由兩大部分組成:渲染引擎(WebCore)和JavaScript引擎(JavaScriptCore)[9][10]。

WebCore是WebKit的渲染引擎核心,負責解析HTML和CSS文檔、構建DOM樹和CSSOM樹、執行布局計算以及將網頁內容繪製到屏幕上[9][10]。WebCore直接源自KDE的KHTML引擎[1]。

JavaScriptCore(Nitro)

[編輯 | 編輯原始碼]

JavaScriptCore(也稱為Nitro或SquirrelFish)是WebKit內置的JavaScript引擎[10][11],最初從KDE的KJS引擎派生而來[1]。JavaScriptCore是一個優化虛擬機,由詞法分析器、解析器、啟動解釋器(LLInt)、基線JIT、低延遲優化JIT(DFG)和高吞吐量優化JIT(FTL)等構建塊組成[12]。Apple通過引入LLVM JIT技術,持續提升了Nitro引擎的性能[13]。

WebKit2是WebKit的新API層,從底層設計上支持拆分進程模型——網頁內容(JavaScript、HTML、布局等)運行在與應用程式UI分離的獨立進程中[14][15]。這一多進程架構通過進程沙箱保護系統安全,並使應用程式即使在加載了無限循環或掛起的網頁時仍能保持響應[15]。網頁在各自的WebContent進程中加載,多個WebContent進程可共享瀏覽會話,網絡訪問、磁盤緩存和Web Storage等API則由獨立的網絡進程統一管理[15]。

許可協議

[編輯 | 編輯原始碼]

WebKit採用多重許可協議。從KHTML繼承的大部分代碼沿用LGPLv2.1許可證,而貢獻給WebKit的新代碼則採用二條款BSD許可證[16][17]。具體而言,WebCore渲染庫和JavaScriptCore引擎以LGPL發布,Apple貢獻的額外部分以BSD 2-Clause許可發布[1][3]。WebKit項目旨在保持對開源和專有應用程式的廣泛可用性[17]。

使用WebKit的平台與產品

[編輯 | 編輯原始碼]

以下為主要使用WebKit引擎的平台和產品[1][4]:

參考文獻

[編輯 | 編輯原始碼]