首页 > 代码库 > 移动浏览器的内核WebKit介绍
移动浏览器的内核WebKit介绍
Hybrid App是执行在移动操作系统的WebView上面的。我们能够在原生页面中嵌入HTML5网页,WebView就是这个网页的容器。WebView实际上是一种嵌入式的编程接口。WebView调用底层的浏览器内核如WebKit或Blink等解析网页,因此浏览器的内核决定了Hybrid App HTML5页面的展示效果和用户体验,眼下市场上主流移动设备WebView的内核基本上是Webkit,包含苹果iOS系统和Android 4.4曾经的版本号。
浏览器内核通常也被称为渲染引擎。所谓的渲染,就是依据描写叙述或者定义构建数学模型,通过模型生成图像的过程。 浏览器的渲染引擎就是可以将 HTML/CSS/JavaScript 文本及其对应的资源文件转换成图像结果的模块。
眼下移动设备浏览器上经常使用的内核有Webkit,Blink,Trident,Gecko等,当中iPhone和iPad等苹果iOS平台主要是WebKit。Android 4.4之前的Android系统浏览器内核是WebKit,Android4.4系统浏览器切换到了Chromium,内核是Webkit的分支Blink。Windows Phone 8系统浏览器内核是Trident。
移动浏览器内核WebKit介绍
WebKit是眼下主流的移动浏览器渲染引擎。主要设计是用来让网页浏览器绘制网页。WebKit眼下作为AppleSafari及Google Chrome(直到版本号27)等浏览器的主要引擎。依据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%。它已经成为拥有最大市场份额的排版引擎,超越了InternetExplorer所使用的Trident及Firefox所使用的Gecko引擎。Webkit也作为一些实验性质浏览器的基础引擎。包括Amazon Kindle 电子书阅读器,同一时候也使用在下列移动操作系统的默认浏览器,包括苹果电脑iOS、Android, BlackBerry Tablet OS、Bada、Tizen及webOS。WebKit的C++应用程序接口提供了一系列的Class让我们能够在视窗上显示网页内容,而且实现了一些浏览器的特色,包括使用者链接点击、管理前后页面列表以及使用者以前訪问过的历史页面等等。
WebKit的HTML及JavaScript源码源自于KDE的KHTML及KJS程序库,如今已经由KDE、苹果电脑、诺基亚、Google、Bitstream、RIM、Igalia等进行独立专案开发。OS X、Windows、GNU/Linux以及其它类Unix系统操作系统,皆支援这个专案。
WebKit的WebCore及JavaScriptCore元件使用GNU宽通用公共许可证开源,而其它的WebKit元件则採用BSD许可证开源。
WebKit2公布于2010年4月8日。Webkit2的目标是将元件抽象化。并提供更干净的网页渲染,它会利用从周围的界面或是应用程式的壳,建立一个环境使网页的内容(JavaScript、HTML、排版等等)将会在另外一个程序(Process)执行,比起WebKit。这个抽象化的做法打算令WebKit2可反复使用一个更简单的程序。由于WebKit2对照起WebKit有 一个不相容的API ,所以导致他的名字被改变为WebKit2。
截至2013年3月7日,Webkit商标已被苹果公司在美国专利及商标局注冊为其拥有商标。
Chromium和Blink内核介绍
Blink是一个由Google和OperaSoftware开发的浏览器渲染引擎,Google将这个渲染引擎作为Chromium计划的一部分。而且在2013年4月的时候发布了这一消息。这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支。而且在Chrome(28及往后版本号)、Opera(15及往后版本号)和Yandex浏览器中使用。
因为搭载iOS和Android系统智能手机称霸全球手机市场。苹果和Google也因此成为WebKit最大的推动者。并促使其成为眼下最大的浏览器引擎。
早期的WebKit架构比較简单。在API层不支持多进程,因此无法发挥多核CPU的硬件性能。为此,苹果进行了扩展。提出了新一代架构WebKit2,同一时候,Google的跨平台浏览器Chromium也基于原来的WebKit提出了自己的Chromium沙箱架构,两者不兼容(參见:http://blog.csdn.net/shunzi__1984/article/details/6196483)。
可是因为苹果在这个开源系统中有很多其它的话语权,因此Google仅仅好被动接受。使用移植的方式来实现和主线WebKit2的对接,这添加了Chromium的复杂性,也影响了Chromium的架构移植工作。
显然。浏览器对Google的重要性远胜于苹果,在自己的核心领域绝不能受制于人。因此Google决定利用WebKit的成果,开发自己的Blink引擎。
2013年4月,Google宣布将为Chrome浏览器开发新的自主渲染引擎Blink,与WebKit分道扬镳,在未来10周内用Blink代替旗下全部平台的现有浏览器渲染引擎。随后Opera宣称将追随Google。放弃WebKit支持Blink浏览器引擎。
Google的策略非常easy。先做减法,再做加法。
Google已经公开表示,在最初阶段Blink不会进行太大调整,但将非常快从WebKit代码库中删除7个软件包和7000个文件。2013年5月份的Google I/O大会上的信息显示,他们的团队已经从 Webkit 中拉取了 880 万行臃肿代码,当中的 450万行被当即废止。眼下Google同一时候保留着Blink和WebKit两个开发团队,这两个团队都在着手剔除那些认为不必要的功能。
这样的策略确保了WebKit开发人员有一个平稳的过渡期,慢慢适应新的API变化。
在最新的Android4.4 Kitkat版本号中,原本基于AndroidWebKit的WebView实现被换成基于Chromium的WebView实现。在前面的章节中。笔者也介绍过基于Chromium的WebView实现即将成为Android系统上的缺省实现方式,笔者也一直期待这一重大转变。如今它真的发生了。而之前基于WebView接口的应用程序甚至能够直接工作在该实现上而不须要不论什么特别的改变。
举个样例来说,Android系统上的缺省浏览器(AOSP中的浏览器)。能够不须要不论什么改变直接工作在新的实现上。
WebView仅仅是一个接口类。通过一些内部设计的改变,其详细的实现能够在之前的Android WebKit和Chromium之间进行切换。
新的Chromium实现专注于提供一致性的接口(为了兼容曾经的应用)。而内部的渲染引擎改为使用基于Blink/Content内核的引擎,这实现无论是从功能上还是性能来讲,都带来巨大的提升。
移动浏览器的内核WebKit介绍