Qt5.5 为向要把 Web 渲染引擎核心 WebKit 改为 Google Chromium Blink 2015 年 07 月 01 日 Qt 5.5 正式发布。从 QT 5.3 开始,QT 就有可很好地运行在 Windows 8 上的新 WinRT API,由此,只要及时更新 Qt 5.5.x 就能完美支持 Windows 10。 Qt WebKit、Qt Quick1 和 Qt Script 从 Qt 5.5 起弃用,虽还可使用,建议以 Qt WebEngine、Qt Quick 和 Qt QML 替代,这些能完全兼容 JavaScript 引擎。 把 Web 渲染引擎从 WebKit 改为 Chromium。Chromium 更侧重于跨平台,在桌面平台和 Android 都可用,而 WebKit 在这方面表现要差一些,必须在某些系统上额外开发才能支持。Chromium 对 HTML5 特性支持更加完美,且 Chromium 是发展最快的浏览器。 WebKit 早先由 Apple 由 KHTML 项目 fork 出来,用于 Safari 浏览器的 Web 引擎。由于宽松的协议、轻量级的设计和便捷的应用程序内嵌 API,WebKit 逐渐变得流行起来,除了 Google Chrome/Chromium 和 Safari,它在移动终端 (Symbian S60,Android,iOS) 到 Toolkit 集成 (GTK+, Qt4) 都有不错的收获。 从 Qt 2007年第一次引入 WebKit 以来,Web 技术已经发生了很大变化。从只占很小的市场份额开始到现在,webit已经成为最广泛使用的 web 引擎。QtWebKit 是除了苹果之外做的比较好的,很多项目和公司也逐渐加入到这个项目开发中来。 Google Chromium 项目在其中发挥了很重要的作用,逐渐成了 WebKit 最大的贡献者(仅次于苹果和 QT,排第三)。 智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序) http://dt.digitser.cn/zh-CN/ide/idepy/index.html Google Blink Web 引擎 到 2010 年随着 OS X Lion 一起面世的 WebKit2。由于 WebKit2 在 WebCore 层面上实现的进程隔离在一定程度上与 Google Chrome/Chromium 自己的沙箱设计存在冲突,故 Google Chrome/Chromium 一直停留在 WebKit,使用 Backport 的方式实现和主线 WebKit2 的兼容。显而易见这增加了 WebKit 和 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。 基于以上原因,Google 决定从 WebKit fork 出自己的 Blink Web 引擎。Google Blink 的横空出世,也使它和其他的 WebKit 浏览器开发商包括:苹果、诺基亚、黑莓,更彻底地分道扬镳。 Google Chrome 28 开发版本的版本说明中还在使用 WebKit,而 Chrome 28.0.1469.0 就已替换为 Blink。 自从 Blink 被真正集成到 Google chromium 中,WebKit 的发展就有了两个不同分支,且这两个版本的代码迅速分开了。基于这个原因,Qt 的 WebKit 团队需要对 chromium 和 webkit 这个两个分支进行详细的调查,决定在未来使用哪一个分支,以便给 Qt 的用户提供更好的 web 引擎。 经过一段时间对 2 个分支的调查研究,QT 最终决定使用 chromium 的 webkit。原因如下: Chromium 跨平台 chromium 浏览器已在许多主要桌面平台和安卓系统上运行。而这一点 webkit 是不行的,必须花很大精力开发才能支持所有的操作系统。 由于 chromium 跨平台,可把更多精力放在提供更容易使用的 API,和 Qt 无缝集成。 Chromium 有好多现成可用功能 这些功能在 webkit 上,要花很大精力开发。譬如:跨平台、多媒体、HTML5 支持。 更稳定、质量更好 chromium 有严格的质量控制,可节省很多测试精力,能够提供一个更稳定、质量更好的 web 引擎。 兼容性更好 相比 webkit,chromium 可以和 widget、Qtquick 更好的无缝集成。 chromium 是目前最具活力和发展最快的移动浏览器,从战略发展的角度,Qt 决定使用 chromium 做 web 引擎。 基于稳定性和安全性的考虑,chromium 中对 web 页面的渲染是在不同的进程中。所以,Qt 暂时无法提供某些 API,比如 QWebElementAPI。由于 QObject 和 web 页面的通信是异步的,所以必须修改 QObject。 QtWebKit 和 Qt webEngine 那么,这些改变对 webkit 的用户意味着什么呢? 首先不用担心,大多数情况下,应用程序中的 QtWebKit 将运行良好,且在未来一段时间都会如此。Qt5.2 版发布后,digia 的精力会主要放在新 Qt webEngine 上。所以,如果想使用 HTML5 新特性,建议把应用程序或设备迁移到 digia 稍后发布的新的 QtwebEngine 上。 digia 会尽最大的努力实现 Qt webkit 到 Qt webEngine 的无缝移植。对于 webview,我们会提供接近 100% 的兼容性。对于基础的 web view API,在新的 QtwebEngine 中代码是完全兼容的。如果使用了 QObjectbridge 或是 QWebElement,建议稍等一段时间再移植。在 Qt webEngine 的第一个版本中,可能不会提供这样的 API。 Qt webkit 将不再开发,现有的版本可以继续使用。对于商业版本用户,digia 一定会提供维护帮助。 digia 现在正在进行的工作是能够尽快提供一个新的 QtwebEngine 技术预览。目标是和 Qt5.2 一起发布。完全支持的版本要到 Qt5.3。第一个发布版本支持 windows、macOS x、linux 和嵌入式 linux。 参考: Qt5.5 ── Android iOS Linux Mac OS X Windows C++应用 LGPL或GPL开源许可 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载。 |