chrome源码解析系列:前序前序研究目的研究chrome有一下目的: 1:学习其程序构架,一个优秀的软件的构架必然很精美。 2:其中有些代码可以借鉴,供以后使用。 3:可以定制自己的浏览器。 源代码chrome 的总体框架它的官方资料上面提及一些, 但是不够详细, 更多信息得通过它的代码来理解。
程序有以下这些模块: 1:chrome主程序:浏览器的UI,渲染,COOKIE,用户配置等功能 2:WEBKIT:苹果的页面的W3C 3:V8:负责JS解析 4: SKIA 适量图形处理工具。
在下载完chrome源码我感慨万千, 靠! 1G多的代码什么概念, 仔细看了源码,发现 WEBKIT 600M,其他开源代码加起来快200M, 又靠,chrome的代码也就200M左右。 心理的恐惧减轻了,对于200M的代码没什么害怕的! 其实研究源码,可怕的不在于代码的数量, 而在于要能理解程序的组织,结构,大纲,模块。 编译chrome关于怎样编译网上有N多介绍的文章,这里就不再重复了。
附带提一点:源码不要放在中文路径下,还有路径中不能有空格, 上次就因为这两个个问题浪费了我三个小时。 研究入口在哪里?对于小小的200M代码, 怎么找到突破口呢, 先不慌, 弄清楚程序结构再下手。 关于 WEBKIT,V8,SKIA目前没有时间研究, 所以先放到一边去。
关于chrome的主程序,目前我认为有一下可以值得研究探讨的地方: (1)chorme系统 1:chrome的消息系统,这个巨大的消息网络是怎么组织的,网络消息,用户消息,UI消息是怎么来?怎么去的?有谁掌管这些消息? 渲染引擎的消息是怎么产生的,怎么发送到UI的,UI怎么处理的? 2:WINDOWS窗口系统设计 3:chrome进程通讯系统是怎么显示的? 4:chrome的线程通讯系统,线程之间是怎么同步的?是怎么样异步的?它的线程系统复用性能怎样? 5:chrome 所采用了那些设计模式? 6: chrome渲染引擎是怎么实现的,渲染进程说渲染的数据是怎么在另外一个窗口进程里面显示出来的? 7:它是怎么支持调试程序的,怎么处理调试信息的? 8:UI,Render,WEBKIT是怎么组织起来的? 9:怎么实现跨平台的? (2)SKIA矢量系统 ....<待补充> (3) WEBKIT系统 ....<待补充> (4)V8系统 ....<待补充> |
|