Chrome源码剖析 序
开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀上,如果不能,至少也可以抱一把大腿。。。
现在我就是来抱大腿的,这条粗腿隶属于Chrome(开源项目名称其实是Chromium,本来Chrome这个名字就够晦涩了,没想到它的本名还更上一层楼...),Google那充满狼子野心的浏览器。每一个含着金勺子出生的人都免不了被仰慕并被唾骂,Chrome也不例外。关于Chrome的优劣好坏讨论的太多了,基本已经被嚼成甘蔗渣了,没有人愿意再多张一口了。俗话说,内行看门道外行看热闹,大部分所谓的外行,是通过使用的真实感受来评定优劣的,这无疑是最好的方式。但偏偏还是有自诩的内行,喜欢说内行话办外行事,一看到Chrome用到多进程就说垃圾废物肯定低能。拜托,大家都是搞技术的,你知道多进程的缺点,Google也知道,他们不是政客,除了搞个噱头扯个蛋就一无所知了,人家也是有脸有皮的,写一坨屎一样的开源代码放出来遭世人耻笑难道会很开心?所谓技术的优劣,是不能一概而论的,同样的技术在不同场合不同环境不同代码实现下,效果是有所不同的。既然Chrome用了很多看上去不是很美的技术,我们是不是也需要了解一下它为什么要用,怎么用的,然后再开口说话?(恕不邀请,请自行对号入座...)。。。
人说是骡子是马拉出来遛遛,Google已经把Chrome这匹驴子拉到了世人面前,大家可以随意的遛。我们一直自诩是搞科学的,就是在努力和所谓的艺术家拉开,人搞超女评委的,可以随意塞着屁眼用嘴放屁,楞把李天王说是李天后,你也只能说他是艺术品位独特。你要搞科学就不行,说的不对,轻的叫无知,重的叫学术欺诈,结果一片惨淡。所以,既然代码都有了,再说话,就只能当点心注点意了,先看,再说。。。
我已经开始遛Chrome这头驴了,确切一点,是头壮硕的肥驴,项目总大小接近2G。这样的庞然大物要从头到脚每个毛孔的大量一遍,那估计不咽气也要吐血的,咱又不是做Code review,不需要如此拼命。每一个好的开源项目,都像是一个美女,这世界没有十全十美的美女,自然也不会有样样杰出的开源项目。每个美女都有那么一两点让你最心动不已或者倍感神秘的,你会把大部分的注意力都放在上面细细品味,看开源,也是一样。Chrome对我来说,有吸引力的地方在于(排名分先后...):
1. 它是如何利用多进程(其实也会有多线程一起)做并发的,又是如何解决多进程间的一些问题的,比如进程间通信,进程的开销;
2. 做为一个后来者,它的扩展能力如何,如何去权衡对原有插件的兼容,提供怎么样的一个插件模型;
3. 它的整体框架是怎样,有没有很NB的架构思想;
4. 它如何实现跨平台的UI控件系统;
5. 传说中的V8,为啥那么快。
但Chrome是一个跨平台的浏览器,其Linux和Mac版本正在开发过程中,所以我把所有的眼光都放在了windows版本中,所有的代码剖析都是基于windows版本的。话说,我本是浏览器新手、win api白痴以及并发处理的火星人,为了我的好奇投身到这个溜驴的行业中来,难免有学的不到位看的走眼的时候,各位看官手下超生,有错误请指正,实在看不下去,回家自己牵着遛吧。。。
扯淡实在是个体力活,所以后面我会少扯淡多说问题。。。
关于Chrome的源码下载和环境配置,大家看这里(windows版本),只想强调一点,一定要严格按照说明来配置环境,特别是vs2005的补丁和windows SDK的安装,否则肯定是编译不过的。。。
最后,写这部分唯一不是废话的内容,请记住以下这幅图,这是Chrome最精华的一个缩影,如果你还有空,一定要去这里进行阅读,其中重中之重是这一篇。。。
|
图1 Chrome的线程和进程模型 |
分享到:
相关推荐
Chrome 源码剖析 Chrome 浏览器作为 Google 推出的一款革命性的浏览器,以其高效、稳定和安全的特点赢得了全球用户的青睐。它的设计和实现有许多值得深入研究的地方,包括多进程架构、V8 引擎、插件模型以及跨平台...
Chrome源码学习文档是一份宝贵的资源,它涵盖了Google Chrome浏览器的官方文档以及互联网上专家们对Chrome源码的深入分析。这份文档对于那些想要深入了解浏览器工作原理、优化Web应用性能或者进行浏览器扩展开发的IT...
### Chrome Chromium 源码下载与编译指南 #### 一、引言 随着开源项目的日益普及和技术人员对底层技术的探索欲望不断增强,越来越多的人开始尝试深入研究诸如Chrome这类复杂软件的技术实现细节。本文旨在详细介绍...
Chrome谷歌浏览器源码分析 Chrome浏览器是全球最受欢迎的网络浏览器之一,其强大的性能、安全性和易用性得益于其先进的设计理念和高效的技术实现。本篇将深入探讨Chrome的核心组件——渲染引擎(Rendering Engine)...
Chrome是一款由Google开发的开源网页浏览器,其核心部分的源码是许多开发者和技术爱好者研究的对象。这个压缩包文件包含了Chrome的核心组件,让我们深入探讨一下这些关键的源代码及其背后的原理。 1. **Blink渲染...
Chrome浏览器是全球广泛使用的网络浏览器,其源码的开放为开发者提供了深入了解浏览器内部工作原理的机会。在提供的文件列表中,我们可以看到"TabBar.cpp"、"TabBar.exe"、"TabBar.h"以及"TabBarApp",这些文件与...
### 剥析Chrome源码:深入理解Chrome的进程间通信机制 #### 一、引言 在现代浏览器设计中,Chrome以其独特的架构和技术脱颖而出,成为业界标杆。Chrome的源码不仅庞大而且复杂,其中涉及的技术细节对于软件开发...
Chrome是一款由Google开发的流行的网页浏览器,其源代码结构复杂且功能强大。下面将详细介绍标题和描述中涉及的几个关键目录及其功能。 1. **app**:这个目录包含与操作系统平台紧密相关的应用层代码,例如剪贴板...
描述中提到的"Chrome 80.X版本Cookies解密源码"是指针对特定版本(这里是80.X)的Chrome,因为不同版本的Chrome可能会更改其Cookie的存储格式或加密方式。解密过程通常涉及到对Chrome的内部数据结构和加密机制的理解...
这是一套完整的chrome浏览器插件学习源码,基于vue.js,涵盖了manifest.json基本配置、background后台数据运行、ajax请求、localStorage本地数据操作等常见功能,非常适合插件入门学习。
Chrome插件XSwitch是一款专为谷歌浏览器Chrome设计的扩展程序,它主要服务于前端开发者和网页浏览用户,提供了方便快捷的浏览器扩展切换功能。在日常工作中,我们常常需要在多个Chrome插件之间快速切换以满足不同的...
谷歌浏览器 chrome vue 调试插件 vue-devtools chrome(谷歌浏览器)vue代码调试插件, 已打包。解压后,通过chrome扩展程序加载即可使用。 使用方法: 1、chrome浏览器输入地址“chrome://extensions/”进入扩展...
在标题和描述中提到的"Chrome_autoit操作chrome_autoit3chrome_autoit_autoitchrome_chrome_源",主要涉及到使用AutoIt来控制Google Chrome浏览器。 首先,让我们深入了解一下AutoIt。AutoIt是一个免费的工具,它...