写点什么

浏览器市场再起波澜:Google 和 Opera 支持 Blink,Samsung 联合 Mozilla 推动 Servo

  • 2013-04-07
  • 本文字数:2502 字

    阅读完需:约 8 分钟

近日有两则与浏览器开发相关的重要新闻:一个是 Google 和 Opera 支持 WebKit 的分支 Blink ;另一个是 Samsung 将与 Mozilla 合作,共同推动 Servo 。Blink 和 Servo 均以并行架构为目标。

不久之前,Opera 宣布放弃自己的浏览器引擎 Presto,拥抱WebKit 。当时有人还担心,少了一种多样性对Web 会有何种不利影响。现在他们不必烦恼了,因为Google 从WebKit 创建了一个分支——即名为 Blink 的抽象浏览器引擎,其开发会与 Chromium 结合在一起,由后者提供该平台的一种实现。Opera 的 Web 布道师 Bruce Lawson 宣布, Opera 将与 Google 一起开发 Blink

WebKit 渲染引擎现在势头很猛,而且或许有机会成为最重要的引擎,那 Google 为什么要创建一个分支呢? Google 认为,尽管“只有一种选择看上去对开发者的效率有利”,但从长期来看,“只有一种选择不可避免地会导致停滞不前”,而“如果有更多的渲染引擎可以选择,这会带来更多创新,也会使 Web 生态系统更健康”。

据 Google 介绍,之所以创建 WebKit 分支,有两个主要的技术原因:

  • 与其他基于 WebKit 的浏览器相比,Chrome 使用了与众不同的多进程架构。此举给 WebKit 和 Chrome 都带来了一定的复杂性,延缓了创新的步伐。
  • Blink 提供了一种选择,Google 可以根据自身需要改进其浏览器性能,引入并行处理机制也是一个主要方向。

简而言之,Google 希望“像 V8 对 JavaScript 所做的改进一样,改进网络、渲染和布局。还记得 V8 之前的 JS 引擎吗?我们希望带来同样健康的创新,让使用各种浏览器的 Web 用户都能受益”。

看来 Google 希望能够根据自己的需要自由推动 WebKit 的开发,不必遵守 WebKit 的开发协议,而且能增强自己控制力更强的 Chromium。要成为 Blink 的提交者( Committer )或所有者( Owner ),其他开发者必须遵从 Google 制定的指导原则。

Google 的第一步是重新组织所继承的 WebKit 代码,“移除了 7 个构建系统,删除了 7000 多个文件——包含的代码超过 450 万行”。从长期来看,Google 希望向 Blink 中引入一系列改进,包括:

  • 进程外的 iframe ,支持在单独的沙盒进程中运行不同的页面组件。
  • 更快、更简洁的网络,目前受限于“旧的 Mac WebKit API 条款而无法修改”。
  • 将文档对象模型(DOM)整个移到 JavaScript 中。这有可能大大加快 JavaScript DOM 访问速度。

Google 还考虑了如下可能的改进

  • 让 WebCore 了解多个进程内的历史记录信息(目前假定的是同步访问同一进程内的历史记录信息)
  • 删除 Widget 树(原来受到 Mac WebKit1 的限制)
  • 将 WebCore 分到多个模块中
  • 尽可能让代码直接使用沙盒 Platform API,代替 WebCore/Platform API
  • 建立一种更简洁、更严格的 tree-gardening 系统,避免每天需要两个全职工程师参与的情况
  • 尝试把 DOM 移到 JS 堆中
  • 增加对多核的利用(比如,改进 HTML 解析器、样式引擎和 JavaScript 解析器等模块)
  • 去掉 DOM 中不够清晰的部分,这些部分可以做一些向后不兼容的修改,这样有利于提高性能或降低复杂性
  • 在 Mac Chrome 中全部使用现代的、速度更快的 tcmalloc
  • 尝试增量式布局或并行布局
  • 因为现在只有一个 JavaScript 引擎,所以可以移除 ScriptValue/ScriptState 等抽象概念,以此来修复内存泄漏问题
  • 使用 WebIDL 替换 WebKitIDL,移除定制的 JavaScript 绑定代码
  • 改进 WebCore,使之赶上 DOM3 Event/[DOM]UI Event

新浏览器引擎的出现引发了 Web 开发者的担忧,他们必须确保其代码能在新的浏览器上正确运行。为缓解开发者的焦虑,Google 引入了与 Mozilla 开发 Firefox 类似的机制。

我们的目标是推动创新,改进兼容性,开放 Web 平台,同时避免加入很多特性,避免破坏与其他浏览器的兼容性。关于新特性的添加厂商前缀(Vendor Prefix)的使用,以及新特性何时才算足够稳定进而可以交付等问题,我们面向开发者引入了强有力的策略。

Firefox 今天所用的 Gecko 引擎并不是基于 WebKit 的,不过二者高度兼容。我们会采用与 Mozilla 类似的方式,提供一个独特但兼容的开源引擎。我们也会继续开放 Bug 跟踪和实现状态,开发者随时可以看到我们在干什么,并做出自己的贡献。

另一个重要策略与厂商前缀有关,Google 不打算将其用于新特性中了:

与之相反,我们会暴露一个设置入口(在about:flags 中),以便支持实验性的DOM/CSS 特性,用户可以在此看到新添加的特性,进而加以试用并提供反馈,很像目前使用的“Experimental WebKit Features”标记。只有当我们想看看这些特性能否稳定交付时,才会在dev/canary 版本中默认启用。

对于遗留的与厂商前缀有关的特性,我们会继续使用-webkit- 前缀,因为重命名所有前缀会给开发者带来不必要的麻烦。我们已经着手研究实际中应用的HTML5 和CSS3 特性,借助调研数据,可以更好地指导我们如何可靠地弃用相关前缀所指定的属性和API。至于从WebKit 继承而来的任何非标准特性(如-webkit-box-reflect),我们希望具体问题具体分析,随着时间的推移,将其标准化或是弃用。

至于一般性的Android 和移动开发,Google 希望“整个移动Web 平台与Blink 同步,甚至走在Blink 的前面”。

之后WebKit 就主要由Apple 掌控了,这是Blink 带来的副作用之一。Apple 能否快速推进WebKit,使其跟上其他浏览器的步伐?我们拭目以待。

就在Google 宣布Blink 几小时前, Mozilla 宣布与 Samsung 合作,共同推进 Servo 的开发。这是用 Rust 开发的一个并行浏览器项目,作为“利用明天速度更快的多核异构计算架构”的一种尝试。Servo 是“完全从头开始重新构建的 Web 浏览器”,纳入了安全机制,并支持高度并行的硬件。

第一步是让它运行在 Android/ARM 上,到目前为止,Samsung 的主要贡献是“Rust 的 ARM 后端,以及支持 Android 交叉编译所必需的构建基础设施”。

目前,Servo 是运行在 Mac OS X 和 64 位 Linux 上的一个原型浏览器引擎,因为它所用的编程语言尚未成熟,很可能还要承受成长之痛。Mozilla 在同一天宣布了 Rust 0.6 ,但该语言要达到稳定,至少还需要一年的时间。在此期间,他们要“争取完成 Rust 的第一个主要版本——完成库的清理、扩充和文档化,构建改进用户体验的工具,增强性能”。

查看英文原文 Google, Opera Fork WebKit. Samsung Joins Firefox to Push Servo

2013-04-07 04:216061
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 146.3 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB数据库实时备份技术及恢复操作指南

数据库砖家

数据库‘’

YashanDB数据库事务管理详解,保证数据一致性

数据库砖家

数据库‘’

YashanDB数据库数据迁移的步骤与注意事项

数据库砖家

BOE(京东方)“照亮成长路”公益项目新十年启幕 科技无界照亮美好未来

爱极客侠

YashanDB面向云计算平台的数据库优化方案

数据库砖家

数据库‘’

YashanDB数据库的常见问题与解决办法

数据库砖家

数据库‘’

YashanDB数据库多版本控制功能介绍与应用

数据库砖家

数据库‘’

YashanDB数据库功能与应用场景全面介绍

数据库砖家

数据库‘’

YashanDB数据库与数据可视化的完美结合

数据库砖家

YashanDB数据库的最佳实践及实施方案总结

数据库砖家

数据库‘’

YashanDB数据库索引优化技术详解

数据库砖家

iOS 26 新增实时翻译:基于端侧并向第三方开放接口;Neuralink 和 Grok 使渐冻症患者重新「发声」丨日报

声网

2025年Java面试行情变了?技术不达标,如何快速逆袭拿高薪?

程序员高级码农

Java Java 面试 Java 面试题

ArkUI-X平台差异化

龙儿筝

YashanDB数据库的维护成本与效益分析

数据库砖家

数据库‘’

YashanDB索引优化详解,加速查询效率的实用方法

数据库砖家

难哭了的高考数学题,4家国产大模型表现如何?

极客天地

YashanDB数据库安全机制详解及企业应用建议

数据库砖家

数据库‘’

YashanDB数据库实时监控系统设计与实现

数据库砖家

数据库‘’

YashanDB数据库性能调优实用技巧分享

数据库砖家

不是做大模型,而是落在执行闭环,酷开智能体思路浮出水面

业界

51Talk发布2025年Q1财报:第一季度营业收入同比增长93.1%

财见

YashanDB如何支持企业的数据分析与决策支持?

数据库砖家

数据库‘’

ArkUI-x跨平台Bridge最佳实践

龙儿筝

YashanDB数据库多语言支持及国际化方案介绍

数据库砖家

数据库‘’

YashanDB数据库与人工智能结合的应用前景

数据库砖家

征程 6E/M|如何解决量化部署时 mul 与 bool 类型数据交互的问题

地平线开发者

自动驾驶; 算法工具链 地平线征程6

TortoiseSVN使用-权限配置

刘大猫

人工智能 svn 权限控制 tortoiseSVN 权限配置

YashanDB数据库实现高可用负载均衡配置说明

数据库砖家

数据库‘’

YashanDB数据库索引优化:提升查询性能的核心技术

数据库砖家

YashanDB与大数据分析平台集成方案详解

数据库砖家

浏览器市场再起波澜:Google和Opera支持Blink,Samsung联合Mozilla推动Servo_开源_Abel Avram_InfoQ精选文章