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
Mozilla研究—深入理解mozilla所需的背景知识的更多相关文章
- 对html与body的一些研究与理解
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=259 一.写在前面的最 ...
- checkbox复选框的一些深入研究与理解
一.一开始的唠叨最近忙于开发,自淫于项目的一步步完工,心浮躁了.舍近而求远,兵家之大忌.我是不是应该着眼于眼前的东西,好好的静下心来,超过一般人的沉静与沉浸,研究最基本的东西呢?这番思考,让我找到了一 ...
- 【转载】checkbox复选框的一些深入研究与理解
转载来自:原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.一开始的唠叨最近忙于开发,自淫于项目的一步步完工,心浮躁了.舍近而求远,兵家之大忌. ...
- C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
from:https://blog.csdn.net/li315171406/article/details/78450534 最近要做一个大数据dataTable循环操作,开始发现 运用foreac ...
- .Net程序猿需掌握的知识
作为一个.Net的技术人员需要掌握的技术,当然,理解这些知识点并不能让你学会.NET开发. 但能够衡量你是否有着走出校门的能力,也算是给自己留一个知识的储备库吧. 共勉! 基础知识: 数据类型 变量 ...
- 运用《深入理解Java虚拟机》书中知识解决实际问题
前言 以前看别人博客说看完<深入理解Java虚拟机>这本书并没有让自己的编程水平提高多少,不过却大大提高了自己的装逼水平.其实,我倒不这么认为,至少在我看完一遍这本书后,有一种醍醐灌顶的感 ...
- 单片机小白学步系列(二十) IO口原理
IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比較长的篇幅介绍IO口的原理. 也是查阅了不少资料,确保内容正确无误,花了非常长时间写的. IO口原理原本须要涉及非常多深入的知识,而这里尽最大 ...
- Paper Reading 1 - Playing Atari with Deep Reinforcement Learning
来源:NIPS 2013 作者:DeepMind 理解基础: 增强学习基本知识 深度学习 特别是卷积神经网络的基本知识 创新点:第一个将深度学习模型与增强学习结合在一起从而成功地直接从高维的输入学习控 ...
- 深入X64架构(翻译)
| 本人只是原创翻译,而且翻译也不一定好,纯当锻炼.内容如果英文好的同学,建议直接去看英文原版,比较爽. NBAOL系列2代产品是 windows平台64位的应用程序,在技术测试过程中,遇到一些cra ...
随机推荐
- 走进React的学习之路
GIT: 代码管理.https://git-scm.com/book/zh/v2 ES6: http://www.infoq.com/cn/minibooks/ES6-in-Depth Webpack ...
- poj1308 Is It A Tree?(并查集)详解
poj1308 http://poj.org/problem?id=1308 题目大意:输入若干组测试数据,输入 (-1 -1) 时输入结束.每组测试数据以输入(0 0)为结束标志.然后根据所给的 ...
- 类库探源——System.Configuration 配置信息处理
按照MSDN描述 System.Configuration 命名空间 包含处理配置信息的类型 本篇文章主要两方面的内容 1. 如何使用ConfigurationManager 读取AppSetting ...
- 【转帖】客户端通过 HTTP 请求和响应 的 Header 信息总结
请求Header原帖地址:http://technique-digest.iteye.com/blog/1174581 响应Header原帖地址:http://blog.pfan.cn/hurongl ...
- 如何在Angular2中使用jquery
首先在index.html中引入jquery文件 <script src="http://cdn.bootcss.com/jquery/2.1.3/jquery.js"> ...
- linux管道学习(一)
最近学习了管道 pipe,在这里进行一下总结. 这里贴一段自己的实做代码 struct node{ int a; long b; }; int main() { ]; pid_t pid; ]; in ...
- Github进行项目管理的常用命令总结
最近项目中使用github来管理代码,将git的常用命令整理了一下,方便以后查询 查看git的本地配置git config --list 克隆到本地git clone (网页上面的那个http地址 g ...
- 一次ora-1113 记录
记录博客园的第一天,今天在电脑前发呆,突然感觉自己记忆越来越差,近年来随着工作力度的加强,感觉自己越来越力不从心,问题重复的出现.感觉自己应该去记录点什么了,随选择了用写博客的方式记录一下.第一天先记 ...
- tomcat内存溢出问题
内存泄露java.lang.OutOfMemoryError: PermGen space解决办法 今天访问web服务器,tomcat服务就瘫痪了,通过查看日志,发现java.lang.OutOfMe ...
- SSL Programming Tutorial
SSL Programming Tutorial � Table of Contents [ � Index This section demonstrates the implement ...