WebKit 是一個開源的 Web 瀏覽器引擎 Web browser engine。它被用於 Apple Safari。 Webkit 亦被使用於 Apple iOS、BlackBerry Tablet OS 及 Amazon Kindle 的預設瀏覽器。WebKit 的 C 應用程式介面提供了一系列的 Class 以在視窗上顯示網頁內容，並且實現了一些瀏覽器的特色，如使用者連結點選、管理前後頁面列表及近期歷史頁面等等。 WebKit 的 HTML 及 JavaScript 程式碼源自 KDE 的 KHTML 及 KJS 函式庫的一個分支，現已由 KDE、Apple、Google、Nokia、Bitstream、BlackBerry 及 Igalia 等獨立開發。OS X、Windows、GNULinux 以及其他類 Unix 系統作業系統，皆支援這個專案。2013 年 4 月 3 日，Google 宣佈它建立了 WebKit 中 WebCore 元件的分支 Blink，Blink 用於新版 Google Chrome 與 Opera。 WebKit 的 WebCore 及 JavaScriptCore 元件使用 GNU 寬通用公共許可證，其他元件則採用 BSD 許可證。 截至 2013 年 3 月 7 日，Webkit 商標已被蘋果公司在美國專利及商標局註冊為其商標。 緣起 WebKit 的程式碼源自 1998 年所開發的 KDE 的 HTML 排版引擎 KHTML 及 KDE 的 JavaScript 引擎 KJS 的程式碼。Apple 的 Don Melton 於 2001 年 6 月 25 日開始了 WebKit 這個專案，當時 WebKit 僅為 KHTML 及 KJS 的復刻，Melton 在電子郵件中向 KDE 開發者解釋，KHTML 及 KJS 比起其他技術有著更容易開發、更輕巧（少於 140000 行程式碼）、更加乾淨的設計，以及更與標準相容的優勢，KHTML 及 KJS 將會透過聯結器函式庫（adapter library）的幫忙被移植到 OS X，並重新命名為 WebCore 及 JavaScriptCore。JavaScriptCore 在 2002 年 6 月，於 KDE 的郵件列表（mailing list）中首度發表，包含著蘋果公司首次釋出的部分。WebCore 在 2003 年 1 月，首度釋出於 Macworld Expo 中由蘋果公司 CEO Steve Jobs 發表的 Safari 瀏覽器。當 WebCore 首次使用在第一個 Safari 的測試版本的同時，JavaScriptCore 首次並以私有 framework 的方式包進 Mac OS X v102，蘋果公司將其使用在 Sherlock 軟體。Mac OS X v103 是第一個 Apple 釋出內建 WebKit 的作業系統，儘管它已經被內建在 102 內了。 Apple 表示，有些牽涉到 OSX 的特定功能（例如：ObjectiveC、KWQKWQ（讀作「quack」）是 an implementation of the subset of Qt required to make KHTML work on OS X。它 is written in Objective C。及 OS X 特定函式）將會在 KDE 的 KHTML 中缺席，這行為被稱為不同的發展策略。 開發分裂 由於這兩個分支（KHTML 及 WebCore）有著不同的目的而進行開發，所以他們程式碼互相補丁（patch）的難度越來越高。 KHTML 的開發者認為，他們不喜歡接受蘋果公司對於 KHTML 的改變，並宣稱兩個組織的關係有些不好（a bitter failure），蘋果提交他們相當大的補丁，其中包含相當大數目的改變，但是卻缺少相關檔案，並且經常包含著未來的擴充，然而這些補丁對於 KDE 的開發者而言，要整合回 KHTML 是相當困難的，此外，蘋果公司要求開發者閱覽 Apple 的程式碼之前必須簽署保密條款（nondisclosure agreements），甚至還不能存取蘋果公司的 bug 資料庫。 在公佈分裂的期間，KDE 開發者 Kurt Pfeifle（pipitas）貼出了一篇文章，宣稱 KHTML 開發者已經設法從 WebCore 移植許多（但非全部）Safari 所改進的專案回 KHTML，而他們一直都希望這些改進是來自於蘋果公司。這篇文章讓 Apple 開始聯絡 KHTML 的開發者，並討論有關增進彼起關係的方法及未來的合作模式，事實上 KDE 專案確實有能力合併一些專案，來改進 KHTML 的渲染速度以及加入一些新的功能特色，包含 Acid2 渲染測試的改進。 自從新聞播報了 fork 事件之後，Apple 在 CVS 釋出了他們自己維護的 WebKit 版本，在他們釋出程式碼後，Apple 及 KHTML 開發者已經加深了合作關係，許多 KHTML 的開發者也成為了 WebKit SVN 程式碼庫的審查（Reviewer）及提交者（Submitter）。 WebKit 工作團隊同時也逆轉許多 Webkit 程式碼當中，專為蘋果特定的修正，並且實現了一個平臺特定的抽象層，可使渲染的程式碼於其他平臺可以更順利的運作。 在 2007 年 7 月，Ars Technica 網站釋出一篇文章，指出 KDE 開發團隊將從 KHTML 轉移到 WebKit，再經由多年的整合，KDE 開發平臺 45 於 2010 年 8 月釋出，它同時支援 WebKit 及 KHTML，而 KHTML 的開發仍在繼續。 開源 在 2005 年 6 月 7 日，Safari 開發者戴夫海厄特（Dave Hyatt）於他的 blog 宣佈 Apple 將把 Webkit 開源（之前僅有 WebCore 及 JavaScriptCore 開源），並且開放了 WebKit 的 CVS 程式庫以及 bug 資料庫工具。這項訊息由蘋果公司軟體工程的高階副總（Senior Vice President）Bertrand Serlet 於蘋果公司 2005 年的 Worldwide Developers Conference 公開。 在 2005 年 12 月中，可縮放向量圖形的支援被加入了標準版本，在 2006 年 1 月初，這項程式碼從 CVS 轉移至 Subversion。 WebKit 的 JavaScriptCore 及 WebCore 元件目前以 GNU 較寬鬆公共許可證方式授權，而其他的 WebKit 元件則是以 BSD 授權公開。 更進一步發展 在 2007 年一開始，開發團隊開始實現層疊樣式表（CSS）的擴充，包含動畫、轉換（transitions）以及 2D 和 3D 的轉場（transform），這樣的擴充在 2009 年 W3C 的標準中被列入草案。 在 2007 年 11 月，這項專案宣佈，他們已經完成了 HTML5 媒體特色的支援，允許頁面中以原生的方式嵌入影片，並且可以被 script 所控制 HTML5 Media Support by Antti Koivisto Surfin Safari blog November 12 2007。 在 2008 年 6 月 2 日，WebKit 專案宣佈他們重寫了 JavaScriptCore，被稱為 SquirrelFish，它是一個位元組碼直譯器（Bytecode Interpreter），這項專案驗後來變成 SquirrelFish Extreme（SFX），它可將 JavaScript 編譯為機器語言而不再需要直譯器，這樣的做法加速了 JavaScript 的執行，這項專案於 2008 年 9 月 18 日發布。一開始，SFX 僅支援 x86 架構，於 2009 年 1 月底，SFX 於 OSX 支援了 x8664 架構，並且在該平臺透過了所有的測試。 二次開發分裂 WebKit 中 WebCore 元件被 Chromium 開源方案所採用，隨著兩邊開發差異越來越大，蘋果在 WebKit 的 WebCore 新增許多專有的程式碼（如 ObjectiveC）Chromium 用不到卻要花時間去編譯，反而拖累了 Chromium 開發及發展。Chromium 的多程序架構（MultiProcess）難以合併入 WebCore 程式碼中，且蘋果也不願妥協採用，選擇自行開發自己的 WebKit2 多程序架構。 因此 Chromium 的開發者由於希望在瀏覽器的開發上擁有更大的自由度，同時避免與上游衝突，更可透過移除 Chrome 沒有使用的元件而簡化自己的程式庫，所以決定開發 WebKit 的 WebCore 分支版本 Blink，於 2013 年 4 月 3 日釋出，被用於基於 Chromium 的網頁瀏覽器，如 Microsoft Edge 與 Google Chrome 等。 WebKit2 WebKit2 釋出於 2010 年 4 月 8 日，WebKit2 的目標是將元件抽象化，並提供更乾淨的網頁渲染，它會利用從周圍的介面或是應用程式的殻，建立一個環境使網頁的內容（JavaScript、HTML、排版等等）將會在另外一個程序 Process 執行，比起 WebKit，這個抽象化的做法打算令 WebKit2 可重覆使用一個更簡單的程式。因為 WebKit2 對比起 WebKit 有一個不相容的 API，所以導致他的名字被改變為 WebKit2。 目前 WebKit2 僅開放於 Mac、Windows 及 MeeGoHarmattan。 使用 作為渲染引擎使用的 WebKit，被使用在 Safari 及 Google Chrome 瀏覽器於 Windows、OS X、iOS 及 Android 平臺（然而，Chrome 僅僅使用 WebCore，而 JavaScript 引擎及多工系統則自行開發）。其他的在 OS X 底下的應用程式也使用 WebKit，例如 Apple 的 email 使用者端軟體 Mail 以及微軟的個人資訊管理系統 Microsoft Entourage 2008，皆使用 WebKit 來渲染 HTML 內容的 email 訊息。 Opera 軟體公司於 2013 年初宣佈，他們將停止他們自行開發的 Presto 排版引擎，由 Webkit 專案取代，在未來將會以 Webkit 來取代，並貢獻給 Webkit 專案。 iOS 2007 年 6 月 29 日，iPhone 上市，WebKit 透過 Safari 瀏覽器進入 iOS 平臺，而且立即成為當時 iOS 平臺唯一的排版引擎。 蘋果公司成為了這一專案的領導者。 內建平臺 新的網頁瀏覽器已經內建了 WebKit，例如 Symbian 手機的 S60 瀏覽器、BlackBerry 瀏覽器（ver 60）、Midori、Chrome 瀏覽器、Android 網頁瀏覽器、PlayStation_3_系統軟體 40 以上所使用的瀏覽器、KDE 的 Rekonq 瀏覽器以及 Plasma Workspaces 都使用 WebKit 作為原生的網頁渲染引擎。WebKit 已經被 OmniWeb、iCab 及 Web（前面所說的 Epiphany）採用，並取代原有的渲染引擎，Sleipnir 於 2012 年開始在他們的瀏覽器開發 WebKit，並於 2012 年 5 月 17 日進入第三個 Alpha 階段。Epiphany 同時支援 Gecko 及 WebKit，但他們的團隊描述 Gecko 的釋出週期及未來的開發計劃將會令他們對於 Gecko 的支援太過笨重。HP 的 WebOS 使用 WebKit 作為它應用程式執行時期的基礎。Valve Corporation 的 Steam 最新更新的介面，使用 WebKit 作為它介面的渲染以及內建的瀏覽器。WebKit 在 Adobe_AIR 中被使用在渲染 HTML 及執行 JavaScript，在 Adobe Creative Suite CS5，WebKit 用來渲染部分元件的使用介面。 截至 2010 年上半年，分析估計內建 WebKit 瀏覽器的行動裝置已經達到 3 億 5 千萬，，WebKit 的市場份額已經達到 36，同等於 Internet Explorer 所使用的 TridentMSHTML 引擎的市場份額，如果這個成長持續下去，使用 WebKit 的總和（Chrome、Safari 以及智慧型手機 平板）於 2012 年底將會超過 50，而 WebKit 將會是市場的領導者。 移植 在 Hyatt 釋出 WebKit 開源之後的那一週，Nokia 宣佈他們將移植 WebKit 到 Symbian 作業系統，並為 S60 開發一個基於 WebKit 的行動裝置瀏覽器，現在已經被命名為 Web Browser for S60，它被使用在 Nokia、Samsung、LG 及其他使用 Symbian S60 的行動電話。Apple 也已經移植 WebKit 到 iOS 並將其執行於 iPhone、iPod Touch 及 iPad，它被使用在這些裝置的網頁瀏覽器及電子郵件軟體。Android 行動電話平臺也使用 WebKit 作為它網頁瀏覽器的基礎，而於 2009 年 1 月釋出的 Palm Pre 使用 WebKit 作為它的介面。Amazon Kindle 3 包含著一個以 WebKit 打造實驗性質的瀏覽器。 在 2007 年 6 月，Apple 宣佈 WebKit 已經被移植到 iOS，並作為 Safari 的一部分，還有一些正在進行中的專案，將 WebKit 移植到開源的作業系統 Syllable、Haiku 以及 AROS Research Operating System（AROS）。 WebKit 也被移植到許多 Toolkits 使其支援多平臺，例如 GTK toolkit、Qt framework、Adobe AIR、Enlightenment Foundation Libraries EFL 以及 Clutter toolkit。Qt Software（Digia 所擁有）於 Qt 44 包含 Qt port，Qt port 的 WebKit 也可使用在 Konqueror 41 版本之後。在 Qt 底下的 Iris Browser 也使用 WebKit。The Enlightenment Foundation Libraries EFL 的移植還在進行（經由 Samsung 及 ProFUSION），他們將專注在嵌入式及行動系統，並將其作為一個獨立執行的瀏覽器、WidgetsGadgets、檔案閱讀及修改軟體。Clutter 的移植是由 Collabora 所開放，由 Bosch 所贊助。 還有一個專案與 WebKit 同步（由 Pleyo 所贊助），被稱之為 Origyn Web Browser，他提供了一個多元的移植方式，將其移植到抽象的平臺，目的是讓移植到嵌入式或是輕量系統可以更快速簡單。這個移植被使用在嵌入式裝置，例如 settop boxes、PMP，而他已經被移植到 AmigaOS、AROS 及 MorphOS，MorphOS 17 是第一個支援 HTML5 媒體標籤的 Origyn Web Browser OWB。 其他平臺 Windows 2008 年 3 月 18 日，Safari 31 for Windows 轉正，解決了 Windows 平臺下 WebKit 一直存在的部分相容性問題。同年 9 月 3 日推出的 Google Chrome 使得這一平臺進一步成熟。而在 Windows Mobile 戰線，領先推出穩定版的是拓馳公司的 Iris Browser。 Windows 是除 Mac OS X 外另一個得到 WebKitorg 官方支援的版本。 Linux 2008 年 10 月 22 日投入市場的 Android，其內建瀏覽器 Google Chrome Lite 代表著脫胎於 Linux 的 Webkit 核心 迴歸 Linux 平臺。儘管 WebKit 的原型 Khtml 是由 Qt 寫成，但 Linux 下當前最受矚目的 WebKit 專案卻是 Gnome 領導的 WebKitGtk。不過隨著奇趣科技於 2008 年 6 月被 Nokia 收購，Qt 方面也加快了 WebKit 的開發程序。目前，Google Chrome，Xfce 的 Midori，GNOME 的 Epiphany、KDE 的 Konqueror，Arora 以及 QupZilla 是 Linux 系統下最流行的 Webkit 核心瀏覽器。 Symbian 2005 年，諾基亞公司的 S60 團隊成為手機端 WebKit 的先驅，他們將 WebKit 框架移植到了 Symbian S60 平臺，作為 S60 第三版的瀏覽器核心。 分支 在 2013 年 4 月 3 日，Google 宣佈他將自行開發 WebCore 的分支，也就是 Blink 引擎。Chrome 的開發者由於希望在瀏覽器的開發上擁有更大的自由度，同時避免與上游衝突，更可透過移除 Chrome 沒有使用的元件而簡化自己的程式庫，所以決定開發 WebKit 的分支版本。同時 Opera 軟體在同年稍早也宣佈，他們將自有引擎轉換到 Chromium 的程式庫，在此時也同時轉換到 Blink 的分支。根據這份宣告，WebKit 的開發者開始討論移除 Chrome 相關程式碼的可能性，以精簡整個 WebKit 程式庫。 元件 WebCore WebCore 是一個由 WebKit 專案所開發的佈局（Layout）、渲染（Rendering）及 HTML 和 SVG 的 DOM 函式庫，完整的程式碼皆由 GNU 寬通用公共許可證所授權，WebKit 框架包裝了 WebCore 及 JavaScriptCore，並提供一個 ObjectiveC 應用程式介面來接介由 C 所開發的 WebCore 渲染引擎及 JavaScriptCore 指令碼引擎，透過 Cocoa API 就可以在應用程式中很簡單的使用這些元件。之後的版本同時包含了一個跨平臺的 C 抽象平臺，並且提供各種 API 使用。 WebKit 透過 Acid2 及 Acid3 的測試，包含完美畫素的渲染（pixelperfect rendering）以及沒有任何時間及不順的問題。 JavaScriptCore JavaScriptCore 是一個在 WebKit 中提供 JavaScript 引擎的框架，而且在 OS X 作為其他內容的指令碼引擎。JavaScriptCore 最初是為 KDE 的 JavaScript 引擎（KJS）函式庫及 PCRE 正則表示式函式庫，JavaScriptCore 從 KJS 及 PCRE 復刻之後，已比原先進步了許多，有了新的特色以及極大的效能改進。 在 2008 年 6 月 2 日，WebKit 專案宣佈，將被重寫為 SquirrelFish，它是一個位元組碼直譯器，這個專案演變成 SquirrelFish Extreme（簡稱為 SFX，市場稱之為 Nitro），首次公開於 2008 年 9 月 18 日，它會將 Javascript 編譯為原生的機器語言，不再需要位元組碼直譯器，同時加速了 JavaScript 的執行效率。 Drosera Drosera 是一個 JavaScript 除錯工具，它被包含在每日編譯的 WebKit 版本內 WebKitorg Drosera wiki article。它被命名為茅膏菜屬，這是一種食蟲植物。Drosera 目前已經被 Web Inspector 取代了。 現在使用 WebKit 引擎的瀏覽器 開源 Midori：當前最新測試版 015 所用的引擎版本是 WebKitGTK 1113 Epiphany：原使用 Gecko，228 版開始改用 WebKit Arora：當前最新版本號是 0110，使用 QtWebKit 呼叫 Webkit 核心 QupZilla：當前最新版本號是 135，使用 QtWebKit 呼叫 Webkit 核心 非開源 Avant Browser 當前最新正式版 2018 build 1 採用 TridentWebKitGecko 三引擎。 Lunascape 當前最新正式版 6151 採用 TridentWebKitGecko 三引擎。 Safari 當前最新版。 Sleipnir 當前最新正式版 6210 採用 WebKit 引擎。所用的引擎版本是 Blink 53736 Chromium 6403282140 搜狗高速瀏覽器 當前最新正式版 75827113 其 20 版開始採用 TridentWebKit 雙引擎。 傲遊瀏覽器 當前最新正式版 5163000。 QQ 瀏覽器 當前最新正式版 9611165400 騰訊公司的瀏覽器產品，採用 TridentWebKit 雙引擎。 參考資料 Category 自由排版引擎 Category 應用程式介面