移动浏览器的内核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的策略很简单,先做减法,再做加法。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内核的引擎,这实现不管是从功能上还是性能来讲,都带来巨大的提升。

时间: 2024-09-29 18:04:02

移动浏览器的内核WebKit介绍的相关文章

Android浏览器(一):Webkit项目与Chromuim项目

转载请注明原文地址:http://blog.csdn.net/u012637501/article/details/46878253 目前,移动设备浏览器上常用的内核有Webkit,Blink,Trident,Gecko等,其中iPhone和iPad等苹果iOS平台主要是WebKit,Android 4.4之前的Android系统浏览器内核是WebKit,Android4.4系统浏览器切换到了Chromium(内核是Webkit的分支Blink),Windows Phone 8系统浏览器内核是T

主流浏览器的内核以及Hack写法

要搞清楚浏览器内核是什么,首先应该先搞清楚浏览器的构成.简单来说浏览器可以分为两部分,shell+内核.其中shell的种类相对比较多,内核则比较少.Shell是指浏览器的外壳:例如菜单,工具栏等.主要是提供给用户界面操作,参数设置等等.它是调用内核来实现各种功能的.内核才是浏览器的核心.内核是基于标记语言显示内容的程序或模块.也有一些浏览器并不区分外壳和内核.从Mozilla将Gecko独立出来后,才有了外壳和内核的明确划分.目前主流的浏览器有IE6.IE8.Mozilla. FireFox.

QQ浏览器X5内核问题汇总 转

常常被人问及微信中使用的X5内核的问题,其实我也不是很清楚,只知道它是基于android 4.2的webkit,版本号是webkit 534.今天正好从X5团队拿到了一份问题汇总,梳理下发出来,给各位开发者以参考——不排除明天会删除这篇文章的可能. 1.Android WebView常见问题及解决方案汇总: http://blog.csdn.net/t12x3456/article/details/13769731 2.请问各位碰到过X5浏览器内,局部滑动使用iscroll卡顿的问题么? 回答:

QQ浏览器X5内核问题汇总

原文:http://itindex.net/detail/53391-qq-浏览器-x5 常常被人问及微信中使用的X5内核的问题,其实我也不是很清楚,只知道它是基于android 4.2的webkit,版本号是webkit 534.今天正好从X5团队拿到了一份问题汇总,梳理下发出来,给各位开发者以参考——不排除明天会删除这篇文章的可能. 1.Android WebView常见问题及解决方案汇总: http://blog.csdn.net/t12x3456/article/details/1376

浏览器的内核的分类,常用浏览器的内核

1.Trident(IE内核) IE6.IE7.IE8(Trident 4.0).IE9(Trident 5.0).IE10(Trident 6.0): 360安全浏览器.360极速浏览器(采用Chrome+IE内核).百度浏览器(早期版本).世界之窗浏览器 2.Gecko(Firefox内核)Netscape6开始采用的内核,后来的Mozilla FireFox (火狐浏览器) 也采用了该内核,K-Meleon浏览器也是使用这种内核: 3.Webkit(Safari内核,Chrome内核原型,

JavaScript,一个超级简单的方法判断浏览器的内核前缀

先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是废话了!) 在前端开发过程中,有时我们需要判断浏览器的内核前缀,对不同的浏览器做出不同的处理,因此我们可以这么做. alert(element.style.webkitTransition); 这个是获取以webkit为前缀的transition值.但如果不是webkit为前缀的浏览器,则会返回un

浏览器双内核

国内浏览器很多都是双内核(webkit和Trident),webkit内核高速浏览,IE内核兼容网页和旧版网站.而添加meta标签的网站可以控制浏览器选择何种内核渲染.<meta name="renderer" content="webkit|ie-comp|ie-stand">  国内双核浏览器默认内核模式如下:1. 搜狗高速浏览器.QQ浏览器:IE内核(兼容模式)2. 360极速浏览器.遨游浏览器:Webkit内核(极速模式)content的取值为w

你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

1.浏览器内核 负责对网页语法的解释并渲染网页,所谓的浏览器内核就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息. 2.浏览器及内核 Trident:IE Gecko:Firefox(代码完全公开,可开发程度高,全世界的程序员都可以为其编写代码) Webkit:Safari(苹果系列的专用浏览器) Blink:Chrome.Opera(这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支) 3.不同浏览器兼容问题 之后补充

【读书笔记】《Linux内核设计与实现》内核同步介绍&内核同步方法

简要做个笔记,以备忘. 需同步的原因是,我们并发访问了共享资源.我们将访问或操作共享资源的代码段称"临界区",如果两个执行线程处于同一临界区中同时执行,称"竞争条件".这里术语执行线程指任何正在执行的代码实例,如一个在内核执行的进程.一个中断处理程序或一个内核线程. 举个简单例子,i++操作.该操作可以转换为下面的机器指令序列: 1.得到当前变量i的值,并保存到一个寄存器. 2.将寄存器的值加1. 3.将i的新值写回到内存中. 当两个线程同时进入这个临界区,若i初值