跳转到内容

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]:

参考文献

[编辑 | 编辑源代码]