兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
WebKit 的历史是一部充满**开源精神、商业博弈、技术分歧与巨头决裂**的史诗。 它不仅成就了苹果的 Safari,更是移动互联网(Mobile Web)时代的基石,甚至孕育了如今统治市场的 Chrome(Blink 内核)。可以说,没有 WebKit,就没有今天的移动互联网体验。 以下是 WebKit 跌宕起伏的历史脉络: ### 1. 起源:来自 Linux 的“灰姑娘” (1998 - 2001) WebKit 的前身并非由苹果从零创造,而是源自 Linux 桌面环境 **KDE** 的开源项目。 * **KHTML 与 KJS:** 1998年,KDE 项目为了开发自己的浏览器 Konqueror,编写了渲染引擎 **KHTML** 和 JavaScript 引擎 **KJS**。 * **苹果的选型:** 2000 年代初,乔布斯回归苹果,急需为 Mac OS X 开发一款原生浏览器(当时 Mac 预装的是微软 IE)。 * 苹果工程师 Don Melton 评估了当时主流的 Gecko(Mozilla/Netscape 的内核)和 KHTML。 * **为何选中 KHTML?** 尽管 Gecko 功能强大,但代码过于庞大臃肿(约 200 万行)。相比之下,KHTML 代码极其干净、优雅且轻量(不到 14 万行),且标准支持度极高。 ### 2. 磨合:苹果的秘密分叉与“渣男”行为 (2001 - 2005) 这是 WebKit 历史上最尴尬的时期。 * **秘密研发:** 苹果将 KHTML 分叉(Fork),在内部秘密研发了一年多。 * **发布 Safari (2003):** 乔布斯发布 Safari 浏览器,震惊业界。虽然乔布斯公开致谢了 KDE 社区,但苹果初期的开源方式非常糟糕。 * **“代码扔过墙”:** 苹果虽然遵守 GPL 协议发布了修改后的源码,但他们只是偶尔把一大坨修改后的乱码扔出来,没有详细的修改记录(Diffs),没有注释。KDE 开发者对此极度愤怒,认为苹果只是在“吸血”,双方很难合并代码。 * **更名:** 苹果将 fork 出来的 KHTML 渲染层命名为 **WebCore**,将 KJS 命名为 **JavaScriptCore**。 ### 3. 转折:彻底拥抱开源 (2005) 2005 年 6 月,苹果做出了一个改变 Web 历史的决定。 * **完全开源:** 苹果宣布将 WebKit 作为一个完整的开源项目运作,开放了 CVS 版本库和 Bug 追踪系统。这意味着外部开发者可以实时看到代码变动,并参与贡献。 * **战略意义:** 这一举动修复了与开源社区的关系,并开始吸引其他公司的注意。 ### 4. 黄金时代:统治移动互联网 (2007 - 2013) 这是 WebKit 的高光时刻,它几乎成为了“移动互联网”的代名词。 * **iPhone 发布 (2007):** iOS 的 Safari 采用了 WebKit,定义了手机浏览网页的标准体验。 * **Android 跟进 (2008):** Google 推出的 Android 系统,其内置浏览器也选用了 WebKit。 * **Chrome 诞生 (2008):** Google 发布桌面版 Chrome 浏览器。虽然 Google 换掉了 JS 引擎(用了自家的 V8),但渲染引擎依然使用了 WebKit。 * **一统天下:** 随后,诺基亚(S60)、黑莓、Palm WebOS 纷纷采用 WebKit。此时的 WebKit 就像当年的 IE 一样,成为了事实上的标准。前端开发者只需要写 `-webkit-` 前缀的 CSS 就能适配所有手机。 ### 5. 裂痕:Webkit2 与 架构之争 (2010 - 2013) 随着浏览器演变成“操作系统”,苹果和 Google 的需求开始剧烈冲突。 * **多进程架构(Multi-process):** Google 极其看重浏览器的稳定性及安全性,坚持推行“多进程架构”(一个标签页崩溃不影响整个浏览器)。但 WebKit 原生的架构是单进程的。 * **WebKit2 的诞生:** 2010 年,苹果发布了 WebKit2,引入了进程分离模型。**但是**,这个模型是深度绑定 Mac OS/iOS 系统机制的,并不通用,无法满足 Google 的跨平台需求。 * **代码库的混乱:** WebKit 的代码库变得极其丑陋。为了兼容两家巨头的不同需求,代码里充斥着大量的 `#ifdef GOOGLE` 和 `#ifdef APPLE`。Google 工程师发现通过 WebKit 提交代码太慢、太累。 ### 6. 决裂:Blink 的诞生 (2013 年 4 月) 这是 Web 历史上最重要的一天。 * **Google 宣布分家:** Google 宣布将 WebKit 中的 WebCore 渲染组件 fork 出来,建立名为 **Blink** 的新内核。 * **Opera 倒戈:** Opera 随即宣布放弃自家的 Presto 内核,加入 Google 的 Blink 阵营。 * **大清洗:** Google 在 Blink 中删除了约 450 万行代码(主要是为了兼容苹果和其他老旧系统的代码),让内核瞬间瘦身,跑得更快。 * **格局形成:** 从此,Web 世界形成了 **WebKit (Apple)** vs **Blink (Google/Microsoft Edge/Opera)** 的双雄对峙局面(Firefox 仍在坚守 Gecko)。 ### 7. 现状:守门人 WebKit (2013 至今) 分家后的 WebKit 变得更加“苹果化”。 * **专注方向:** 失去了 Google 的激进推动,WebKit 的演进策略变得保守但务实。 * **省电 (Energy Efficiency):** 这是 WebKit 最大的优势,为了保证 iPhone 的续航,WebKit 对资源的消耗控制得极严。 * **隐私 (Privacy):** 苹果率先在 WebKit 中引入了 ITP (Intelligent Tracking Prevention),大力封杀第三方 Cookie 和广告追踪。 * **“新 IE”的争议:** * 由于苹果更新 Safari 的频率远低于 Chrome,且对一些可能威胁 App Store 利益的 Web 新标准(如 PWA、Web Bluetooth、Web USB)支持缓慢,很多前端开发者戏称 Safari 为“新的 IE”。 * 但在 CSS 的新特性(如色彩管理、排版)支持上,WebKit 往往又走在最前沿。 ### 总结 WebKit 的历史就是一部**从“开源寄生”到“开源共主”再到“分道扬镳”**的历史。 1. **它杀死了 IE 的垄断:** 提供了轻量级的替代方案。 2. **它定义了智能手机:** 没有 WebKit 就没有 iPhone 和 Android 的浏览体验。 3. **它也是 Blink 之母:** 如今占据市场 70% 份额的 Chrome 内核,流淌的依然是 WebKit(以及 KHTML)的血。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章