WebKit
WebKit是一个開源的 Web 瀏覽器 ia̋n-jín ( Web browser engine )。伊予人用佇 Apple Safari。其分支 Blink 予人用佇咧基於 Chromium 的網頁瀏覽器,如 Microsoft Edge 佮 Google Chrome。
Webkit 亦使用於 Apple iOS、BlackBerry Tablet OS、Tizen 佮 Amazon Kindle 的預設瀏覽器。WebKit 的 C + + 應用程式介面提供著一系列的 Class 以佇咧視窗頂懸來顯示講網頁的內容,並且實現一寡瀏覽器的特色,如使用者連結點擊、管理前後頁面列表佮近期歷史頁面等等。
WebKit 的 HTML 佮 JavaScript 程式碼源自 KDE 的 KHTML 佮 KJS 函式庫的一个分支,現在由 KDE、Apple、Google、Nokia、Bitstream、BlackBerry 佮 Igalia 等獨立開發。OS X、Windows、GNU / Linux 以及其他的類似 Unix 系統作業系統,攏支援這个專案。二空一三年四月初三,Google 宣佈講伊建立了 WebKit 中 WebCore 元件的分支—— Blink,Blink 用佇咧新版 Google Chrome 佮 Opera。
WebKit 的 WebCore 佮 JavaScriptCore 元件使用 GNU 較冗公共授權條款,其他的元件採用 BSD 授權條款。
節甲二空一三年三月七,Webkit 商標已經予蘋果公司佇美國專利佮商標局註冊為其商標。
緣起
WebKit 的程式碼源自一九九八年所開發的 KDE 的 HTML 排版 ia̋n-jín KHTML 佮 KDE 的 JavaScript ia̋n-jín KJS 的程式碼。Apple 的 Don Melton 佇二空空一年六月二五開始矣 WebKit 這个案,彼當陣 WebKit 干焦為著 KHTML 佮 KJS 這个復刻,Melton 佇電子批內底 KDE 開發者來解說,KHTML 佮 KJS 比其他的技術有咧創閣較容易開發、閣較輕可仔(是少於十四分辨行程式碼)、 閣較清氣的設計,猶閣有更加佮標準相容的優勢,KHTML 佮 KJS 將會透過連接器函式庫(adapter library)的鬥相共予徙栽去 OS X,並重號名做 WebCore 佮 JavaScriptCore。JavaScriptCore 佇二空空二年六月,佇咧 KDE 的郵件列表(mailing list)著第一擺發表,包含著蘋果公司頭擺釋出的部分。WebCore 佇二空空三年一月,頭一擺發佈佇咧 Macworld Expo 中由蘋果公司 CEO Steve Jobs 有發表的 Safari 瀏覽器。當 WebCore 頭一遍使用佇頭一个 Safari 的測試版本的同時,JavaScriptCore 頭擺並以私有 framework 的方式包入去 Mac OS X v 十二,蘋果公司將其使用在 Sherlock 軟體。Mac OS X v 十曉三是頭一个 Apple 發佈內底起 WebKit 的作業系統,就算講伊已經予人內起佇咧十二內矣。
Apple 表示,有的牽涉著 OSX 的特定功能(比如講:Objective-C、KWQ 佮 OS X 特定函式)將會佇 KDE 的 KHTML 中缺席,這个行為予人叫做無仝款的發展策略。
開發分裂
因為這兩个分支(KHTML 佮 WebCore)有無仝款的目的咧進行開發,所以𪜶程式碼互相補丁(patch)的難度愈來愈懸。KHTML 的開發者認為,𪜶無愛接受蘋果公司對於 KHTML 的改變,並宣稱兩个組織的關係有的無好(a bitter failure), 蘋果提交𪜶相當大的補丁,其中包含相當大數目的改變,但是煞欠相關檔案,而且定定包含著未來的擴充,這个補丁對 KDE 的開發者來講,愛整合回 KHTML 是足困難的,此外,蘋果公司要求開發者閱覽 Apple 的程式碼進前著愛簽署保密條款(non-disclosure agreements), 甚至閣袂當存取蘋果公司的 bug 資料庫。
佇咧公佈 _ 分裂 _ 的期間,KDE 開發者 Kurt Pfeifle(_ pipitas _)貼出一篇文章,宣稱 KHTML 開發者已經設法對 WebCore 徙栽誠濟(猶毋過全部)Safari 所改進的項目回 KHTML,毋過𪜶一直攏向望遮的改進是來自蘋果公司。這篇文章予 Apple 開始聯絡 KHTML 的開發者,並討論有關係增進彼陣關係的方法佮未來的合作模式,事實上 KDE 專案確實有能力合併一寡項目,來改進 KHTML 的彩現速度佮加入一寡新的功能特色,包含 Acid 二彩現測試的改進。
自從新聞報告了 fork 事件了後,Apple 佇咧 CVS 發布矣𪜶家己維護的 WebKit 版本,𪜶發佈代碼了後,Apple 佮 KHTML 開發者已經加深合作關係,真濟 KHTML 的開發者嘛成做是 WebKit SVN 代碼庫的審查(Reviewer)閣有提交者(Submitter)。
WebKit 工作團隊同時也倒反誠濟 Webkit 行式碼當中,專為蘋果特定的修正,並且實現一个平台特定的抽象層,會當使彩現的程式就佇其他平台會當閣較順利的運作。
佇二空空七年七月,Ars Technica 網站發佈一篇文章,指出 KDE 開發團隊欲對 KHTML 轉移到 WebKit,才閣經由多年的整合,KDE 開發平台四配五佇二空一空年八月釋出,伊同時支援 WebKit 佮 KHTML,而且 KHTML 的開發猶是繼續。
開源
佇二空空五年六月七號,Safari 開發者戴夫 ・ 海厄特(Dave Hyatt)佇伊的 blog 宣佈 Apple 將將 Webkit 開源(進前干焦有 WebCore 佮 JavaScriptCore 開源), 並且開放矣 WebKit 的 CVS 程式庫閣有 bug 資料庫工具。這項訊息是由蘋果公司軟體工程的高階副總(Senior Vice President)Bertrand Serlet 佇蘋果公司二空空五年的 Worldwide Developers Conference 公開。
佇二空空五年十二月內底,會當縮放向量圖形的支援被加入了標準版本,佇二空空六年一月初,這項程式碼對 CVS 轉移到 Subversion。
WebKit 的 JavaScriptCore 佮 WebCore 元件目前以 GNU 較冗公共授權條款方式授權,啊若其他的 WebKit 元件是以 BSD 授權公開。
較精傱一步
佇二空空七年一開始,開發團隊開始實現層疊樣式表(CSS)的擴充,包含動畫、轉換(transitions)以及二 D 佮三 D 的轉場(transform), 這款的擴充佇二空空九年 W 三 C 的標準內底予人列入草案。
佇二空空七年十一月,這項專案宣佈,𪜶已經完成矣 HTML 五媒體特色的支援,允准頁面中以原生的方式缺入影片,並且會使予 script 所控制。
佇二空空八年六月二號,WebKit 專案宣佈𪜶重寫 JavaScriptCore,予人叫做是 " SquirrelFish ",伊是一个位元組碼直譯器(Bytecode Interpreter), 這个案件驗出來變做 SquirrelFish Extreme(SFX), 伊可將 JavaScript 編譯為機器語言無閣需要直譯器,按呢的做法加速矣 JavaScript 的執行,這項專案佇二空空八年九月十八發布。一開始,SFX 干焦支援 x 八十六架構,佇二空空九年一月底,SFX 佇咧 OSX 支援矣 x 八十六鼻六十四架構,而且佇該平台通過矣所有的測試。
WebKit 二
WebKit 二發佈佇二空一空年四月初八,WebKit 二的目標是將元件抽象化,並且提供閣較清氣的網頁彩現,伊會利用對四周圍的介面抑是應用程式的崩去,建立一个環境使網頁的內容(JavaScript、HTML、排版等等)將會佇另外一个行程 ( Process ) 運行,比起 WebKit,這个抽象化的這个做法按算予 WebKit 二路會當閣用一个閣較簡單的程式。因為乎 WebKit 二對比起講 WebKit 有 _ 一个無相容的 API _,所以造成伊的名去予人改變做 WebKit 二。
目前 WebKit 二干焦開放佇 Mac、Windows 佮 MeeGo-Harmattan。
使用
做為彩現 ia̋n-jín 使用的 WebKit,予人使用佇 Safari 佮 Google Chrome 瀏覽器於 Windows、OS X、iOS 佮 Android 平台(毋過,Chrome 干焦使用 WebCore,而且 JavaScript ia̋n-jín 猶閣有濟工系統攏是家己開發)。 其他的佇咧 OS X 下底的應用程式嘛使用 WebKit,比如講 Apple 的 e-mail 使用者捀軟體 Mail 猶閣有微軟的個人資訊管理系統 Microsoft Entourage 兩千空八,皆使用 WebKit 來彩現 HTML 內容的 e-mail 訊息。
Opera 軟體公司佇二空一三年初宣佈,𪜶將停止𪜶家己開發的 Presto 排版 ia̋n-jín,由 Webkit 專案取代,在未來將會以 Webkit 來取代,閣貢獻予 Webkit 專案。
內建平台
新的網頁瀏覽器已經內底起矣 WebKit,比如講 Symbian 手機仔 S 六十瀏覽器、BlackBerry 瀏覽器(ver 六板零 +)、 Midori、Chrome 瀏覽器、Android 網頁瀏覽器、PlayStation \ _ 三 \ _ 系統軟體四配空以上所使用的瀏覽器、KDE 的 Rekonq 瀏覽器佮 Plasma Workspaces 攏使用 WebKit 成做原生的網頁彩現 ia̋n-jín。WebKit 已經予 OmniWeb、iCab 佮 Web(頭前咧講的 Epiphany)採用,取代原有的彩現 ia̋n-jín,Sleipnir 佇二空一二年開始佇𪜶的瀏覽器開發 WebKit,並且二空一二年五月十七進入第三个 Alpha 階段。Epiphany 同時支援 Gecko 佮 WebKit,但是𪜶的團隊咧講 Gecko 的發佈週期佮未來的開發計劃將會令𪜶對 Gecko 的支援傷過笨重。HP 的 WebOS 使用 WebKit 做為伊應用程式執行時期的基礎。Valve Corporation 的 Steam 上新咧換新的介面,使用 WebKit 成做伊介面的彩現佮內建的瀏覽器。WebKit 佇咧 Adobe \ _ AIR 著予人使用佇彩現 HTML 佮執行 JavaScript,佇咧 Adobe Creative Suite CS 五,WebKit 用來彩現部份元件的使用介面。
截至二空一空年頂半年,分析估計內底 WebKit 瀏覽器的行動裝置已經達到三億五千萬,節甲二空一二年二月 ( 二千空一十二追二 ),WebKit 的市場份額已經達到百分之三十六,仝等於 Internet Explorer 所使用的 Trident / MSHTML ia̋n-jín 的市場份額,若是這个成長繼續落去,使用 WebKit 的總和(Chrome、Safari 閣有智慧型手機仔 / 平板)佇二空一二年底將會超過百分之五十,而且 WebKit 將會是市場的領導者。
徙栽
佇咧 Hyatt 發佈 WebKit 開源了的彼周,Nokia 宣佈𪜶共移栽仔 WebKit 到 Symbian 作業系統,並為 S 六十開發一个是因為 WebKit 的行動裝置瀏覽器,這馬已經予人號名做 Web Browser for S 六十,伊予人使用佇 Nokia、Samsung、LG 佮其他使用 Symbian S 六十的行動電話。Apple 嘛已經徙栽 WebKit 到 iOS 而且共運行佇內底 iPhone、iPod Touch 佮 iPad,伊予人使用佇遮裝置的網頁瀏覽器佮電子郵件軟體。Android 行動電話平台嘛用用 WebKit 成做伊網頁瀏覽器的基礎,啊若二空空九年一月發佈的 Palm Pre 使用 WebKit 作為伊的介面。Amazon Kindle 三包含著一个以 WebKit 打造實驗性質的瀏覽器。
佇二空空七年六月,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 四堵四包含 Qt port,Qt port 的 WebKit 嘛用會著 Konqueror 四配一版本了後。佇咧 Qt 下底的 Iris Browser 嘛使用 WebKit。The Enlightenment Foundation Libraries ( EFL ) 猶閣咧進行(經由 Samsung 佮 ProFUSION), 𪜶共專注佇納入式佮行動系統,閣將其做一个獨立運行的瀏覽器、Widgets / Gadgets、檔案閱讀佮修改軟體。Clutter 的移植是由 Collabora 所開放,由 Bosch 所贊助。
閣有一个案佮 WebKit 仝步(由 Pleyo 所贊助), 予人叫做是 _ Origyn Web Browser _,伊提供一个多元的移植方式,共其移植到抽象的平台,去予移植到一千七百八十九歲抑是輕量系統會當閣較緊簡單。這个徙栽予人用佇1875入式裝置,比如講 set-top boxes、PMP,伊已經予徙栽去矣 AmigaOS、AROS 佮 MorphOS,MorphOS 一孵七是頭一个支援 HTML 五媒體標籤的 Origyn Web Browser ( OWB )。
分支
佇咧二空一三年四月初三,Google 宣布伊將家己開發 WebCore 的分支,也就是講 Blink ia̋n-jín。Chrome 的開發者因為希望佇瀏覽器的開發上擁有閣較大的自由度,同時避免佮頂游的衝突,閣較會當透過徙掉 Chrome 無咧使用的元件而簡化家己的程式庫,所以決定開發 WebKit 的分支版本。同時 Opera 軟體佇仝年小可仔早嘛宣佈,𪜶這馬將自有 ia̋n-jín 轉換著 Chromium 的程式庫,佇這个時陣嘛仝時陣轉換著 Blink 的分支。根據這个聲明,WebKit 開發者開始討論徙掉 Chrome 相關程式碼的可能性,以精簡規个 WebKit 程式庫。
元件
WebCore
WebCore 是一個由 WebKit 專案所開發的佈局(Layout)、 彩現(Rendering)佮 HTML 和 SVG 的 DOM 函式庫,完整的程式碼攏由 GNU 較冗公共授權條款所授權,WebKit 框殼包裝矣 WebCore 佮 JavaScriptCore,並提供一个 Objective-C 應用程式介面來接介由 C + + 所開發的 WebCore 彩現 ia̋n-jín 佮 JavaScriptCore 指令碼 ia̋n-jín,透過 Cocoa API 就會當佇應用程式中真簡單的使用遮的物件。了後的版本同時包括一个平台的 C + + 抽象平台,並且提供各種 API 使用。
WebKit 通過 Acid 二及 Acid 三的測試,包括完美像素的彩現(pixel-perfect rendering)閣有無任何時間佮無順的問題。
JavaScriptCore
JavaScriptCore 是一个佇咧 WebKit 中提供 JavaScript ia̋n-jín 的框殼,而且佇咧 OS X 成做其他內容的指令碼 ia̋n-jín。JavaScriptCore 上代先是為著 KDE 的 JavaScript ia̋n-jín(KJS)函式庫佮 PCRE 正規表示式函式庫,JavaScriptCore 對 KJS 佮 PCRE 復刻了後,已經比原先進步矣真濟,有新的特色佮極大的效能改進。
佇二空空八年六月二號,WebKit 專案宣佈,將被重寫為 " SquirrelFish ",伊是一个位元組碼直譯器,這个案演變做 SquirrelFish Extreme(簡稱做 SFX,市場講的 Nitro), 頭擺公開佇二空空八年九月十八,伊會將 Javascript 編譯為原生的機械語言,不再需要位元組碼直譯器,同時催落去矣 JavaScript 的執行效率。
Drosera
Drosera 是一个 JavaScript 除毋著工具,伊予人包括佇每日編譯的 WebKit 版本內底。伊予人號名做 _ 茅仔膏菜屬 _,這是一種食蟲植物。Drosera 目前已經予 Web Inspector 取代矣。
跨平台之路
iOS
二空空七年六月二九號,iPhone 上市,WebKit 通過 Safari 瀏覽器進入 iOS 平台,而且隨成做彼當陣 iOS 平台唯一的排版 ia̋n-jín。
蘋果公司成做這條專案的領導者。
Windows
二空空八年三月十八,Safari 三孵一 for Windows 轉予正,解決矣 Windows 平台跤 WebKit 一直存在的部份相容性問題。仝年九月初三推出的 Google Chrome 予這平台進一步成熟。啊若佇咧 Windows Mobile 戰線,頭先推出穩定版的是頂司司的 Iris Browser。
Windows 是除了 Mac OS X 外另外一个得著 WebKit . org 官方支援的版本。
Linux
二空空八年十月二二投入市場的 Android,其內建瀏覽器 Google Chrome Lite 代表著脫胎佇咧 Linux 的 Webkit 核心「回歸」Linux 平台。就算講 WebKit 的原型 Khtml 是由 Qt 寫做,猶毋過 Linux 當早上注意的 WebKit 專案煞是 Gnome 領導的 WebKit / Gtk +。毋過隨著奇趣味科技佇二空空八年六月被 Nokia 收購,Qt 方面嘛加緊 WebKit 的開發行程。目前,Google Chrome,Xfce 的 Midori,GNOME 的 Epiphany、KDE 的 Konqueror,Arora 以及 QupZilla 是 Linux 系統下上時行的 Webkit 核心瀏覽器。
Symbian
二空空五年,諾基亞公司的 S 六十團隊成做手機仔捀 WebKit 代先驅,𪜶共 WebKit 框殼徙栽到矣 Symbian S 六十平台,做為 S 六十第三版的瀏覽器核心。
這馬使用 WebKit ia̋n-jín 的瀏覽器
開源
- Midori:當前上新的測試版零交一 . 五咧用的 ia̋n-jín 版本啦是 WebKitGTK + 一孵一 . 十三
- Epiphany:原使用 Gecko,二鋪二八版開始改用 WebKit
- Arora:當前上新版的本號是零仙一一 . 零,使用 QtWebKit 搧叫 Webkit 核心
- QupZilla:當前上新版的本號是一孵三 . 五,使用 QtWebKit 搧叫 Webkit 核心
非開源
佇二空一三年二月十三,Opera 亦宣布欲轉用 Webkit ia̋n-jín。