书籍详情
《WebKit技术内幕》[39M]百度网盘|亲测有效|pdf下载
  • WebKit技术内幕

  • 出版社:电子工业出版社
  • 出版时间:2014-06
  • 热度:6359
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐

  

WebKit作为支持HTML5的主流渲染引擎,近年来备受前端开发者关注。本书将揭示WebKit总体架构、网页渲染原理,及其对硬件与新技术的高效利用,以及高性能Web实践等,内容涉及Web前端所有重要话题。
  

  本书作者为Chromium贡献者,及开源项目Crosswalk初创人。
  每一主题均涵盖基本定义、内部原理及其对Web前端开发实践的启示。
  剖析WebKit如何对HTML5诸项技术提供支持,包括:网络、CSS和布局、2D/3D图形图像、硬件加速渲染、JavaScript引擎、多媒体、混合编程、安全机制等。
  详解Web前端领域所涉及的各种性能瓶颈,以及针对问题的应对之策。
  结合目前最热门的移动技术,分析WebKit在移动领域的发展,以及移动领域为最前沿Web应用与Web运行环境带来的机遇。
  探讨Web前端未来的可能发展方向,包括向不同应用场景和应用领域的渗透。

  WebKit是一个非常成功的项目,它不仅仅是渲染引擎,而且成功的推动了网络的发展。
  基于WebKit渲染引擎的浏览器项目Chromium,成为率先支持HTML5功能和创新功能的标杆。
  完整理解一个Web渲染引擎和浏览器并不容易,其包含众多复杂功能。
  WebKit项目和Chromium项目(不包括该项目依赖的众多第三方项目)的代码量在500万行以上,而这些代码很多并没有完善文档,理解工作其原理异常困难。
  


  

海报:

/

内容简介

  《WebKit技术内幕》从炙手可热的HTML5的基础知识入手,重点阐述目前应用最广的渲染引擎项目――WebKit。不仅着眼于系统描述WebKit内部渲染HTML网页的原理,并基于Chromium的实现,阐明渲染引擎如何高效地利用硬件和全新技术,而且试图通过对原理的剖析,向读者传授实现高性能Web前端开发所需的宝贵经验。
  全书首先从总体上描述Webkit架构和组成,而后涵盖Web前端和所有与之相关的技术,包括网络、资源加载、HTML和CSS解析、渲染树、布局、硬件加速、JavaScript引擎、多媒体、移动支持、插件机制、安全机制、调试和全新的Web平台等。对于每一项技术,在介绍基本含义之上,详细分析Webkit内部的工作原理,进而从实践角度道出由此带来的Web前端开发启示。

作者简介

  朱永盛,Chromium项目Committer,2006年从南京大学毕业后就职于英特尔亚太研发有限公司,专注于HTML5、WebKit和Chromium等方面技术,参与过多个浏览器和Web运行环境项目,并向业界大会和技术爱好者做过多次技术分享。2013年开始初创Android系统上的Web运行环境的开源项目——Crosswalk。

内页插图

目录


第1章 浏览器和浏览器内核
1.1 浏览器
1.1.1 浏览器简介
1.1.2 浏览器特性
1.1.3 HTML
1.1.4 用户代理和浏览器行为
1.1.5 实践:浏览器用户代理
1.2 浏览器内核及特性
1.2.1 内核和主流内核
1.2.2 内核特征
1.3 WebKit内核
1.3.1 WebKit介绍
1.3.2 WebKit和WebKit2
1.3.3 Chromium内核:Blink
1.4 本书结构

第2章 HTML网页和结构
2.1 网页构成
2.1.1 基本元素和树状结构
2.1.2 HTML5新特性
2.2 网页结构
2.2.1 框结构
2.2.2 层次结构
2.2.3 实践:理解网页结构
2.3 WebKit的网页渲染过程
2.3.1 加载和渲染
2.3.2 WebKit的渲染过程
2.3.3 实践:从网页到可视化结果

第3章 WebKit架构和模块
3.1 WebKit架构及模块
3.1.1 获取WebKit
3.1.2 WebKit架构
3.1.3 WebKit源代码结构
3.2 基于Blink的Chromium浏览器结构
3.2.1 Chromium浏览器的架构及模块
3.2.2 实践:从Chromium代码结构和运行状态理解现代浏览器
3.3 WebKit2
3.3.1 WebKit2架构及模块
3.3.2 WebKit和WebKit2嵌入式接口
3.3.3 比较WebKit2和Chromium的多进程模型以及接口

第4章 资源加载和网络栈
4.1 WebKit资源加载机制
4.1.1 资源
4.1.2 资源缓存
4.1.3 资源加载器
4.1.4 过程
4.1.5 资源的生命周期
4.1.6 实践:资源的缓存
4.2 Chromium多进程资源加载
4.2.1 多进程
4.2.2 工作方式和资源共享
4.3 网络栈
4.3.1 WebKit的网络设施
4.3.2 Chromium网络栈
4.3.3 磁盘本地缓存
4.3.4 Cookie机制
4.3.5 安全机制
4.3.6 高性能网络栈
4.3.7 实践:Chromium网络工具和信息
4.4 实践:高效的资源使用策略
4.4.1 DNS和TCP连接
4.4.2 资源的数量
4.4.3 资源的数据量

第5章 HTML解释器和DOM模型
5.1 DOM模型
5.1.1 DOM标准
5.1.2 DOM树
5.2 HTML解释器
5.2.1 解释过程
5.2.2 词法分析
5.2.3 XSSAuditor验证词语
5.2.4 词语到节点
5.2.5 节点到DOM树
5.2.6 网页基础设施
5.2.7 线程化的解释器
5.2.8 JavaScript的执行
5.2.9 实践:理解DOM树
5.3 DOM的事件机制
5.3.1 事件的工作过程
5.3.2 WebKit的事件处理机制
5.3.3 实践:事件的传递机制
5.4 影子(Shadow)DOM
5.4.1 什么是影子DOM
5.4.2 WebKit的支持
5.4.3 实践:使用影子DOM

第6章 CSS解释器和样式布局
6.1 CSS基本功能
6.1.1 简介
6.1.2 样式规则
6.1.3 选择器
6.1.4 框模型
6.1.5 包含块(Containing Block)模型
6.1.6 CSS样式属性
6.1.7 CSSOM(CSS Object Model)
6.1.8 实践:理解CSSOM和选择器
6.2 CSS解释器和规则匹配
6.2.1 样式的WebKit表示类
6.2.2 解释过程
6.2.3 样式规则匹配
6.2.4 实践:样式匹配
6.2.5 JavaScript设置样式
6.3 WebKit布局
6.3.1 基础
6.3.2 布局计算
6.3.3 布局测试

第7章 渲染基础
7.1 RenderObject树
7.1.1 RenderObject基础类
7.1.2 RenderObject树
7.2 网页层次和RenderLayer树
7.2.1 层次和RenderLayer对象
7.2.2 构建RenderLayer树
7.3 渲染方式
7.3.1 绘图上下文(GraphicsContext)
7.3.2 渲染方式
7.4 WebKit软件渲染技术
7.4.1 软件渲染过程
7.4.2 Chromium的多进程软件渲染技术
7.4.3 实践:软件渲染过程

第8章 硬件加速机制
8.1 硬件加速基础
8.1.1 概念
8.1.2 WebKit硬件加速设施
8.1.3 硬件渲染过程
8.1.4 3D图形上下文
8.2 Chromium的硬件加速机制
8.2.1 GraphicsLayer的支持
8.2.2 框架
8.2.3 命令缓冲区
8.2.4 Chromium合成器(Chromium Compositor)
8.2.5 实践:减少重绘
8.3 其他硬件加速模块
8.3.1 2D图形的硬件加速机制
8.3.2 WebGL
8.3.3 CSS 3D变形
8.3.4 其他
8.3.5 实践:Chromium的支持

第9章 JavaScript引擎
9.1 概述
9.1.1 JavaScript语言
9.1.2 JavaScript引擎
9.1.3 JavaScript引擎和渲染引擎
9.2 V8引擎
9.2.1 基础
9.2.2 工作原理
9.2.3 绑定和扩展
9.3 JavaScriptCore引擎
9.3.1 原理
9.3.2 架构和模块
9.3.4 内存管理
9.3.5 绑定
9.3.6 比较JavaScriptCore和V8
9.4 实践――高效的JavaScript代码
9.4.1 编程方式
9.4.2 例子
9.4.3 未来

第10章 插件和JavaScript扩展
10.1 NPAPI插件
10.1.1 NPAPI简介
10.1.2 WebKit和Chromium的实现
10.2 Chromium PPAPI插件
10.2.1 原理
10.2.2 结构和接口
10.2.3 工作过程
10.2.4 Native Client
10.3 JavaScript引擎的扩展机制
10.3.1 混合编程
10.3.2 JavaScript扩展机制
10.4 Chromium扩展机制
10.4.1 原理
10.4.2 基本设施
10.4.3 消息传递机制

第11章 多媒体
11.1 HTML5的多媒体支持
11.2 视频
11.2.1 HTML5视频
11.2.2 WebKit基础设施
11.2.3 Chromium视频机制
11.2.4 字幕
11.2.5 视频扩展
11.3 音频
11.3.1 音频元素
11.3.2 Web Audio
11.3.3 MIDI和Web MIDI
11.3.4 Web Speech
11.4 WebRTC
11.4.1 历史
11.4.2 原理和规范
11.4.3 实践――一个WebRTC例子
11.4.4 WebKit和Chromium的实现

第12章 安全机制
12.1 网页安全模型
12.1.1 安全模型基础
12.1.2 WebKit的实现
12.2 沙箱模型
12.2.1 原理
12.2.2 实现机制

第13章 移动WebKit
13.1 触控和手势事件
13.1.1 HTML5规范
13.1.2 工作原理
13.1.3 启示和实践
13.2 移动化用户界面
13.3 其他机制
13.3.1 新渲染机制
13.3.2 其他机制

第14章 调试机制
14.1 Web Inspector
14.1.1 基本原理
14.1.2 协议
14.1.3 WebKit内部机制
14.1.4 Chromium开发者工具
14.1.5 远程调试
14.1.6 Chromium Tracing机制
14.2 实践――基础和性能调试
14.2.1 基础调试
14.2.2 性能调试

第15章 Web前端的未来
15.1 趋势
15.2 嵌入式应用模式
15.2.1 嵌入式模式
15.2.2 CEF
15.2.3 Android WebView
15.3 Web应用和Web运行环境
15.3.1 Web应用
15.3.2 Web运行环境
15.4 Cordova项目
15.5 Crosswalk项目
15.6 Chromium OS和Chrome的Web应用
15.6.1 基本原理
15.6.2 其他Web操作系统
参考资料



前言/序言

  “随着HTML5的快速发展和网络时代的到来,Web的接入口——浏览器越来越重要,而作为浏览器的内核——渲染引擎也变成了热门话题。自笔者接触HTML5技术和浏览器以来,深深地被这一包含众多非凡技术的新领域所吸引,并由此产生了很多疑问,为此,我开始了漫长的学习和研究WebKit(及Blink)渲染引擎和Chromium浏览器的征程。虽然WebKit项目本身非常复杂,但是其简单的代码结构、清晰的逻辑给我留下了深刻的印象,因为在这些复杂技术的背后,竟然也可以使用良好的设计去解决技术的复杂性。而基于WebKit的Chromium项目更是将众多大胆的新技术引入到了浏览器领域,让人耳目一新。
  WebKit是一个非常成功的项目,它不仅仅是个渲染引擎,而且成功地推动了网络的发展。基于WebKit渲染引擎的浏览器项目Chromium,更是成为率先支持HTML5功能和创新新功能的标杆。要完整理解一个Web渲染引擎和浏览器并不容易,因为它们的确包含了众多复杂的功能。据笔者的统计,WebKit项目和Chromium项目(不包括该项目依赖的众多第三方项目)的代码量都在500万行以上,而这些代码很多并没有完善的文档,所以理解这些技术背后的工作原理还是非常困难的。
  随着学习的深入,笔者发现目前对于整个渲染引擎的分析和文档化还处于一个缺失的状态。同时,因为渲染引擎和浏览器包含了太多的技术,让人有点应接不暇的感觉。虽然WebKit项目代码结构简单,但是由于文档的缺失,爱好者对于每一项新技术,也经常有不知从何下手的感觉。为此,笔者结合自身的理解,通过这本书系统性地分析这一领域的众多技术,希望能帮助读者快速度过迷茫的时期。
  本书的读者
  本书主要是为Web爱好者准备的一本书,主要针对Web前端开发者、浏览器开发者、Web平台开发者和其他一切对HTML5技术、WebKit渲染引擎和Chromium浏览器的工作原理感兴趣的读者。对于Web前端开发者而言,笔者一直认为,如果使用HTML5技术来编写网页或者Web应用,了解其背后的工作原理是写出高效代码的有效捷径。就像开发者想编写高效C++代码,需要理解C++编译器背后的原理一样,因为只有这样,开发者才能够编写出高性能的代码。对于浏览器开发者来说,本书着重介绍现在非常热门的WebKit(及Blink)渲染引擎和非常先进的Chromium浏览器,通过解释其内部的工作机制和原理,让开发者可以很快理解这一切的前因后果。对于其他的广大爱好者来说,HTML5技术才刚刚开始,未来的发展还将继续,了解这一技术有助于扩展视野,而且理解浏览器对各种技术的应用和设计,对于大家理解很多其他领域的技术也有很强的启发作用。
  因为本书的介绍主要是基于对WebKit和Chromium内部原理的解释来进行,而这些项目也都是基于C/C++代码来编写,所以读者最好对该语言有一些了解。不过,如果不了解它也没有太大的关系,只要对面向对象编程的思想有所了解,阅读本书也没有太大的障碍。同时,本书不是一本介绍编写HTML/JavaScript代码的书,所以,不会对HTML的编程做过多详细的解释,而是以一种简单的方式描述一些基础性常识。
  本书的组织
  本书基本的写作方式是力求在介绍HTML5技术的基础上,通过对W3C组织制定的规范的解释,进一步解读WebKit渲染引擎和Chromium浏览器是如何设计出高效的架构来支持这些HTML5技术规范的,其中着重剖析内部的框架和工作原理。在很多情况下,笔者也试图通过一些开发和工作实践来帮助理解这些框架和实现背后的机制和原理。
  如果想了解整个渲染引擎的原理,光靠渲染引擎本身不足以说明所有机制,所以本书自始至终都是结合WebKit项目和基于WebKit的Chromium浏览器项目来描述其工作原理的,因为WebKit项目本身不是一个浏览器,而Chromium浏览器的设计和架构可以帮助读者完整理解网页的渲染过程和现代HTML5新技术是如何获得支持的,这一过程的确非常精彩。
  为了理解HTML5新技术和浏览器的工作原理,本书着重带来以下方面的详细分析,包括HTML5技术分析、渲染引擎和浏览器介绍、WebKit渲染引擎框架、Chromium框架和进程架构、网页和网页结构、渲染过程、网络栈、HTML语言、DOM、CSS样式、布局计算、渲染基础、高级硬件加速机制、JavaScript引擎、插件和扩展、多媒体、移动领域、安全机制、调试机制、发展趋势和Web平台等众多热门技术和前沿性话题。笔者希望将HTML5中绝大多数的重要技术都展现出来,让读者可以对这个领域的众多技术有个总体把握并对主要技术的前因后果有较为深入的理解。
  本书引用的参考资料都是笔者多年来研究的对象,对于笔者理解HTML5技术、前端开发技术、渲染引擎和浏览器技术起了非常重要的作用,一些论题可能在本书中介绍得不够完善,读者可以参考这些资料,做进一步的学习和研究。
  本书是一个讲解内部原理的书,涉及众多的技术,特别是深入技术内部工作机制的地方,由于这些内容非常复杂,而且是根据笔者个人的理解加以分析,所以很多时候可能存在理解上的偏差或者错误。如果有什么不妥之处,还望广大读者谅解并给予指导。
  致谢
  感谢电子工业出版社的张春雨、王新宇、尚冰雪等编辑,自始至终给予笔者的强有力的帮助和支持。特别感谢我在英特尔亚太研发有限公司的同事,包括但是不限于闵洪波、王兴楠、余枝强、刘守群、朱俊敏、王视鎏、胡宁馨、高纯、尹立、顾扬、冯海涛、霍海涛等,他们同我一起探讨了很多关于HTML5、WebKit和Chromium方面的话题,让我受益匪浅。
  最后要感谢我的太太、女儿和父母,在写作的大半年时间里给予了笔者很多支持。因为本书是在繁忙的工作之余利用琐碎的业余时间来完成的,所以,如果没有家人提供的良好环境,我是没有办法完成这本书的。特别是我的小女儿经常过来“光顾”和“巡视”我的写作,并给予一些特别的“惊喜”和“礼物”,让我在写作之余多了一份乐趣。
  朱永盛
  2014年2月1日