2008年9月2日新一款浏览器终于诞生了,她的名字叫做Chrome,出自名门之家Google,早在N年前就听说Google想推出自己的浏览器,但经过多年的励精图治,其庐山真面目终于大白于天下,一时间网上各种测评、预言等等满天飞,经过这几天的学习研究,作为一个开源浏览器内核爱好者,从自身的角度来学习观察它,现将自己初步了解的Google Chrome浏览器总结如下:
一、学习Google Chrome Comic
Google为了有效宣传Chrome,通过漫画的形式来表达自己对当前浏览器的一些看法,以及他们的实现方案即Chrome,总结起来其主要内容如下:
1、Stability,Testing and the Multi-process Architecture
其中着重描述浏览器稳定性的要求及其独特的多进程架构,同时强调Chrome经过Google搜索引擎抓到的大量不同页面测试,其稳定性拥有独特的优势,这一点是其他浏览器的测试无法比拟的;
从技术的角度来讲,采取多进程架构来实现浏览器,目前来讲确实是独一无二的,是其他浏览器无法比拟的,但多进程架构本身在Yahoo!Widget及Apache等早有成功的应用案例,技术难度没有太多的创新,相对多线程架构来讲,增加了大量IPC方面的内容,其实IPC的实现与应用在OS的实现当中拥有大规模的应用。
但多进程架构是否真的象Google所宣称的那样稳定,会不会带来诸如CPU使用过高,整个浏览器资源是否太多?特别是window句柄是否过多?因为浏览器毕竟是个图形界面程序,而不仅仅是网络程序。
通过对其Process Models初步了解,其体系上也考虑到诸如Process-per-site-instance、Process-per-site、Process-per-tab、Single process等方式的选择,但其整体效用如何还需实践的考验,当然其出发点还是够强大的,正如N年前他们设计浏览器时所宣称的那样,浏览器就是一个互联网平台,作为一个互联网平台所能显示的页面及应用越来越多,其稳定性应该是首要解决的问题,他们采取的方案就是向OS学习,采取多进程,由一个主进程来管理浏览器的一切。
2、Speed,WebKit and V8
从漫画当中,我们可看到Google对浏览器的方方面面都早有相当程度的研究,但WebKit渲染内核是否速度最快,其实值得商榷,但其代码简洁,方便学习开发,倒觉得真的很对。
至于V8对javascript的实现是否真的很快也很难讲,虽然它对javascript的实现方式有所调整,但是否真的有那么高效率很难讲,毕竟似乎没听说过它在其他地方使用过并有良好表现。
其中网上就有很多人对其对其它javascript的实现如SpiderMonkey、JavascriptCore的评价特别是垃圾回收方面有很大的争议。
3、Search,UI
这方面Chrome本身应该没有太大的创新,虽然其提出标签页放在最上方,但其好多想法早在Firefox、Opera中有所实现。
4、Security,Sanboxing and safe Browsing
对于安全的考虑,其中sanbox及phishing等方面,Firefox早有相应的处理机制,只不过其sanbox可扩展到进程层,有了一定的提升,但其本质还是基于同源策略等,同时根据V8的介绍其中提供了对对象方法、属性权限的控制管理,这一点比JavascriptCore要强大,不过SpiderMonkey其实早有提供,至于其具体Security实现是否也有诸如Firefox中的SecrurityManager还须继续观察。
5、Gears,Standards and Open source
其中特别提到对Web应用的扩展是基于Gear来实现,由于前期对Gear的实现扩展方式未曾了解,可能以后须加强对这方面的学习。
但总的说来,其扩展性应该与Firefox相比,还是有很大差距,Firefox中提供了一整套的xpcom、extension、xul等可以让开发者从浏览器的方方面面来扩展,但Chrome因为其渲染部分使用了WebKit,要让开发者象扩展Firefox那样方便的扩展Chrome浏览器应该几乎不可能。目前来看要扩展Chrome需要使用Gear或相当通用的NP Plugin技术。
二、切身体验使用Chrome
2008年9月3日一早第一时间就下载试用了Chrome浏览器,感觉其体现了Google一贯的界面简单,操作简便的风格,并且省掉了很多操作如全屏、打印预览等,一时间觉得让人无所适从,同时页面加载速度及内存占用等方面并没有太突出的表现,特别是打开20个以上的页面后,再在不同页签之间切换,往往有停顿的感觉及空白页面的现象出现,这一点在Firefox3中那怕是50个页签也没有出现类似的现象。
通过地址栏在不同页签中打开20个不同的网站,对比Chrome及Firefox3的使用情况发现,Chrome的加载速度至少比Firefox3慢20%,而整体占用CPU及内存资源,Chrome比Firefox至少多20%,对计算机系统的影响也较大,在加载完网页后不进行任何鼠标操作的情况下,Chrome主进程或Plugin进程还继续占用大量CPU,而Firefox3中则几乎不占用CPU,或许Chrome整体架构或架构对Flash Plugin等方面的支持还存在或多或少的问题。
总之毕竟是第一个测试版本,能有不崩溃及正常使用的效果,比上次第一个Safari版本发布的效果好多啦,特别是对中文、英文等不同语言的支持方面。从初步使用的感受来看,应该还是挺不错的,应该可打80分以上。
三、初步研究Chrome源代码及相关网站
第一时间阅读了其开发网站Chromium developer Documentation中的相关内容,其中对相关内容的说明可谓专业而详细但不够全面,不愧为Google主推的Open Source,有兴趣的话可以好好阅读阅读。
其中对于Chrome的编译与调试一篇更是特别实用,按照其中的说明经过30-50分钟就可轻松的编译出一个Chrome,这一点在Firefox、WebKit等开源项目中是很难办到的,同时其中包含许多第三方库的编译,而不象一般的开源项目往往需要将第三方包从其他地方下载再编译,充分的说明了Google在Open Source方面的大力支持,对开源社区来讲应该是个福音,它极大的方便了开源项目的开发,从这点讲我们应该感谢Google。
通过初步分析其源代码及其架构说明,Chrome浏览器的主要特别之处在于多进程通讯、管理及V8,并将WebKit嵌入到其中。
而与WebKit相关的网络库使用的是WinHttp、图形库使用Google自己提供的skia,而不是苹果的CoreGraphic或者Cairo等,同时对WebKit的Port方面也是自己提供的一套Interface,这样看来Chrome对WebKit的使用主要是Render Layout及页面处理流程方面。
至于其他模块诸如libxml、libxslt、libjpeg、libpng、sqlite、pthread等与WebKit中使用的相一致。今后若有时间可对其进行进一步的分析。当然其中包含很多Google自己提供的V8、Gear等等。
四、总结
通过对漫画及相关文档的学习研究及实践等,虽然Google强调其开源、稳定、安全、扩展等特性,但其架构本身对Web方面并不象Gecko那样非常开放,Gecko通过对xpcom、xul的支持大大的扩展了Html及其应用支持,这一点Gecko应该还有相当的优势。
虽然从Google看来这正是其看不上Gecko内核而采取WebKit内核的原因,因为相对简单的WebKit内核还在Android方面也有优势,而Google对RIA方面的支持,也许没那么大,其支持方式应该更像Adobe AIR一样,而不象Gecko那样支持xul一样。
从整个Chrome浏览器中体现了Google一贯的作风,简单,代码也要简单,而Gecko它太复杂,复杂得让人难以掌控。
自从Google推出Chrome之后,各种评论特别多,尤其是Google与Mozilla的关系,以及Firefox的发展,有些人悲观地预计3年后Firefox将被Chrome超越甚至让人遗忘。
但是通过初步的学习研究,个人感觉Chrome的实现方式与Firefox的实现方式还是有本质上的差别,Firefox以前获得大家认可的优势如安全、快速、易扩展等优势依然存在,同时很早以前Mozilla的开发者就认识到其在开放平台及易扩展方面的巨大前景及无人可敌的优势,也许Mozilla的优势就在这里,只要坚守住啦,目前看来Google、Microsoft都短时间内难以超越Mozilla这一点。
一点个人看法,希望能激起大家一点共鸣,大家都能更好的利用Web技术。
好好研究研究Chrome,她毕竟是个新生儿,并出自名门之家。。。。。
五、参考资源
Google Chrome Home