Android 浏览器内核浅谈[通俗易懂]

Android 浏览器内核浅谈[通俗易懂]目前,移动设备浏览器上常用的内核有Webkit,Blink,Trident,Gecko等,其中iPhone和iPad等苹果iOS平台主要是WebKit,Android 4.4之前的android系统浏览器内核是WebKit,Android4.4系统浏览器切换到了Chromium(内核是Webkit的分支Blink),WindowsPhone8系统浏览器内核是Trident。 1.W

大家好,又见面了,我是你们的朋友全栈君。

 目前,移动设备浏览器上常用的内核有Webkit,Blink,Trident,Gecko等,其中iPhone和iPad等苹果iOS平台主要是WebKit,Android 4.4之前的android系统浏览器内核是WebKit,Android4.4系统浏览器切换到了Chromium(内核是Webkit的分支Blink),Windows Phone 8系统浏览器内核是Trident。

 1.WebKit项目 

(1)项目简介:WebKit项目是苹果公司在2005年发起的一个新的开源项目,是Safari浏览器的内核,是目前的主流浏览器渲染引擎。WebKit项目具有结构清晰、易于维护等优点,WebKit简单灵活和便于引入新移植的特性,使其迅速称为主流的渲染引擎。

 (2)WebKit架构   

WebCore部分:包含了目前被各个浏览器所使用的WebKit共享部分,是加载和渲染网页的基础部分,具体包括HTML解释器、CSS解释器等。  

JavaScriptCore引擎:是WebKit中的默认JavaScript引擎。在Google的Chromium项目中,它被替换为V8引擎。

WebKit Ports部分:是WebKit红的非共享部分,属于WebKit被移植的模块。由于不同浏览器使得平台差异、依赖的第三方库和需求不同,从而导致多种WebKit版本。

WebKit嵌入式接口:指在WebCore和javascript引擎之上的一层绑定和嵌入式编程接口,可以被各种浏览器调用。 Android 浏览器内核浅谈[通俗易懂]

 2.Chromuim项目 

(1)项目简介

  Chromuim项目是Google公司以苹果开源项目WebKit作为内核,创建的一个新的项目,该项目的目标是创建一个快速的、支持众多操作系统的浏览器。在Chromium项目基础上,Google发布了自己的浏览器产品Chrome。与使用WebKit作为内核的Safari浏览器不同,Chromium本身就是一个浏览器,而不是Chrome浏览器的内核,再未从WebKit项目分离之前,Chrome浏览器使用的是WebKit内核。2013年4月,Google宣布从Webkit复制出来并独立运作Blink项目,该项目也就是目前Android4.4及以上系统浏览器采用的内核。

 (2)Blink内核     

Blink项目从WebKit分离出来后,其本身也是源于WebKit项目,只是Google将除Chromium浏览器需要之外的其他移植的代码都删除了,并且在Blink项目中加入了很多新的技术,部分技术如下: 实现跨进程的iframe。iframe允许网页中嵌入其他页面,为了解决潜在的安全问题,为iframe创建一个单独的沙箱进程。 重新整理和修改WebKit关于网络方面的架构和接口。

将DOM树引入JavaScript引擎中。


针对各种技术的性能优化,包括图形、JavaScript引擎、内存使用、编译的二进制文件大小等。

(3)基于Blink引擎的Chromium浏览器结构 

  下图描述了Chromium的架构和主要模块,可知Blink只是其中的一个模块,和它并列的还有众多的Chromium模块,包括GPU/CommandBuffer(硬件加速架构)、V8 JavaScript引擎、沙箱模型、CC(Chromium合成器)、IPC、UI等。”Content模块”和”Content API(接口)”

  “Content模块”和”Content API”将下面的渲染机制、安全机制和插件机制等隐藏起来,提供一个接口层,是Chromium对渲染网页功能的抽象,被内部的Chromium浏览器、Content Shell调用,是用来渲染网页内容的模块。
“Chromium浏览和”Content Shell”

 “Chromium浏览和”Content Shell”是构建在Content API之上的两个”浏览器”,Chromium具有浏览器的完成功能。

“Content Shell”是使用Content API包装的一层简单的”壳”,用户可以使用Content模块来渲染和显示网页内容。Android WebView模块

  Android WebView模块是希望利用Chromiuim的实现来替换原来的Android系统默认的WebView. Android 浏览器内核浅谈[通俗易懂]

 3.浏览器内核 

(1)内核介绍     

在浏览器中,有一个最重要的模块,它主要的作用是将页面转变成可视化的图像结果,这就是浏览器内核,也被称为渲染引擎。所谓渲染,就是根据描述或者定义构建数学模型,通过模型生成图像的过程。浏览器的渲染引擎就是能够将HTML/CSS/JavaScript文本及其相应的资源文件转换成图像结果的模块。 Android 浏览器内核浅谈[通俗易懂]

 (2)内核特征    

一个渲染引擎主要包括HTML解释器、CSS解释器、布局和JavaScript引擎、绘图等。 HTML解释器:解释HTML文本的解释器,主要作用是将HTML文本解释成DOM(文档对象模型)树,DOM是一种文档的表示方法.

CSS解释器:级联样式表的解释器,主要作用是为DOM中各个元素对象计算出样式信息,从而为计算最后网页的布局提供基础设施。


布局:在DOM创建之后,WebKit需要将其中的元素对象同样式信息结合起来,计算他们的大小位置等布局信息,形成一个能够表示这所有信息的内部表示模型。


JavaScript引擎:使用JavaScript代码可以修改网页的内容,也能修改CSS的信息,JS引擎能够解释JS代码并通过DOM接口和CSSOM接口来修改网页内容和样式信息,从而改变渲染的结果。


绘图:使用图形库将布局计算后的各个网页的节点绘制成图形结果。


 
Android 浏览器内核浅谈[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146426.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 原码,补码,二进制减法计算_二进制的原码和补码

    原码,补码,二进制减法计算_二进制的原码和补码这篇博客从一道题说起,已知x = (1<<31)-3,求x&-x?这里面考察了二进制的减法,减法也就牵涉了原码补码的一些概念。这里进行下梳理。 一。原码,补码概念1.原码就是早期用来表示数字的一种方式。一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码例如:假设机器是32位系统,in…

    2022年9月25日
  • 自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)「建议收藏」

    自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)「建议收藏」很多高端机械键盘,支持宏定义,例如我们可以设置”D”键为”dota”,这样当我们按一下宏开启键,再按一下”D”键,就等价于分别按了”d””o””t””a”四个键。这时就可以把一些敲代码时常用的模板定义成键盘宏,到时候一键补全代码,既高效又装X。另外,玩游戏时想按出“下前下前拳”这样的组合技能也容易多了。那么问题来了。。山里来的买不起机械键盘的穷B同时又是程序员应该怎么办。。其实这…

    2022年10月28日
  • WPF: RoutedEvent

    WPF: RoutedEvent

    2021年8月4日
  • mybatiscodehelperpro 2.9.6激活码【2021最新】「建议收藏」

    (mybatiscodehelperpro 2.9.6激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1PA3AFINM4-eyJsaWNlb…

    2022年3月31日
  • pycharm自己设置补全内容

    pycharm自己设置补全内容pycharm自己设置补全内容学习网络爬虫时,发现我们写一个代码总是要到浏览器上复制User-Agent,或者到自己之前保存好的文件里复制,当然直接能把浏览器的User-agent一个字母不拉的写出来的牛人不在此列。所以我在pycharm上自定义了一个补全模板,可以帮我快速填写User-agent,如下图:1.首先打开pycharm的–》设置,然后选择–》编辑器>活动模板2.然后点右边的‘+’添加自定义代码内容3.然后编辑这个模板说明:缩写:User-Agent这里填写的是

    2022年8月25日
  • 批处理 注释_批处理文件注释语句

    批处理 注释_批处理文件注释语句rem为注释命令,用来给程序加上注释,该命令后的内容不被执行,但是能够回显。::也可以起到和rem一样的注释效果,但是有两点需要注意:1.任何以:开头的字符行,在批处理中都被视作标号,而直接忽略其后所有的内容。一个有效的标号在冒号后紧跟一个以字母或数字开头的字符串,它能够被goto命令所识别。如果冒号后面跟的是非数字字母的特殊符号,则被视为无效标号,goto命令无法识别这类标号,从而起到注…

    2022年10月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号