首页 > 代码库 > Mozilla研究—深入理解mozilla所需的背景知识

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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