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. 抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)

    在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实 ...

  2. 22.线程通信Condition

    Condition     通过此对象可以与lock实现组合使用,为每个对象提供多个等待,实现多个阻塞队列. package dmeo9; import java.util.concurrent.lo ...

  3. php扩展开发笔记(2)多个源代码文件的配置和编译

    我们在开发过程中,为了代码得可读性和易维护性,肯定是须要多个代码文件的,而不不过通过 ext_skel 生成得骨架文件. 这篇文章主要介绍下.多个代码文件的时候.我们须要注意什么,以及怎么做. 我的代 ...

  4. 用过Retina视网膜屏幕的笔记本电脑的后果

    用过Retina视网膜屏幕的笔记本电脑的后果是过程中感觉很不错,但是结果是普通屏幕再也看不上眼了.发现了原来看的好好的屏幕多出了许多的像素点,没办法,火眼金睛了.

  5. iOS开发-图片查看(ScrollView+UIPageControl)

    上周没事写了一个简单的图片查看,上次的查看只用到了一个UIImageView,不断的替换背景图片,实现图片之间的切换.通过ScrollView可以很简单的是实现图片之间的查看,设置setPagingE ...

  6. Bootstrap学习js插件篇之提示框

    案例 受到Jason Frame开发的jQuery.tipsy插件的启发,我们才把这个工具提示插件做的更好,而且此插件不依赖图片,只是使用CSS3来实现动画效果,并使用data属性存储标题. 将鼠标悬 ...

  7. 【转】php里面也可以使用协程

    原文链接:http://blog.51cto.com/chinalx1/2089327 http://nikic.github.io/2012/12/22/Cooperative-multitaski ...

  8. Cognos报表展示图片小技巧

    场景:在销售行业,比如手机,服装行业,如果仅仅的显示数字.文字那就显得不是很生动了,例如可以显示一下图片,那种样子的产品受大家喜欢. 样例1:在报表头都喜欢加上一些公司的logo,让报表看上去专业点. ...

  9. Mali GPU OpenGL ES 应用性能优化--測试+定位+优化流程

    1. 使用DS-5 Streamline定位瓶颈 DS-5 Streamline要求GPU驱动启用性能測试,在Mali GPU驱动中激活性能測试对性能影响微不足道. 1.1 DS-5 Streamli ...

  10. [Big Data] Week4B (Basic)

    Question 1 Note: In this question, all columns will be written in their transposed form, as rows, to ...