Chrome研究中心

为什么国内Chrome系浏览器的内核都止步在版本32,Chromium 32 到底发生了什么?

        至发文日(2014年05月11日),Google Chrome 官方稳定版是 34.0.1847.131,此版本发布于2014年04月25日,预计2周内,35的稳定版也将发布。纵观国内Chrome系的浏览器产品,内核版本基本都停留在Chromium 32以下,参见下列内核版本列表(整理日期2014-05-11)。
        浏览器(正式版)--------发布时间-------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
        傲游浏览器 4.3---------2014年02月24日--30.0.1599.101
        360极速浏览器 7.5-----2014年02月21日--30.0.1599.101
        搜狗浏览器 4.2---------2014年02月21日--28.0.1500.95
        猎豹浏览器 正式版4.5--2014年02月13日--29.0.1547.66
        百度浏览器 6.1---------2014年01月24日--26.0.1410.43
        枫树浏览器 2.0.9.20----2013年08月29日--27.0.1453.110

        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 是 Google2011年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:
        
        Google Chrome 31:
        
        360极速浏览器:
        
        猎豹浏览器:
        
        世界之窗浏览器6.2:
        
        UC浏览器:
        
        傲游浏览器:
        
        搜狗浏览器:
        
        从上述截图看出,采用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引擎的滚动条是灰色平面样式的。Chrome 31/32/34滚动条样式:
                        
        最后也展示一下七星浏览器的Spy++截图,使用的是七星浏览器正式版1.34.1正式版。从截图可看出,七星浏览器确实启用了Aura引擎。
        
        Aura还有很多其他的特性,是关于跨平台和Chrome OS方面的,就不再探讨了。七星浏览器架构师真心希望大家都可以早日体验Aura架构的双核浏览器,所带来的快速和高性能。
        七星工作室原创,欢迎转载并请注明出自七星浏览器 - Chrome研究中心