Android浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML。

Apple公司推出的Safari浏览器,使用的内核是装备了KHTML的WebKit引擎。

WebKit内核在手机上应用十分广泛。

 

WebKit 是一个开源浏览器网页排版引擎,类似的引擎有:

Gecko作为Mozilla, Firefox的内核,

Trident作为IE的内核(也称MSHTML)。

WebKit所包含的WebCore排版引擎和JSCore排版引擎来自于KDE的KHTML和KJS。

Apple公司选择WebKit作为内核是因为它拥有清晰的源码结构、极快的渲染速度。

 

WebKit由3个模块组成:JavaScriptCore, WebCore, WebKit。

1. JavaScriptCore: JavaScript解释器。

2. WebCore: 项目的核心,用来实现Render引擎。解析Web页面,生成一个DOM树和一个Render树。

3. WebKit: 整个项目的名称。

 

WebCore的主要功能有:

1. Page, 与外框相关的内容,包括Frame, Page, History, Focus, Window.

2. Loader, 加载资源及Cache。

3. HTML, DOM HTML 内容及解析。

4. XML, XML内容及解析。

5. DOM, DOM CORE 内容。

6. Render, 排版功能。

7. CSS, DOM CSS 内容。

8. Binding, DOM和JavaScriptCore绑定的功能。

9. Editing, 所有与编辑相关的内容。

 

JavaScriptCore的主要功能有:

1. API, 基本JavaScript功能。

2. Binding, 与其他功能的绑定,如DOM, C, JNI。

3. DerviedSource, 自动产生的代码。

4. ForwordHeads, 头文件,无实际意义。

5. PCRE, Perl-Compatible Regular Expressions.

6. KJS, JavaScript内核。

7. WTF, KDE的C++模型库。

 

WebKit的解析过程

1. CURL得到Stream。

2. 解析拆分字符串。

3. 通过DOM Buider按合法的HTML规范生成DOM树。

4. 如果有JavaScript, JSEngine就通过ECMA-262标准完善DOM树。

5. 把DOM传给LayoutEngine进行布局,如果有CSS样式,就通过CSSParser解析。

6. 最后Rendering渲染出来。

 

Google对WebKet进行了封装,为开发者提供了丰富的API,其中最重要的是android.webkit.WebKit控件。

Android网络开发之WebKet引擎基础的更多相关文章

  1. Android 网络开发之WIFI

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  2. Android网络开发之用tcpdump抓包

    Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...

  3. Android网络开发之OkHttp--基本用法POST

    1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...

  4. Android网络开发之OkHttp--基本用法GET

    1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...

  5. Android网络开发之Volley--Volley自定义Request

    1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...

  6. Android网络开发之Volley--Volley基本用法ImageRequest(三)

    1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...

  7. Android网络开发之Volley--Volley基本用法JsonObjectReques(二)

    1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...

  8. Android网络开发之Volley--Volley基本用法StringRequest(一)

    1.StringRequest用法 主要分为3步: (1).实例化一个RequestQueue对象 (2).设置StringRequest对象参数,并将StringRequest对象加入Request ...

  9. Android网络开发之WIFI

    WIFI全称Wireless Fidelity, 又称802.11b标准.WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance( ...

随机推荐

  1. 【docker】docker基础原理,核心技术简介

    关于docker的核心技术,就是以下的三大技术: 1.namespaces [命名空间] 使用linux的命名空间实现的进程间隔离.Docker 容器内部的任意进程都对宿主机器的进程一无所知. 除了进 ...

  2. Selenium2+python自动化57-捕获异常(NoSuchElementException)

    前言 在定位元素的时候,经常会遇到各种异常,为什么会发生这些异常,遇到异常又该如何处理呢? 本篇通过学习selenium的exceptions模块,了解异常发生的原因. selenium+python ...

  3. eclipse 开发web程序,启动tomcat插件服务器的时候。部署目录在那里?

    不在tomcat-home/webapps/下面, 你做一个文件上传功能看看就知道了,临时目录一般是你的工作区间workspace\.metadata\.plugins\org.eclipse.wst ...

  4. L'Hospital法则及其应用

      from: http://math.fudan.edu.cn/gdsx/XXYD.HTM

  5. 我所遭遇过的中间件--VTK

    我所遭遇过的中间件--VTK Vtk是我接触的第一款软件开发包,它引导我对图形学的入门.我是先学的VTK,后学的OpenGL和D3D.VTK是专为图形学开发,特点是接口清晰,好上手,又含有大量的图像处 ...

  6. 稀疏数据压缩查询方法:Rank & Select 操作

    1.稀疏数据的例子 对于网络图对应的节点关联矩阵.数据生成的哈希表等,这些存储起来是稀疏的,这样我们就会想到需要压缩空间.但是在压缩存储空间的同时,还要支持高效的查询操作. Rank & Se ...

  7. DP 换硬币问题

    设有n种不同面值的硬币,现要用这些面值的硬币来找开待凑钱数m,可以使用的各种面值的硬币个数不限.    找出最少需要的硬币个数,并输出其币值. package DP; import java.util ...

  8. oracle和mysql功能相同的函数

    wm_concat ---->mysql 的group_concat decode (两条件的)----->mysql 的 if decode (3个及以上条件的)---------> ...

  9. 容器学习(一):动手模拟spring的IoC

    介绍 学习经典框架的实现原理以及设计模式在事实上际中的运用,是很有必要的,能够让我们更好进行面向对象. 本篇文章就来模拟Spring的IOC功能.明确原理后,能够更好的使用它,进而为进行面向对象提供一 ...

  10. Endv 博客简介

    Endv 博客简介 此博客收集了 C++.Android.C#.java.php 等优秀的开源项目, 同时也对 Windows.Linux.CentOS 等系列操作系统的开发环境.办公环境的配置写了一 ...