首页>参考读物>计算机科学与技术>软件与程序设计

深入理解Android:WebKit卷
作者 : 孟德国 王耀龙 周金利 黎欢 著
丛书名 : 移动开发
出版日期 : 2016-03-02
ISBN : 978-7-111-52921-7
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 245
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

内容简介
本书是Android经典畅销书系“深入理解Android”系列的第6部,由前百度移动移动浏览器业务部的几位专门从事Android系统和WebKit研究的资深工程师撰写。它继承了该系列图书的总体思想,以Android源代码为依托,以WebKit处理数据的流程和它的功能模块依据,对WebKit的工作机制和实现原理进行了深度的剖析,应该是目前对Android系统下WebKit讲解最透彻的著作。当然,它对所有研究浏览器和WebKit内核的工程师们有同样的帮助。
全书共11章,主体部分按浏览器处理数据的流程来组织:
第1章是准备工作,介绍了Android全源码开发环境的搭建、调试工具的使用,以及WebKit源代码的结构。
第2章讲解了浏览器工作原理、WebKit的整体架构与设计,以及与它与主流浏览器引擎的比较。
第3章讲解了WebKit的WTF库,包括智能指针、Assertion、内存管理与容器、线程封装、Webkit运行时线程结构。
第4章讲解了WebKit的Loader与网络库,包括Loader的设计与实现架构、资源加载流程、MainResourceLoader和SubResourceLoader、Chrome-net网络库,以及Web Cache。
第5章讲解了网页解析,包括HTML语法解析、网页处理一般过程、CSS样式处理、JS脚本执行等内容。
第6章讲解了排版布局,包括CSS框模型、布局计算,以及render相关的核心类。
第7章讲解了渲染和硬件加速,包括软件绘制流程、软件合成、硬件加速合成等。
第8章讲解了Android WebKit框架,包括WebKit Java层核心类与主要接口和WebKit框架实现源码,并基于WebKit的浏览器做了范例实现
第9章讲解了JavaScript扩展接口,包括V8原理及接口、WebKit JavaScript接口, 并做了HTMLElement binding实例分析和HTML5扩展分析
第10章讲解了WebKit的插件系统,包括NPAPI插件接口详解、WebKit的插件实现、Android平台插件开发等。
第11章讲解了Remote Inspector,包括Remote Inspector实现架构、Remote Inspector协议、Inspector 代码分析、BackEnd代码分析、FrontEnd代码分析等
除此之外,在对海量的Android源代码进行分析的过程中,本书尽可能地对其中的精妙之处进行了分析和解读,目的是希望帮助读者领悟其中的优秀设计思想和方法。

图书特色

经典畅销书系“深入理解Android”系列专题卷第3部,前百度移动浏览器业务部资深工程师撰写
依托Android源代码,根据WebKit处理数据的流程和它的功能模块,对WebKit的工作机制和实现原理进行了深度的剖析
本书是Android经典畅销书系“深入理解Android”系列专题卷的第3部,专题卷的前两部依次分析了Android系统的Telephony、WiFi、NFC和GPS等通信功能模块。
从2011年开始,我们与资深Android技术专家邓凡平先生一起规划了这套书,宗旨是通过分析Android系统的源代码来帮助开发者们更好地理解和使用它。这套书分为4大部分:应用部分、框架部分、专题部分、内核部分。这套书已经出版6本,是目前Android领域最具影响力和口碑的一套书,在市场上引起了强烈的反响,已成为深入、系统了解Android工作原理的必读之书。

孟德国
资深系统工程师,现就职于小米。长期从事嵌入式软硬件、浏览器引擎、Android系统等相关领域的研发工作。曾就职于百度移动浏览器引擎组,期间专注浏览器内核Webkit与Chromium源码研究。此外在操作系统内核(Linux Kernel及各种RTOS)、SOC软硬件体系结构、无线技术(WiFi、蓝牙)、最优滤波、神经网络等相关领域亦有一定的研究。

王耀龙
前百度资深研发工程师。2007年西安交通大学硕士毕业后从事嵌入式、IPTV、智能电视端及手机端浏览器的研发,曾长期专注于嵌入式浏览器内核、WebKit及Chromium的源码研究,作为技术带头人主持相关开发工作。此外在数学建模、图像视频处理、机器学习、Web与移动端开发等领域亦有相关经验。现创业,为联众律商技术合伙人、CTO。

周金利
现就职于百度移动浏览器业务部,毕业于北京大学软件学院,硕士学位。毕业后从事Android源码底层库的研发工作,对Android系统多媒体框架有过深度开发经验。2012年开始从事WebKit开发工作,2013年开始Chromium内核研发工作,对Android平台Webkit内核及Chromium内核硬件渲染的实现原理有过深度剖析。

黎欢
百度移动浏览器业务部资深内核工程师,全程参与百度手机浏览器T5、T7内核项目,主要负责HTML5功能实现、内核性能优化、提升内核稳定性及内核升级等工作。大学毕业后主要从事手机应用开发,对Android系统有过深度开发经验。2010年至今专注于WebKit及Chromium的源码研究,对Layout、CSS、HTML解析等有过深度剖析。

内容简介
本书是Android经典畅销书系“深入理解Android”系列的第6部,由前百度移动浏览器业务部的几位专门从事Android系统和WebKit研究的资深工程师撰写。它继承了该系列图书的总体思想,以Android源代码为依托,以WebKit处理数据的流程和它的功能模块为依据,对WebKit的工作机制和实现原理进行了深度的剖析,应该是目前对Android系统下WebKit讲解最透彻的著作。当然,它对所有研究浏览器和WebKit内核的工程师们有同样的帮助。

全书共11章,主体部分按浏览器处理数据的流程来组织:
第1章是准备工作,介绍了Android全源码开发环境的搭建、调试工具的使用,以及WebKit源代码的结构。
第2章讲解了浏览器工作原理、WebKit的整体架构与设计,以及它与主流浏览器引擎的比较。
第3章讲解了WebKit的WTF库,包括智能指针、Assertion、内存管理与容器、线程封装、Webkit运行时线程结构。
第4章讲解了WebKit的Loader与网络库,包括Loader的设计与实现架构、资源加载流程(MainResourceLoader和SubResourceLoader)、Chrome-net网络库,以及Web Cache。
第5章讲解了网页解析,包括HTML语法解析、网页处理一般过程、CSS样式处理、JS脚本执行等内容。
第6章讲解了排版布局,包括CSS框模型、布局计算,以及render相关的核心类。
第7章讲解了渲染和硬件加速,包括软件绘制流程、软件合成、硬件加速合成等。
第8章讲解了Android WebKit框架,包括WebKit Java层核心类与主要接口及WebKit框架实现源码,并基于WebKit的浏览器做了范例实现。
第9章讲解了JavaScript扩展接口,包括V8原理及接口、WebKit JavaScript接口, 并做了HTMLElement binding实例分析和HTML5扩展分析。
第10章讲解了WebKit的插件系统,包括NPAPI插件接口详解、WebKit的插件实现、Android平台插件开发等。
第11章讲解了Remote Inspector,包括Remote Inspector实现架构、Remote Inspector协议、Inspector 代码分析、BackEnd代码分析、FrontEnd代码分析等。
除此之外,在对海量的Android源代码进行分析的过程中,本书尽可能地对其中的精妙之处进行了分析和解读,目的是帮助读者领悟其中的优秀设计思想和方法。

图书前言

为什么要写这本书
在PC互联网时代,用户开启电脑后手动打开的第一个应用程序,如果不是QQ,那往往就是浏览器。在移动互联网无比繁荣的今天,移动浏览器虽然没有像PC浏览器那样占据资讯第一入口的地位,但浏览器引擎一个华丽的转身,找到了自己新的、更广阔的发展空间—嵌入到各个超级App中,比如微信、百度搜索框等,无缝展示Web资源,由此可见,浏览器引擎依旧非常重要。
浏览器的重要性毋庸讳言,在这便捷的工具中,用户只需键入一个文本的URL或者点击一个链接,瞬间绚丽的新页面就展示在面前。浏览器具备什么样的魔法使这一切悄然发生呢?相信普通用户和众多的前端开发者都会有这个疑问。阅读开源的浏览器引擎代码(比如WebKit),可以帮我们解开这些疑惑,这正是本书的内容。
WebKit引擎内容庞大复杂,是一个完整的网页内容解析工具,集成WebKit的具体平台只需对接网络库及图形库,便可使用WebKit的强大解析功能。利用具体平台提供的图形库及显示系统便可实现网页的渲染和显示。WebKit引擎由众多的子模块组成,模块功能高度内聚,彼此协同工作处理数据流。代码考究,格式优美,内容精彩,是开源代码中的上品,极具研究和学习价值。
由于WebKit的庞大,初学者往往无从下手,对比Linux Kernel,虽然Linux Kernel的源码复杂度高于WebKit,但相关领域已经有大量的优秀书籍,加之操作系统、计算机体系结构及接口技术是计算机相关专业学生的必修课,这都使得Linux Kernel的学习曲线不再陡峭。而在浏览器引擎方面,至今学习资源仍然非常少,WebKit官网、Chromium官网、W3C官网、html5rock等网站虽然有一些原理性和框架性的描述,但不够具体,要想真正了解浏览器引擎还是要跟随笔者一起阅读代码。
读者对象
本书主要介绍Android 4.2 平台WebKit的原理与实现,今天看来虽然Android版本略显陈旧,但WebKit的架构与原理是没有变化的,所以本书也可帮助读者理解其他平台或其他版本WebKit引擎浏览器的原理。
本书的主要目标读者有如下几类:
WebKit内核工程师;
手机浏览器及浏览器类应用开发者;
前端开发工程师;
对浏览器感兴趣的大专院校在校学生。
为方便读者查阅代码,笔者已经将去掉.repo和.git目录的Android 4.2版本的全部源代码,上传至百度网盘,链接为:http://pan.baidu.com/s/1hqJEyP2。
如何阅读本书
本书的主体部分按浏览器处理数据的流程来组织,所以建议读者从头至尾阅读,以便于完整地了解WebKit。当然由于WebKit的各个模块依据功能进行了清晰的划分,读者也可根据兴趣阅读各相关章节。
本书各章内容安排如下:
第1章作为全书的开篇,介绍了Android全源码开发环境的搭建过程,读者可在全源码开发环境的基础上研究WebKit代码。
第2章介绍浏览器工作原理及WebKit概览,对比了当前主流浏览器引擎,讲解了WebKit的优缺点、历史和现状,以及设计架构。
第3章介绍WTF库,包括智能指针、Assert、内存管理与容器、线程封装、WebKit运行时线程结构。
第4章介绍Loader与网络库,包括Loader的设计与实现架构、资源加载流程、MainResourceLoader和SubResourceLoader、chrome-net网络库,以及Web Cache。
第5章介绍网页解析,包括HTML语法解析、网页处理一般过程、CSS样式处理、JS脚本执行等内容。
第6章介绍排版布局,包括CSS框架模型、布局计算,以及Render相关的核心类。
第7章介绍渲染与硬件加速,包括软件绘制流程、软件合成、硬件加速合成等。
第8章介绍Android WebKit框架,包括Android Framework介绍、Android WebKit Java层核心类与主要接口、Android WebKit框架实现的源码解析,并基于Android WebKit的浏览器做了范例实现。
第9章介绍JavaScript扩展接口,包括V8原理及接口、WebKit JavaScript接口, 并做了HTMLElement binding实例分析和HTML 5扩展分析。
第10章介绍WebKit的插件系统,包括NPAPI插件接口详解、WebKit的插件实现、Android平台插件开发等。
第11章介绍Remote Inspector,包括Remote Inspector实现架构、Remote Inspector协议、Inspector 代码分析、BackEnd代码分析、FrontEnd代码分析等。
勘误和支持
由于时间仓促加之笔者水平及视野有限,错误和疏漏是难免的,欢迎读者批评指正。如果有任何宝贵意见,欢迎通过如下邮箱联系笔者:webkitbook@163.com。
致谢
感谢机械工业出版社华章分社的策划编辑杨福川和丛书主编邓凡平先生,是你们的鼓励和帮助引导我们顺利完成全部书稿。
感谢姜影编辑,感谢你对书籍初稿的订正和修改建议。
另外,还要感谢曾经的同事马兴,感谢他对本书提出的宝贵意见。
作者团队

上架指导

计算机\程序设计

封底文字

本书是Android经典畅销书系“深入理解Android”系列专题卷的第3部,专题卷的前两部依次分析了Android系统的Telephony、WIFI、NFC和GPS等通信功能模块。
从2011年开始,我们与资深Android技术专家邓凡平先生一起规划了这套书,宗旨是通过分析Android系统的源代码来帮助开发者们更好地理解和使用它。这套书分为分为4大部分:应用部分、框架部分、专题部分、内核部分。这套书已经出版6本,是目前Android领域最具影响力和口碑的一套书,在市场上引起了强烈的反响,已成为深入、系统了解Android工作原理的必读之书。
说明:加上阅读路线图,同《深入理解Android:卷III》

作者简介

孟德国 王耀龙 周金利 黎欢 著:暂无简介

图书目录


前 言
第1章 搭建源代码编译环境 1
1.1 Android全源码开发环境 1
1.1.1 PC配置建议 1
1.1.2 Ubuntu系统安装 2
1.1.3 Ubuntu下Android编译环境搭建 2
1.1.4 工作目录设置 3
1.1.5 源代码下载 3
1.1.6 整体编译Android源代码 4
1.1.7 单个模块按需编译 5
1.1.8 编译生成本地Android SDK 5
1.2 Android常用工具使用及相关技巧说明 6
1.2.1 启动Android模拟器 10
1.2.2 Android调试工具adb的使用方法 10
1.3 WebKit源代码目录结构 13
1.4 WebKit代码调试 15
1.5 本章小结 17
第2章 浏览器工作原理及WebKit概览 18
2.1 浏览器工作原理概述 18
2.1.1 页面 19
2.1.2 内核 19
2.1.3 外壳 24
2.2 浏览器和WebKit简史 27
2.3 WebKit架构概览 29
2.3.1 整体组成架构 30
2.3.2 核心工作流程 34
2.3.3 代码设计风格 36
2.4 本章小结 38
第3章 WTF的实现及使用 39
3.1 WTF库概述 39
3.2 智能指针 40
3.2.1 OwnPtr的实现及使用 41
3.2.2 RefPtr的实现及使用 44
3.2.3 线程安全性 45
3.3 Assert与crash dump 46
3.3.1 Assert的实现及使用 46
3.3.2 crash dump的实现及使用 47
3.4 内存管理与容器 50
3.4.1 FastAllocator的实现及使用 50
3.4.2 容器类概述 51
3.5 原子操作 57
3.6 WebKit运行时线程结构 57
3.6.1 MessageQueue实现分析 57
3.6.2 Task传递 59
3.6.3 MainThread运行原理 60
3.7 本章小结 61
第4章 Loader与网络库 62
4.1 Loader概述 63
4.2 Loader的设计与实现架构 63
4.2.1 Loader模块的设计 63
4.2.2 Loader中的类结构及作用 65
4.3 MainResourceLoader资源加载流程 67
4.3.1 主资源 67
4.3.2 主资源加载示例 67
4.4 SubResourceLoader资源加载流程 73
4.4.1 派生资源 73
4.4.2 派生资源加载示例 73
4.5 WebKit网络库chrome-net介绍 80
4.5.1 chrome-net实现结构 80
4.5.2 chrome-net与WebKit的接口 81
4.6 WebKit中的 Cache 81
4.6.1 Memory Cache内存缓存 82
4.6.2 Page Cache页面缓存 84
4.6.3 Disk Cache磁盘缓存 86
4.7 本章小结 87
第5章 网页解析 88
5.1 WebKit网页解析概述 88
5.2 DOM模型简介 89
5.3 HTML解析过程 90
5.3.1 DOM树的构建 90
5.3.2 Render树的构建 94
5.3.3 RenderLayer树的构建 96
5.4 CSS样式表处理 97
5.4.1 CSS文档结构 97
5.4.2 CSS解析过程 99
5.4.3 CSS规则匹配 100
5.5 JavaScript脚本执行 101
5.6 本章小结 103
第6章 排版布局 104
6.1 CSS盒模型 104
6.2 定位与包含块 106
6.3 Render类的核心对象 111
6.4 Render树创建流程代码分析 121
6.5 Layout流程代码分析 123
6.5.1 计算大小 123
6.5.2 确定位置 127
6.5.3 简单例子 130
6.6 绘制流程分析 131
6.7 本章小结 136
第7章 渲染与硬件加速 137
7.1 Android SurfaceFlinger系统介绍 137
7.2 WebKit 的三棵树 138
7.3 Android WebKit渲染过程 139
7.3.1 Android WebKit记录网页绘制命令过程分析 140
7.3.2 Android WebKit软件渲染流程分析 145
7.3.3 Android WebKit硬件渲染流程分析 147
7.4 软件渲染与硬件渲染的优缺点 156
7.5 本章小结 156
第8章 Android WebKit框架 157
8.1 Android系统中的WebKit框架介绍 157
8.1.1 Android Framework介绍 158
8.1.2 Java Native Interface简介 160
8.1.3 Android WebKit相关API简介 161
8.2 Android WebKit框架实现解析 163
8.2.1 架构简述 164
8.2.2 初始化流程 165
8.2.3 网页加载流程 167
8.2.4 绘制调用流程 168
8.3 基于Android WebKit的浏览器实现 169
8.3.1 浏览器App的基本功能 169
8.3.2 Android系统浏览器实现解析 170
8.3.3 Android系统WebKit内核定制开发 174
8.4 本章小结 175
第9章 JavaScript扩展接口 176
9.1 V8原理及接口 176
9.1.1 V8设计元素 176
9.1.2 V8运行实例分析 181
9.1.3 V8 接口及使用 183
9.2 WebKit JavaScript接口 191
9.2.1 V8 binding作用及结构 191
9.2.2 WebKit接口扩展 191
9.3 HTML 5扩展实例 196
9.3.1 WebSocket概述 196
9.3.2 WebSocket实现分析 198
9.4 本章小结 200
第10章 WebKit的插件系统 201
10.1 NPAPI插件概述 202
10.1.1 浏览器插件功能作用 202
10.1.2 NPAPI插件规范 202
10.2 WebKit的插件系统 204
10.2.1 WebKit插件基础组件 205
10.2.2 插件加载流程 205
10.2.3 插件与脚本的交互 210
10.3 Android平台插件开发 213
10.3.1 新增特有接口 213
10.3.2 插件APK化及参考范例 214
10.4 本章小结 217
第11章 浏览器调试工具 218
11.1 Inspector概述 218
11.2 WebKit Inspector协议 219
11.3 Remote Inspector实现结构 223
11.3.1 协议信道 224
11.3.2 Inspector后端 225
11.3.3 Inspector前端 229
11.4 JavaScript调试 233
11.5 本章小结 235

教学资源推荐
作者: 刘燕君,刘振安,孙忱
作者: [美]本贾尼·斯特劳斯特卢普(Bjarne Stroustrup) 著
作者: [美]梁勇(Y. Daniel Liang) 著