截至 2014 年 05 月 11 日,Google Chrome 官方稳定版是 34.0.1847.131,此版本发布于 2014 年 04 月 25 日,预计 2 周内,35 的稳定版也将发布。纵观国内 Chrome 系的浏览器产品,内核版本基本都停留在 Chromium 32 以下。这是什么原因呢?
浏览器(正式版)------发布时间--------Chromium 内核版本
世界之窗浏览器 6.2----2014 年 04 月 18 日--31.0.1650.63
UC 浏览器 1.0beta------2014 年 04 月 10 日--32.0.1700.107
360 安全浏览器 6.3-----2014 年 02 月 24 日--21.0.1180.89
百度浏览器 6.1--------2014 年 01 月 24 日--26.0.1410.43
Chrome 32 正式版是在 2014 年 01 月 16 日发布的,至今已经接近四个月,按照以前的经验,国内浏览器厂商一般都会在 30 天内跟进到新的内核,这次对于 32 版本的内核,跟进速度已经明显落后于以往,这是什么原因呢?是 Chrome32 版本有什么严重问题,还是国内厂商厌倦了 Chrome 内核的跟进,抑或是其他什么技术原因导致的这种延迟呢?下面逐条分析上述可能性:
1. Chrome 32 版本有严重问题?
Google Chrome 官方正式版发布从 32、33 至目前的 34,历时已经三个多月。从 Chromium 社区的反馈上来看,性能、安全性上的进步都是很大的。Chrome 32 加强了对未知来源扩展的安装的限制,Chrome 33 提高了对插件执行的验证门槛,这些改动,都进一步增强了安全性;Chrome 34 优化了界面图形引擎,提高了软件交互性能。
从这个分析来看,Chrome32 出现严重问题,被国内厂商集体“嫌弃”的可能性不大,并且 Google 作为一家全球领先的科技公司,其开发流程是非常严谨的,一个版本从进入开发分支到发布,中间会经历至少3-4 个月的迭代期(也就是 Chrome 30 的正式版发布前,32 版本已经进入开发分支),期间每次 Build 还会自动执行大量的 Unit Tests,可以说,一个正式发布的版本出现大问题的可能行是很小的。
这样看来,因为 Chrome 32 有问题而导致国内浏览器厂商不跟进内核的可能是不存在的。
2. 国内厂商厌倦了 Chrome 内核的跟进?
如今,国内的浏览器产品竞争进入平淡期,看似大家的份额各执一块,不相侵犯;是否国内厂商安于现状,开始吃老本呢?在我看来,这种可能是很小的,国内科技公司的老板们见惯了风生水起、三十年河东三十年河西,是非常具有忧患意识的,浏览器作为桌面三驾马车的重要一员,其渠道优势及变现优势都是很大的,哪个思维正常的老板都应该是非常重视的。据某浏览器业内负责运营的朋友透露,实际上互联网浏览器的竞争今天仍然是异常激烈的,只不过形态更加趋于成熟,让互联网用户不那么容易感觉到竞争的存在;在这种竞争态势下,很难想到有什么理由让厂商们“厌倦”参与竞争,这种可能性的猜测看来也是不成立的。
3. 什么技术原因导致的这种延迟呢?
分析这一点,要有对浏览器架构熟悉的工程师来参与才可以完成。最直接的手段就是对比 Chromium 31 与 Chromium 32 两个版本的技术架构。经过七星浏览器架构师对这两个版本的分析,发现Chromium 32 相对于 Chromium 31,最大的架构上的变化应该是全面启用了 Aura 引擎。
Aura 是 Google 2011 年 6 月份的时候推出的适用于 Chrome 和 Chrome OS 的新一代窗口管理器,将会是 Chrome 发展的下一个里程碑。它被定位在 Chrome 的新的加速用户界面框架,旨在提供更丰富的视觉效果,大型动画过渡和其他只能由硬件加速产生的效果。现在的 Aura UI 要集中考虑实现硬件平台的兼容性。有趣的是 Mozilla 采用了类似的做法,他们将在其浏览器未来版本中删除 GTK,这体现出浏览器发展的一种趋势。
Aura 引擎会对浏览器厂商的开发有什么影响呢?粗略分析大概有以下几点:
a. 新的桌面窗口结构,需要厂商全部重新调整应用程序顶端架构;
b. 国内厂商大多是双核浏览器,Aura 引擎的介入,使得双核在协调上出现障碍;
c. 国内厂商加入太多自制的交互元素,这些交互元素需要针对 Aura 引擎重新设计开发;
有过软件项目经验的朋友应该能从上述三点看出这个 Aura 引擎,对第三方浏览器的开发造成了多大的麻烦,上述三点的工作量估计,没有几个月至半年是不够的,并且前提是要有对架构把握很好的技术人员来操作。其实 Google 在很早就开始对 Chromium 使用 Aura,只是一直处于小范围功能的尝试,这次 Chromium 32 全面启用 Aura 引擎,从 Google 方面来说,并不是什么意料之外的事情。
在此看来,国内的厂商应该是正在突破这个技术难题,只是需要一些时间,预计过几个月之后,各厂商会相继推出基于 Chromium 32 内核的升级产品。
为了让大家能够更直观的感受传统架构与 Aura 架构的区别,分别针对国内几款主流双核浏览器,借助 Spy++ 开发工具,展示了采用 Chromium 32 之前内核的浏览器与 Chromium 32 及以后内核的浏览器的特征:
Google Chrome 34:
360 极速浏览器:
世界之窗浏览器 6.2:
从上述截图看出,采用 Aura 架构的 Google Chrome 34 窗口结构更加简单,没有了原来的多层嵌套结构,这就符合了 Aura 技术层面的特性:界面元素的渲染,都有 Aura 引擎接管,而不是杂揉更多操作系统相关的实现。这一点可以看出,Chrome 未来会更好的支持跨平台。
有人会问,UC 宣称自己的内核是基于 Chromium 32 的,为何上面的截图显示仍是旧的架构呢?Google Chrome 32 时虽然全面启用了 Aura 架构,但是在 Chromium 开源项目的代码中,在 32 版本时,仍然保留着旧架构的代码,开发者可以通过编译选项选择不启用 Aura,这样就很容易将内核升级到 Chromium 32;但是这样的内核升级有一些问题,比如 Google 不保证继续维护非 Aura 引擎的代码,这样非 Aura 引擎中的代码的 Bug 或者漏洞,就不会有人去解决,风险是很大的。
比如在 UC 浏览器地址栏输入 chrome://gpu 并回车,所显示的页面中,很多图形优化特性都失效了,这可能就是不启用 Aura 的损失。这种没有与 Google Chrome 保持一致的升级方式,是否能算作真正的 Chromium 32 内核,就仁者见仁、智者见智了。
对于普通 Chrome 浏览器用户,还有一种最直观区分传统引擎与 Aura 引擎的方法,是观察页面里的滚动条,传统引擎的页面滚动条是 Windows 系统样式的,而 Aura 引擎的滚动条是灰色平面样式的。