Apple的Safari是基于WebKit上开发的浏览器,但Apple并没有开放它的代码。
WebKit的原形是KDE的KHTML和KJS。
官方网站:http://webkit.org
支持功能:
HTML4.0/5.0
CSS1&2
Dom1&2
ECMA262
JS1-6
HTTP/FILE
GIF/JPEG/PNG
XML
SSL3
JVM
FTP
SVG可缩放矢量图形(Scalable Vector Graphics)
RSS2.0(RDF Site Summary )
MathML
一般我们在PC下不会考虑开发浏览器,但在嵌入式领域可能就有这可能了。
浏览器的选型:
1。Geocko 功能强,但太庞大
2。Opera 功能强,但要钱
3。Ipanel 功能一般,也要钱
4。Ants 功能一般,还是要钱
5。WebKit 功能强,不要钱,呵呵就这个(有nokia,apple,google为例), 它属于 LGPL and BSD licenses.,
浏览器的分层结构
浏览器功能结构
浏览器简介6-团队开发 收藏
如果需要开发一个嵌入式的浏览器需要如下:
开发团队来说:
1。一群有着非常激情和强大自信心的学习型开发团队。
2。他们是热衷挑战技术难点,关注新技术,并愿意很快接收新方法和新思想的人们。
3。他们有着一个共同的目标,并且为了实现这一目标,无顾一切的狂热。
4。他们遇到困难,能坚持不懈的调试1个月甚至更久。
5。他们有一个非常有责任心的leader,并且他时常能在黑暗中给大家指明路标,和团队成员一起共患难。
6。他们能得到上层的大力支持(精神和物质),至少两年,并能在最危机的时候相信团队。
人才类型:
1。C/C++/JAVA开发人员
2。WEB开发人员(HTML/CSS/Javascript)
3。测试开发人员(C/C++/HTML/CSS/Javascript)
4。图形开发人员(C/C++)
5。底层开发人员(C)
6。架构设计人员
8。UI交互设计人员
9。项目经理(技术化)
10。产品经理(产品化)
软件流程方法:
1.各阶段培训,评审,问题讨论,技术交流。
2.自动化单元测试,每日构建,迭代开发,结对开发
软件设计 质量体系的构建过程
功能 1。功能完整性和准确性(基础) 2。功能的安全性 3。互操作性
可靠性 1。容错 2。可复原性
可用性 1。易懂 2。可掌握 3。可操作性 4。吸引力
效率 1。时间特性 2。资源利用 (关键点)
可维护性 1。可分析性 2。可扩展和修改性 3。稳定性 4。易测性
可移植性 1。适应性 2。可安装性 3。共存性 4。可替代性 (关键点)
以上得一步一步考虑和完善。
为了完成这个质量体系,我们应该如何做:
1。必须有内存池或垃圾收集
2。必须有日志系统,它必须为快速定位bug提供方便
3。必须有统一的结构和类型定义
4。必须有最小化的统一头文件
5。必须有性能分析记录
6。必须有统一的代码风格,doxyen的风格最好,又可以导出文档
7。必须有自己的算法库(链表,hash,vector等)
8。必须有关键代码注释和文档
9。必须资源化字符串,数组,图片等
10。最好有win32或linux的模拟器
11。最好有用户录放功能
12。架构分层上不要耦合,每一层负责单一的功能,
13。模块之间可通过消息,回调,虚拟类解耦合
14。单元测试代码与功能代码相同重要,要经常更新,并同步在自动化中
《webkit入门准备》
1. C++
a) Webkit代码风格
b) Inline
c) Const
d) 构造与析构
e) 重载
f) 继承
2. 泛式编程
a) Vector/List/HashTable
b) Iterator
c) 智能指针
3. 面向对象编程
a) 对象概念
b) 设计模式
4. 调试、测试及工具
a) Gcc及Makefile
b) Trace
c) VC
d) Gdb
e) Alert及javascript调试
f) GUN binary工具
g) JsUnit
h) Javascript框架Dojo
i) JsDoc
j) JsLint
k) HTML Validator
l) Dom inspector
m) Xml spy
n) 标准测试用例
5. 性能分析
a) Gprof
6. Socket
7. 编译原理
a) 词法
b) 语法
8. 操作系统
a) Linux线程
b) Linux 内存
c) 编译与链接
《体系结构详解》
1. 浏览器功能结构
2. 浏览器结构
3. Webkit体系结构
4. WebKit目录结构
5. WebKit编译
《HTML引擎详解》
1. HTML语法
2. Dom Core
3. Dom Event
4. Dom Html
5. 焦点处理
6. HTML扩展
《JS引擎详解》
1. Javascript语法
2. JS Binding
3. JS Interpreter
4. GarbageCollect
5. javascript扩展
《CSS排版详解》
1. CSS语法
2. Dom-CSS
3. Dom-Style
4. Paint
5. CSS风格扩展
《CURL、SSL详解》
1. Loader
2. Curl
3. HTTP
4. SSL
《XML引擎详解》
1. XML
2. Ajax
《TCMalloc内存管理机制》
1. 内存池
2. TcMalloc
《其它》
1. WebKit外壳封装
2. Plugin插件机制
3. Pcre正则表达式函数库
4. WTF C++模板库
以上内容均转自 http://blog.youkuaiyun.com/yirui/archive/2008/09/09/2906005.aspx