Apple 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]。
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或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]。
- Apple Safari(macOS、iOS、iPadOS)
- iOS和iPadOS平台上的所有网页浏览器(因Apple政策限制)
- Apple Mail、备忘录、图书、新闻、App Store等macOS/iOS原生应用
- PlayStation 3及后续PlayStation游戏机内置浏览器
- Amazon Kindle电子书阅读器浏览器
- Nintendo 3DS互联网浏览器
- Tizen移动操作系统默认浏览器
- BlackBerry浏览器(已停用)
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 WebKit — English Wikipedia
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 WebKit — 百度百科
- ↑ 3.0 3.1 3.2 WebKit — MDN Web Docs Glossary
- ↑ 4.0 4.1 4.2 WebKit — 维基百科(中文)
- ↑ 5.0 5.1 5.2 5.3 Blink — 维基百科(中文)
- ↑ 6.0 6.1 6.2 WebKit简介及工作流程 — 阿里云开发者社区
- ↑ WebKit 官方文档 — WebKit.org
- ↑ Google将在10周内用新的渲染引擎Blink取代旗下所有平台的现有浏览器 — 36氪
- ↑ 9.0 9.1 WebKit(开源的浏览器引擎)— 百度百科
- ↑ 10.0 10.1 10.2 WebKit架构深度探索 — 腾讯云
- ↑ ECMAScript引擎列表 — 维基百科(中文)
- ↑ JavaScriptCore 文档 — WebKit.org
- ↑ 苹果用LLVM JIT提升WebKit JS引擎的速度 — InfoQ
- ↑ WebKit2 — WebKit Trac
- ↑ 15.0 15.1 15.2 WebKit2 概述 — WebKit.org
- ↑ Licensing — WebKit.org
- ↑ 17.0 17.1 Licensing WebKit — WebKit.org