chrome源碼解析系列:前序前序研究目的研究chrome有一下目的: 1:學(xué)習(xí)其程序構(gòu)架,一個(gè)優(yōu)秀的軟件的構(gòu)架必然很精美。 2:其中有些代碼可以借鑒,供以后使用。 3:可以定制自己的瀏覽器。 源代碼chrome 的總體框架它的官方資料上面提及一些, 但是不夠詳細(xì), 更多信息得通過它的代碼來理解。
程序有以下這些模塊: 1:chrome主程序:瀏覽器的UI,渲染,COOKIE,用戶配置等功能 2:WEBKIT:蘋果的頁面的W3C 3:V8:負(fù)責(zé)JS解析 4: SKIA 適量圖形處理工具。
在下載完chrome源碼我感慨萬千, 靠! 1G多的代碼什么概念, 仔細(xì)看了源碼,發(fā)現(xiàn) WEBKIT 600M,其他開源代碼加起來快200M, 又靠,chrome的代碼也就200M左右。 心理的恐懼減輕了,對(duì)于200M的代碼沒什么害怕的! 其實(shí)研究源碼,可怕的不在于代碼的數(shù)量, 而在于要能理解程序的組織,結(jié)構(gòu),大綱,模塊。 編譯chrome關(guān)于怎樣編譯網(wǎng)上有N多介紹的文章,這里就不再重復(fù)了。
附帶提一點(diǎn):源碼不要放在中文路徑下,還有路徑中不能有空格, 上次就因?yàn)檫@兩個(gè)個(gè)問題浪費(fèi)了我三個(gè)小時(shí)。 研究入口在哪里?對(duì)于小小的200M代碼, 怎么找到突破口呢, 先不慌, 弄清楚程序結(jié)構(gòu)再下手。 關(guān)于 WEBKIT,V8,SKIA目前沒有時(shí)間研究, 所以先放到一邊去。
關(guān)于chrome的主程序,目前我認(rèn)為有一下可以值得研究探討的地方: (1)chorme系統(tǒng) 1:chrome的消息系統(tǒng),這個(gè)巨大的消息網(wǎng)絡(luò)是怎么組織的,網(wǎng)絡(luò)消息,用戶消息,UI消息是怎么來?怎么去的?有誰掌管這些消息? 渲染引擎的消息是怎么產(chǎn)生的,怎么發(fā)送到UI的,UI怎么處理的? 2:WINDOWS窗口系統(tǒng)設(shè)計(jì) 3:chrome進(jìn)程通訊系統(tǒng)是怎么顯示的? 4:chrome的線程通訊系統(tǒng),線程之間是怎么同步的?是怎么樣異步的?它的線程系統(tǒng)復(fù)用性能怎樣? 5:chrome 所采用了那些設(shè)計(jì)模式? 6: chrome渲染引擎是怎么實(shí)現(xiàn)的,渲染進(jìn)程說渲染的數(shù)據(jù)是怎么在另外一個(gè)窗口進(jìn)程里面顯示出來的? 7:它是怎么支持調(diào)試程序的,怎么處理調(diào)試信息的? 8:UI,Render,WEBKIT是怎么組織起來的? 9:怎么實(shí)現(xiàn)跨平臺(tái)的? (2)SKIA矢量系統(tǒng) ....<待補(bǔ)充> (3) WEBKIT系統(tǒng) ....<待補(bǔ)充> (4)V8系統(tǒng) ....<待補(bǔ)充> |
|
|