Mozilla研究—深入理解mozilla所需的背景知识

mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位。我们用它来实现WEB浏览器、WAP浏览器、邮件系统、电子书和帮助阅读器等应用程序。为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考。本文介绍一下深入理解mozilla所需的背景知识。

Mozilla非常庞大,据说有数百万行的代码。逐行理解所有代码是不可能的(也没有必要),不过要理解它的架构,以便充分利用它的功能是可能的。Mozilla涉及的技术比较多,如果不理解这些技术,阅读它的代码和文档可不是件容易的事。这里列出一些主要的背景知识:

1.         C++/JS。mozilla使用的开发语言主要有C++和JS。C++用来开发核心代码,而JS只是用来胶合用户界面(XUL)和核心代码的。C++所占比例非常大,所以不熟悉C++就不可能理解mozilla。C++本身比较复杂,幸好mozilla考虑到可移植性等问题,除了模板外,没有使用如异常和运行时类型识别等高级特性。

2.         HTML/XML。HTML浏览器是mozilla的中心项目,自然HTML的浏览和编辑是mozilla的核心之一,了解相关HTML相关知识可以减少理解mozilla的障碍。另外mozilla中大量使用了XML,XML只是语法级的规范(与语义无法),光了解XML还不够,还要了解像XBL、XUL、SVG、XSLT和SMIL等更专用的规范,尤其是XUL和XBL。

3.         DOM(Document Object Model)。Mozilla为W3C 定义的DOM(Document Object Model)提供了强大的支持,对HTML文档的操作都是通过DOM接口进行的,所以至少要了解DOM的基本概念。

4.         XPCOM(Cross Platform Component Object Model)。微软的COM(Component Object Model)只是针对Windows的,而XPCOM则是跨平台的,除此之外两者也并不完全相同,不过如果熟悉MS COM,再理解XPCOM就容易多了。XPCOM是mozilla的核心架构,它所有的组件都是基于XPCOM的,不理解XPCOM就不可能理解mozilla。我认为《COM本质论》是介绍COM最好的教材,特别是前面几章写非常精辟的,不可不读。

5.         网络协议。Mozilla中所有的项目差不多都与网络有关,里面涉及的协议,除了SSL外,都是应用级的协议,比如HTTP、FTP、SMTP、POP3和IMAP等等。不必清楚这些协议的所有细节,知道其功能和主要内容即可。

6.         GUI。跨平台是Mozilla一直努力的目标,而GUI是跨平台的最大障碍之一,mozilla为此下了很大功夫,这部分代码占有相当大的比例。所幸各种GUI都大同小异,如果熟悉一种或多种GUI系统,理解这块不成问题。

7.         编译原理。所有语言的解析都要用到编译原理的知识,mozilla中要解析HTML和所有XML格式的文件,自然离不开编译原理。熟悉编译原理中的词法分析和语法分析,对理解mozilla会有不小的帮助。

http://www.cnblogs.com/qiubole/archive/2007/09/04/881165.html

时间: 2024-11-03 21:47:30

Mozilla研究—深入理解mozilla所需的背景知识的相关文章

WEB安全测试所需的基础知识提纲(转)

——说明:下文是从其他地方看到的关于WEB安全测试所需的基础知识纲要,大家可以结合本版面的其他WEB安全测试帖子一起学习 第一章:B/S架构体系安全渗透测试基础 1.HTTP协议基本概念 (1)介绍HTTP标示URL (2)HTTP响应状态码 (3)HTTP协议传输内容 2.WEB应用认证基本概念 (1)HTTP常见认证机制 (2)BASE64编码介绍 3.B/S架构常见安全问题 (1)拒绝服务攻击基础 (2)Smurf攻击模型 (3)Fraggle攻击模型 (4)SynFlooding攻击模型

【转载】checkbox复选框的一些深入研究与理解

转载来自:原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.一开始的唠叨最近忙于开发,自淫于项目的一步步完工,心浮躁了.舍近而求远,兵家之大忌.我是不是应该着眼于眼前的东西,好好的静下心来,超过一般人的沉静与沉浸,研究最基本的东西呢?这番思考,让我找到了一些方向. 对于checkbox,从我开始接触HTML开始,陆陆续续也研究过好多次,然而多是零星的知识点的累加,或是掌握了些表象的东西,是否深入核心,是否深入其本质,是否有了完善的总结,是否

对html与body的一些研究与理解

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=259 一.写在前面的最近一直构思着写篇关于html标签的文章,虽说之前处理过html标签,也解决过不少棘手的问题,但是对其理解还不是很透彻,很多原理都是自己推测的.在网上查阅相关资料想整合一下相关的信息,发现深入探讨html,与body的文章很少,只有在蓝色理想看到一篇“一叶千鸟”的这篇“正确认识html与body”有点

【Android 内核研究】理解Context

写在前面的话 非常感谢柯元旦所赠的<Android内核剖析>一书.通过对本书的学习,让我对Android内核有了更深一层次的理解.本文是<Android内核剖析>的学习笔记. Context是什么 一个Context意味着一个场景,一个场景就是用户和操作系统交互的一个过程.在广义上,这个所谓的过程应该包括前台界面和后台数据. 举个例子,比如当你打电话的时候,场景包括电话程序对应的界面以及隐藏在界面后的数据. 从程序的角度来看,一个Activity就是一个Context,一个Serv

数学建模需掌握的知识总纲

数学建模需要掌握许多知识,这里我列出总纲: 学建模中的算法 穷举法 神经网络 模拟退火 遗传算法 图论算法 蒙特卡洛算法 所需基础知识 高等数学 线性代数(矩阵加减乘除) 概率论与数理统计(概率论,参数估计,假设检验,回归分析) 评价 AHP模型(层次分析) 模糊评价 预测 分析场景 曲线拟合 模糊预测 神经网络 灰色理论 马尔科夫链 运筹 整数规划(分支界定法) 01规划 灵敏度分析 影子价格 概率统计 排队论 主成分分析法 回归分析法 曲线拟合 图论 动态规划 网络最大流 最小费用流 最短路

Qt开发所需的基本知识

一.QT webkit简介 1.Qt Qt(发音同 cute)是一个跨平台的C++应用程式开发框架,有时又被称为C++部件工具箱.Qt被用在KDE桌面环境.Opera.Google Earth.Skype.Adobe Photoshop Album和VirtualBox的开发中.它是挪威Qt Software 的产品,2008年6月17日被芬兰的诺基亚(Nokia)公司收购,以增强该公司在跨平台软件研发方面的实力. 2.Webkit WebKit是Mac OS X v10.3及以上版本所包含的软

嵌入式工程师必知必会 —— 读书笔记1、需掌握的知识

<嵌入式工程师必知必会>,Lewin A.R.W.Edwards 著:张乐锋等译. 很多人推荐这本书,最近也一直在看,把觉得有用的东西记录下,以后自己可以看看,也希望能给想学习嵌入式的朋友带来一点帮助. 一.嵌入式工程师应该掌握的知识 这里给出了一些理论知识与实践技能,我个人认为这些理论知识与实践技能是嵌入式工程师必须掌握的. 1.至少要对印制电路板中电源的走线有基本理解,了解糟糕的布局布线对对电源质量造成什么样的严重后果. 2.同样,你还应该对印制电路板的布线如何影响信号传播有基本理解. 3

《理解 OpenStack + Ceph》-来自-[爱.知识]-收集-分享

企业IT技术分享(2016-06-29) 来自(QQ群:企业私有云平台实战 454544014)收集整理! 理解 OpenStack + Ceph (1):Ceph + OpenStack 集群部署和配置 http://www.cnblogs.com/sammyliu/p/4804037.html 理解 OpenStack + Ceph (2):Ceph 的物理和逻辑结构 [Ceph Architecture] http://www.cnblogs.com/sammyliu/p/4836014.

JavaScript基础和需记背知识

## overflow- hidden:超出内容隐藏.- auto:当有超出内容是出现滑动栏- scroll:出现滑动栏- visible:默认属性值,不隐藏超出内容.- inherit:继承父亲属性.## display- none:删除,消失,失去占据位置.- block:块级元素.- inline:行内元素.- inherit:继承父亲属性.## visibility- collapse:- hidden:隐藏,保留占据位置.- visible:显示,默认.- inherit:继承父亲属性