在chrome地址栏输入about:credits就可以看到chrome使用的开源工程了,之前也有一篇介绍chrome开源工程的文章:Code Reuse in Google Chrome Browser,大家可以参考一下。
David M. Gay's floating point routines homepage
fp是netlib的一部分,主要用于浮点数运算,数的二进制与十进制的转换以及字符串和浮点数之间的转换等。这种库在程序移植到嵌入式设备时非常重要,如果移植的不好,可能出现浮点运算错误,或者在进行浮点运算时非常慢的问题。这个库里面实现的比较重要的函数有:strtod,dtoa,pow5mult,diff,cmp,lshift等。David M. Gay的这个库被广泛使用,例如Apple Libc也是使用的这个。如果在移植浏览器时出现调用dtoa进入死循环的问题,就需要特别注意编译fp库时的宏定义了。chrome用这个库的一个原因是js里面的Number都是double类型的,所以js引擎必须能够正确和快速的处理浮点数。chromde的V8还实现了FastDtoa用来更快速地处理字符串和浮点数之间的转换。
dynamic annotationshomepage
这个库主要用来检测死锁的。这个库的另外一个作用是来让代码检测工具(例如valgrind)智能点,并少报一些警告。例如下面是chrome里面实现多线程安全singleton模式的一段代码:
// This annotation helps race detectors recognize correct lock-less
// synchronization between different threads calling get().
// See the corresponding HAPPENS_AFTER below and above.
ANNOTATE_HAPPENS_BEFORE(&instance_);
base::subtle::Release_Store(
&instance_, reinterpret_cast(newval));
if (Traits::kRegisterAtExit)
base::AtExitManager::RegisterCallback(OnExit, NULL);
Netscape Portable Runtime (NSPR)homepage
NSPR是Mozilla开发的一个跨平台库,它主要提供了类型定义,线程,线程同步,文件,网络,时间处理,内存管理等的API,NSPR API比较明显的一个特征是以PR开头,例如PRInt32,PRThread,PR_CreateThread。它在程序和系统之间的关系如下图:
NSPR被很多跨平台应用使用着,例如SpiderMonkey的线程安全就是依赖NSPR实现的,《C++跨平台开发技术指南》这本书里面也提到了NSPR。chrome只是用到了NSPR的类型定义(prtypes.h)和时间处理(prtime.cc),chrome里面用NSPR主要是因为NSS和NPAPI依赖其的缘故。
Network Security Services (NSS)homepage
NSS主要用来支持网络安全,例如SSL协议,S/MIME,一些加密算法(SSL,TLS,PKCS等)。NSS是和OpenSSL差不多的东西,它比OpenSSL大,依赖的也比OpenSSL多,但是它支持PKCS #11,可以用于智能卡的加密。既然用了NSS,Chrome也就没必要用OpenSSL了。
purify headershomepage
Rational Purify是一个IBM出的自动化测试工具,主要用来检测内存相关的错误。
google-glog's symbolization libraryhomepage
google-glog主要用于日志记录,类似的工程有log4cpp,java中对应的叫做log4j。google-glog在google的工程中被广泛使用,例如google-breakpad(一个用于崩溃报告的项目,对应的服务端有http://code.google.com/p/socorro/),当chrome出现下面的对话框时,就是google-breakpad检测出来的。
valgrindhomepage
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。google的测试工作做的挺好的,不但测试工具多,而且大部分cc文件都有对应的测试代码,一般和cc文件处于同级目录,名字叫做xxxxx_unittest.cc。
xdg-mime homepage
xdg-mime是一个根据文件名和文件内来判断文件类型(mime信息)的工具。
xdg-user-dirshomepage
xdg-user-dirs是一个用于linux平台上管理桌面文件夹,我的音乐,我的图片等文件夹的工具。chrome在linux上设置chrome下载文件夹时用到了此功能。
BSDiff homepage
BSDiff是一个二进制比较工具,对应的还有bspatch。像svn diff这种工具只能比较文本等文件,而不能比较二进制文件。
chrome用BSDiff干什么呢?用来chrome的自动升级,具体请参考:Software Updates: Courgette,摘取其中一段来看看效果
Here are the sizes in bytes for the recent 190.1->190.4 update on the developer channel:
Full update 10,385,920
bsdiff update 704,512
Courgette update 78,848
二进制比较还有一些其它的算法,例如rsync,这个在同步文件时非常有用,Dropbox同步采用的算法也是rsync。自动升级其实就是一个同步操作。
XZ Utilshomepage
XZ Utils是一种依赖于LZMA SDK(7z也是采用这个)的压缩工具。chrome用XZ Utils做chrome安装程序的压缩。
google-jstemplatehomepage
google-jstemplate是一个js模板处理库,比较适合ajax程序,有点像struts。有一份介绍的ppt在http://google-jstemplate.googlecode.com/svn/slides/jstemplate.html。
Launchpad Translationshomepage
Launchpad Translations是用于chrome多语言支持的文件。chrome主要是通过GRIT (Google Resource and Internationalization Tool) 将xtb和grb文件编译成h文件,然后放到资源文件(.rc)里面。更多多语言支持的细节请参考http://www.chromium.org/developers/design-documents/ui-localization,Chromium本地化的方法和chromium之国际化。
Mozilla Personal Security Managerhomepage
Mozilla Personal Security Manager主要用于linux系统的证书管理,文档可以参考:http://www.mozilla.org/projects/security/pki/psm/arch.html。windows上与此相似的就是如下东西了:
gssapihomepage
gssapi的全称是Generic Security Services Application Program Interface,它提供让程序能够访问安全服务的应用程序接口,与它相关的技术有RADIUS,SASL,TLS和SSPI等。对于安全认证时的授权协商,在windows上chrome使用的是secur32.dll提供的SSPI(Security Support Provider Interface),而linux上则是使用gssapi。更多HTTP认证的信息可以参考:http://www.chromium.org/developers/design-documents/http-authentication
Google Toolbox for Machomepage
主要用于chrome在mac上的实现。当然Google Toolbox for Mac并不只是为了chrome,还用于google在iphone和mac上的其他产品。
WebKithomepage
webkit是什么就不说了,chrome的核心就是WebKit。
ActiveX Scripting SDKhomepage
还不清楚chrome用ActiveX Scripting SDK做什么,也没在chrome里面找到相关代码。可能和插件相关,用于支持object标签。
Almost Native Graphics Layer Enginehomepage
简称叫做ANGLE。chrome用ANGLE主要是为了用DirectX 9实现WebGL功能。chrome为什么不用opengl实现了?原因是windows opengl的各个版本是二进制不兼容的。微软的相关解释在http://support.microsoft.com/kb/124034/zh-cn,“也就 OpenGL 程序二进制级别不兼容,但在源代码级别都兼容”,也就是说一个opengl程序要能够在特定版本的windows上运行,必须在那个平台上重新编译。另外,各个显卡的驱动对opengl的支持程度也不近相同。windows上3D编程的真正标准是DirectX,导致chrome也必须用WebGl来实现weebgl(safari也是如此)。DirectX和OpenGl之间的战争与IE和netscape的战争有得一拼,可以参考http://www.cppblog.com/xczhang/archive/2007/12/09/38105.html。linux和mac os上opengl就是其的主要3D API,所以不存在问题。
Apple sample codehomepage
苹果的开发者中心,里面有很多文档和例子,相当于微软的msdn网站。在mac和iphone上编程可以参考一下,写html5的开发者也可以看一下http://www.apple.com/html5/,里面有很多苹果的html5 demo。苹果的开源工程也在里面(http://developer.apple.com/opensource/,http://opensource.apple.com/source/)。另外,很多人抱怨webkit没有文档,其实苹果写了很多关于webkit的文档,例如WebKit Objective-C Programming Guide。
Darwinhomepage
Darwin是由苹果电脑的一个开放源代码操作系统. 苹果和开源的关系很有趣,可以参考刘江写的《苹果的另一面:开源软件重镇》。
bsdiffhomepage
Mozilla实现的前面提到过的BSDiff算法。
bspatchhomepage
Mozilla实现的前面提到过的BSPatch算法。
bzip2homepage
又一个压缩算法,比gzip压缩率更高。bzip2主要用来支持HTTP里面的内容编码格式(Content Codings),chrome支持的Content Codings经常在变化,可以参考Google Chrome支持bzip2压缩和chrome支持sdch压缩,另外不再支持bzip2压缩。从我使用的chrome 13版本看,chrome支持gzip,deflate,sdch,而不支持bzip2压缩。
Google Cache Invalidation API homepage
用于chrome的缓存管理。chrome使用的是disk cache来实现缓存的,需要用Chrome Cache Viewer等工具才能看disk cache生成的文件。
Compact Language Detectionhomepage
主要用来检测是什么语言,用于chrome的拼写检查,更详细的请参考http://www.chromium.org/developers/design-documents/advancedspellchecker。
codesighshomepage
又一个代码检测工具,Mozilla的,文档在https://wiki.mozilla.org/Codesighs,主要作用是检测代码的大小。
expathomepage
一个xml解析库,和libxml是一类的,不过要比libxml轻量。
ffmpeghomepage
主要用来音频和视频的处理,例如录制和转换。一些软件具备将pc上的视频转换到手机上视频的能力,很多用的就是ffmpeg,例如豌豆荚就是这么干的。chome用这个库主要用来支持html的video和audio。
OpenGL ES 2.0 Programming Guidehomepage
OpenGL教材。
OpenGL ES 2.0 Conformance Tests homepage
OpenGL兼容性测试。
gpsdhomepage
一个GPS服务,主要用来获取地理位置。html5有获取地址位置(geolocation)的API,可以参考http://dev.w3.org/geo/api/spec-source.html和http://diveintohtml5.org/geolocation.html。gpsd就是用来在linux上实现html5 geolocation的。
Harfbuzzhomepage
用于文本渲染,不太熟。在搜索Harfbuzz相关技术时找到了几篇不错的文章:闲聊文本渲染技术的近期发展,浏览器如何渲染文本,汉字的几何中心 。
hunspellhomepage
一个拼写检测的库。很多软件都是用这个库做拼写检测,例如LibreOffice, OpenOffice和Firefox。
hunspell dictionarieshomepage
hunspell的词典。
hyphen-2.6homepage
主要用于hunspell拼写检测里面的连字处理。
IAccessible2 COM interfaces for accessibilityhomepage
Windows上用于残疾人士的一些功能。
iccjpeghomepage
用于jpeg图片的处理。
ICUhomepage
国际化(I18N)的处理。ICU是最大的一块,有12MB左右,如果只需要支持几种特定的语言,可以用http://apps.icu-project.org/datacustom/来生成小尺寸的ICU。
Chinese and Japanese Word Listhomepage
中文字和日文字,ICU的一部分。
ISimpleDOM COM interfaces for accessibilityhomepage
用于残疾人士,对于链接里面有详细的介绍。
jemallochomepage
一个malloc实现,主要用在firefox上,比libc里面的malloc快。
lcovhomepage
代码覆盖率测试工具,下面的图片应该熟吧:
libeventhomepage
libevent是一个异步事件处理软件函式库,对于服务器编程的人应该熟吧,很多服务器端就是用libevent来解决C10K问题的。chrome用这个好像是用于里面的flip server,通过flip server可以实现spdy协议。spdy是google研究的新协议,比HTTP协议更高效,可以用来干什么自己google。
libjingle homepage
GTalk里面实现视频聊天和P2P功能的库。GTalk使用的XMPP协议,但XMPP对文件传输和视频聊天支持都不行,Google就自己开发了一个,现在已成了XMPP标准的推荐扩展。chrome用这个干什么呢?用来同步书签等。chrome最近还在做的P2P API也是基于这个库。
libjpeghomepage
处理jpeg的库
libjpeg-turbohomepage
用MMX, SSE,和SSE2 SIMD指令加速处理JPEG的库。
libpnghomepage
处理png图片的库
libsrtphomepage
libsrtp是一个实现SRTP协议(Secure Real-time Transport Protocol,安全实时传输协议)的库。chrome的WebRTC就是基于SRTP协议实现的,libjingle也使用了libsrtp。
libvpxhomepage
libvpx 是一个开源的WebM(VP8)编码解码器.WebM是一个由Google资助的项目,目标是构建一个开放的、免版权费用的视频文件格式。该视频文件格式能提供高质量的视频压缩以配合HTML 5使用。
libwebpdecodehomepage
与WebM对应,WebP是Google开发的一种新的图片格式,属于有损压缩,图像文件大均比JPEG格式缩小39%。
libxmlhomepage
xml解析库,webkit要用。
libxslthomepage
用于xslt处理,webkit要用。
LZMA SDKhomepage
7z的sdk,用于安装包的压缩。
MesaLibhomepage
3D图形库,OpenGL的一份实现。
modp base64 decoderhomepage
用于Base64解码。在处理data协议时有用。
NSBezierPath additions from Sean Patrick O'Brienhomepage
用于mac os上的圆角矩形,阴影等的处理。
Mongoosehomepage
一个web server。
Cocoa extension code from Caminohomepage
Camino是Mac OS X上的一个开源浏览器,chrome在mac上的扩展实现参考了Camino。
npapihomepage
webkit和firefox的插件API。
OCMockhomepage
Mac上实现模拟对象(Mock Object)的库,主要用于测试。
OpenMAX ILhomepage
多媒体应用程序的框架标准.
opensslhomepage
实现了SSL及相关加密技术的软件包.
OTS (OpenType Sanitizer)homepage
OpenType是一种可缩放字型,用来替代TrueType。OTS用于OpenType字体的处理。
pdfsqueezehomepage
mac系统上pdf文件处理。
ppapihomepage
新的插件API,比NPAPI有很多地方做了改进。
protobufhomepage
一种序列化协议,网上有很多介绍。
pyftpdlibhomepage
python版的ftp server库。
pywebsockethomepage
python版得websocket server服务端,用于测试websocket。
qcms libraryhomepage
用于颜色管理,更详细的介绍可以参考http://muizelaar.blogspot.com/2009/06/qcms-color-management-for-web.html。
Google Safe Browsinghomepage
用于Google的安全浏览(Google Safe Browsing),至于安全浏览是什么看下面的图就清楚了:
simplejsonhomepage
用于JSON处理。
skiahomepage
skia是什么就不说了,android和chrome都在用。
speexhomepage
用于压缩声音,对人的声音压缩率比较高。
SQLitehomepage
本地数据库,用于实现html5里面的database api。
swighomepage
主要是为了方便Perl, PHP, Python,Java等语言调用C/C++,swig可以生成c/C++代码的Perl, PHP, Python,Java等语言wrapper代码。比Java生成JNI代码的做法更高级。
tallochomepage
内存池。
tcmallochomepage
malloc的实现,速度超快。
tlslitehomepage
实现SSL 3.0, TLS 1.0, 和TLS 1.1的python库
undoviewhomepage
gtk+扩展,用于支持文本编辑框的无效次数的undo,高亮等。
Webdriverhomepage
Web应用程序测试工具。
WTL 8.0homepage
Windows Template Library,chrome在windows上的UI控件是在此基础上开发的,也就是windows上chrome ui = skia+WTL.
xdg-utilshomepage
XdgUtils是linux上一系列工具,包括前面提到过的xdg-mime。
XUL Runner SDKhomepage
主要用于XPCOM开发。
yasmhomepage
NASM汇编器。
zlibhomepage
压缩和解压库。
Strongtalkhomepage
StrongTalk是SmallTalk的变种,用了优化的类型系统。StrongTalk的优点是用类型反馈技术来加快运行速度,相关介绍可以参考http://blog.csdn.net/g9yuayon/archive/2006/09/13/1217364.aspx。chrome里面的v8使用了Strongtalk assembler,可以参考V8 Javascript engine之所以快
相关推荐
在这个主题中,我们关注的是一个与Chrome相关的压缩包文件,标题为“Chrome获取书签插件工程文件(提取)”。这个文件包包含了开发Chrome插件所需的必要元素,尽管它不能直接导入Chrome,但它是对开源书签插件的精简...
不过,需要注意的是,虽然Chromium是开源的,但Google Chrome浏览器还包括了一些专有组件,如内置的Flash Player和某些更新机制。 “前端”标签表明这个离线安装包对前端开发者尤为重要。Chrome浏览器的开发者工具...
谷歌浏览器(Chrome)是一款基于开源项目Chromium的高效浏览器,以其快速、稳定和安全的特点受到用户的广泛欢迎。Chrome的设计理念是让浏览器作为一个平台,能够随着网络技术的发展而不断进化,满足用户对应用程序和...
Chrome基于开源项目Chromium,允许开发者查看和修改其源代码,促进了浏览器技术的发展和创新。 6. **前端**:在IT领域,前端通常指与用户交互的部分,包括网页设计、HTML、CSS、JavaScript等技术。Chrome浏览器因其...
Chrome是一款由Google开发的开源网页浏览器,其核心部分的源码是许多开发者和技术爱好者研究的对象。这个压缩包文件包含了Chrome的核心组件,让我们深入探讨一下这些关键的源代码及其背后的原理。 1. **Blink渲染...
我从chrome开源项目中剥出的windows可用的基础库,vs2008工程,基于chrome14,代码做了少许的修改。基本包含了常用的字符串操作,编码,线程框架(极其重要),单例管理,智能指针,引用计数,类成员函数回调模板,锁...
Chrome浏览器是基于开源项目Chromium构建的,它的源码提供了关于网络请求处理、渲染引擎Blink、JavaScript引擎V8、多进程架构以及安全性等多方面的知识。以下是一些主要的知识点: 1. **多进程架构**:Chrome采用多...
Chrome是一款由Google开发的开源网页浏览器,其源代码是广大开发者和研究者探索现代网络技术、浏览器架构以及软件工程实践的重要资源。"chrome 源代码"这一主题涵盖了丰富的技术领域,包括但不限于C++编程、多线程...
首先,ChromeTabs 基于 Chromium Embedded Framework (CEF),这是一个开源项目,允许开发者将 Google Chrome 的渲染引擎集成到他们的应用程序中。CEF 支持多种编程语言,包括 Delphi,为开发者提供了丰富的 Web 功能...
Google Chrome是一款全新的开源浏览器,其特点包括: - **简单直观的用户体验**:旨在提供简洁明了的操作界面。 - **基于WebKit开源项目**:利用成熟的渲染引擎技术。 - **多进程架构**:每个标签页独立运行在一个...
在IT领域,Google V8引擎是一款著名的开源JavaScript虚拟机,被广泛应用于Chrome浏览器以及Node.js等项目中。本文将详细阐述如何使用Visual Studio 2010(VS2010)来编译V8引擎,并创建一个"Hello, World!"测试工程...
通过研究Chrome Pak Customizer 2.0的源代码,开发者不仅可以学习如何操作pak文件,还能深入理解Chromium项目的工作原理,以及如何利用开源工具解决实际问题。同时,这个工具也可以作为软件工程实践的案例,展示如何...
CEF是一个开源框架,它封装了Google Chrome的渲染引擎Blink和JavaScript引擎V8,使得开发者可以将现代Web浏览器的功能嵌入到各种应用中,包括JavaFX应用。 JavaFX是Java的一种图形用户界面(GUI)工具包,用于创建...
简单来说,Chrome是Google的官方浏览器,基于Chromium开源项目。Chromium是一个开放源代码的项目,允许开发者参与开发,新特性和技术经过验证后会被引入到Chrome的正式版本中。由于这个原因,Chromium的更新频率远...
Selenium 是一个开源的Web应用程序自动化测试框架,支持多种编程语言,如Java、Python、C#等。它提供了一个强大的API,使开发者能够编写脚本来模拟用户在浏览器上的各种操作,包括点击、输入、导航、表单填充等。这...
Blink是由Google开发的开源渲染引擎,它基于WebKit,但在优化和更新方面更加积极,使得Chrome能够快速加载页面,提供流畅的浏览体验。Blink不断进行技术迭代,确保了对最新Web标准的支持,如HTML5、CSS3和JavaScript...
Node.js是建立在Chrome V8引擎上的JavaScript运行时,它允许开发者使用JavaScript进行服务器端编程。Node.js以其非阻塞I/O模型和事件驱动的架构而闻名,这使得它在处理大量并发连接时表现优秀,特别适合实时通信应用...
GreenChrome是来自耍下的绿化Chrome实用小工具,目前作者已将该程序开源,工具不大,所以代码不是太讲究,见谅。 工具介绍: GreenChrome通过winmm.dll劫持的方式,本程序会随着Chrome启动。如果检测到外部程序...
JokerChrome, Chrome 生成和 Chrome" 作为一个前端工程师你了解你的小伙伴么--chromeabout:version - 显示当前版本 也可以是chrome-resource://about/chrome://history2 - 浏览历史 History2