Qt 将引入新的 Qt WebEngine

原文地址:http://blog.qt.digia.com/blog/2013/09/12/introducing-the-qt-webengine/

自从 2007 年首次引入 Qt WebKit 以来,Web 技术发生了翻天覆地的变化。依据市场份额,WebKit 开源项目已经成为现在世界上最流行的浏览器引擎。WebKit 的 Qt 版本移植处于 WebKit 的非 Apple 移植中领先位置,多年来,许多项目和公司都加入了这个移植项目。

Chromium 项目在 WebKit 中扮演了特殊的角色,成为 WebKit 的最大的贡献者(接下来两位是 Apple 和 Qt)。但是同一开源项目中不同公司之间的合作从来问题多多,这直接导致 Google 决定离开 WebKit 项目,创建了其自己的 WebKit 分支——Blink。

从那时起,Blink 集成在 Chromium 中,WebKit 分裂成不同的版本。这两个版本的代码很快变得不兼容。正因如此,Digia Qt R&D WebKit 团队决定仔细对比 Chromium 和 WebKit,来决定未来版本的 Qt 使用哪一个来提供最好的 Web 引擎。

在经过一段时间的研究和调查之后,我们得出了结论:我们将在 Chromium 基础之上建立未来的 Web 引擎——Qt WebEngine。有多个原因导致我们做出如此得决定:

  • Chromium 关注于跨平台建设,其浏览器能够运行在所有主流桌面平台和 Android 上;与此同时,WebKit 则不那么专注。我们自己的项目则必须支持所有的 OS 平台。
  • Chromium 沙盒之外提供了很多可做的事情,这对于 WebKit 则需要耗费大量精力。一个例子是,我们可以简单地重用平台/OS的适配代码。多媒体和新的 HTML5 特性,例如 WebRTC 能够运行在此沙盒之外,无需特别的 Qt 代码。
  • 使用 Chromium 可以简化 OS 集成处理,这使得我们可以有更多精力关注于更高层面,提供一个简单而强大的 API,可以无缝集成于 Qt 之中。
  • 我们注意到 Chromium 的开发处于代码质量的严格控制之中。这简化了我们的测试工作,有利于提供更稳定和高质量的 Web 引擎。
  • 比起 WebKir,Chromium 允许我们构建更好更高效的组件和 Qt Quick 场景。

最后,我们注意到 Chromium 是现在发展最快的浏览器。基于 Chromium 构建我们的下一代 Web 引擎是一个战略性的长期的决定。我们相信上面几点理由会让我们提供一个比现在的 Qt WebKit 更好的 Web 引擎。同时,将现在同类中最好的浏览器引擎与 Qt 整合为一个框架将为需要 Web 浏览器的嵌入式设备提供有力的支持。

Chromium 的基础特性之一是处于安全和稳定原因,在不同进程渲染 Web 内容。但是这导致我们现有的 Qt WebKit API 无法为 Chromium 提供核心切面。一个明显的部分就是 QWebElement API。我们还得改变 QObject 嵌入的方式,因为所有 QObject 与网页的交互都要求必须是异步的。

这些改变对 Qt WebKit 用户意味着什么?

首先,没什么可怕的。对于大多数用例,Web 内容都是嵌入到应用程序中的,Qt WebKit 现在工作的很好,以后若干年也会工作的很好。Qt 5.2 发布之后,我们将会集中精力开发新的 Qt Web Engine。所以如果你需要让你的应用或设备支持所有最新最好的 HTML5 特性,在我们发布了你所需要的 API 特性时,你就应该考虑移植到 Qt WebEngine。

我们尽力使 Qt WebKit 到新的 Qt WebEngine 变得简单无缝。对于 Qt Quick WebView 元素,我们基本上能提供一个接近 100% 兼容的 API。对于那些使用基本的 QWebView API 的用户,我们也有好消息。新的 Qt WebEngine 将在源代码级兼容大部分 API。如果你使用了 QObject 桥或者 QWebElement API,我们建议你等一段时间再进行移植。因为这些内容的替换 API 不大可能会在 Qt WebEngine 的初版就提供。

尽管我们不再对 Qt WebKit 提供任何新特性的开发,已有版本仍将可用。Digia 将继续为 Qt Enterprise 商业授权用户提供合同规定的 Qt WebKit 支持,也能继续提供额外时间的支持。

现在我们尽快提供一个 Qt WebEngine 的技术预览版。我们的目标是随着今年秋季的 Qt 5.2 的发布一同推出。第一个完整支持的版本有可能同明年春季的 Qt 5.3 一起发布。第一个版本我们计划使新的 Qt WebEngine 模块支持 Windows、Mac OS X、Linux 和嵌入式 Linux。

有关 Qt WebEngine 的更多内容,可以查看 Qt 项目的 wiki。在那里你可以找到更多信息,比如如何自己构建 Web 引擎以及这个模块的未来计划。

由于这是 Qt 的相当大的一次改变,我们相信这将在未来几年为我们提供一个更好更完整的 Web 平台。

关注 Qt WebEngine 以及我们的未来发展方向的最好方式是加入我们的 Qt Developer Days。在那里我们项目负责人将会讨论最新发展状况。我们可以在 www.qtdeveloperdays.com 注册 Qt Developer Days。

Leave a Reply