一. WebKit简介
Webkit 是一个开放源代码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源代码 ) 。苹果公司在 Webkit 的基础上做了大量优化改进工作 ,此时的 Apple Webkit 已经和 Webkit 有了不少差别,最后开发出了著名的 Safari ,可以说 Safari 是一个相当成功的产品,但是 Safari 却不是开放源代码的。
基于 WebKit 的浏览器产品有:苹果的 Safari 和 iPhone , Google 的 Chrome 和 Android , Nokia 的 S60 ,傲游 3(Maxthon3) ;
WebKit目前支持 HTML4/5,CSS1/2,DOM1/2,HTTP/FILE, GIF/JPEG/PNG, XML,SVG,RSS2.0等;
同类的浏览器引擎有: Trident ( IE 内核), Gechko ( Netscape, Mozilla 和 Firefox 内核), Presto ( Opera 内核,不免费), Tasman ( IE for MAC 内核),等等,而 WebKit 因为其功能强大、速度快而且免费备受欢迎。
二. 用到的库:
除了平台相关的库,WebKit需要用到的一些主要的后台库有: ICU : International Components for Unicode , 一个成熟,广泛使用的一套为 C / C + + 和 Java 库提供 Unicode 的 全球化支持软件; XSLT : eXtensible Stylesheet Language Transformation, W3C 定义的用于 XML 文档转换的规范; Curl : 一个利用 URL 语法的命令行数据传输工具,基于 libcurl 。 Sqlite : SQLite 是实现了 SQL92 标准的 SQL 数据库引擎,它能在一个库里组合数据库引擎和接口, 将所有数据存储于单个文件; Gperf :一个很完美的哈希函数生成器; Flex : Fast Lex, 快速词法分析生成器; Bison :语法分析生成器,可以将一段带注释的上下文无关语法转化成 LALR 或 GLR 语法; Enchant :一个拼写检查库,提供单词的拼写检查、纠错等功能; 三. 代码目录结构 WebKitTools
一些测试 WebKit 实现功能的程序; WebKitLibraries
WebKit 用到的库以及系统调用接口定义; WebKitExamplePlugins
一些来自 Netscape 的插件,比如输入法、动画和 Cocoa 环境等; WebKitSite: 保存了 www.webkit.org 网站的 WebKit
此目录位于 WebKit 的最上层,定义了与应用相关的一些接口,因此它是平台相关的,每个子目录都是对应平台的完整实现: cf : Core Foundation, MAC OS X 上的系统级 C 语言 API 接口; win : Windows ; mac : MAC OS X ; qt : Q Toolkit ,其公司已被 Nokia 收购; gtk : Gimp Toolkit ; scripts :一些脚本,目前只有一个关于 WebKit 版本的脚本程序; chromium : Google Chrome 开发平台; wx : wxWindows ,一种可移植的 C++ 和 Python GUI 工具箱, by Julian Smart ; haiku :一种开源 OS ,从 BeOS 而来, 2001 开始, 2009 发布首版; efl: Enlightenment Foundation Libraries, Enlightenment 平台;
WebCore
WebKit 的核心部分,定义了浏览相关的数据 IO 、页面加载、脚本分析、 UI 组织、事件处理、网络分析、平台相关的具体实现等内容。 xml :提供 xml 相关的内容;
html :提供 html 相关的内容;其下的 Canvas 目录定义了 3D 画布以及 WebGL 库相关的内容;
wml: Wireless Markup Language ;
css :提供 css 相关的内容;
dom :提供 dom 相关的内容;
editing :编辑相关的功能;
page :浏览相关内容,并非是我们看到的一个页面,在一次浏览会话中,它只有一个实例;
rendering :页面渲染相关的内容,在对页面脚本进行 DOM 树分析之后,需要对这些元素进行渲染和显示;
notification :内部模块间的事件通信;
history :页面浏览历史记录相关的内容;
svg :矢量图形功能,有选项, --svg ;
mathml : W3C 为网页中的数学表达式制定的规范;有编译选项, --mathml ;
loader : 加载资源及 Cache ;
workers :" Web Workers为WEB前端网页上的脚本提供了一种能在后台进程中运行的方法。一旦它被创建,Web Workers就可以通过postMessage()向任务池发送任务请求,执行完之后再通过postMessage()返回消息给创建者指定的事件处理 程序(通过onmessage进行捕获)。
Web Workers进程能够在不影响用户界面的情况下处理任务,并且,它还可以使用XMLHttpRequest来处理I/O,无论responseXML和 channel属性是否为null。"
storage : Web Storage 相关的内容,保存页面的数据,可以看成是 Cookie 的升级;
websockets :与网络连接相关的内容;
bridge: 主要包含 NPPlugin(Netscape Plugin) 方面的接口访问等内容;
binding : Dom 与 JavaScriptCore 绑定的功能;
accessibility :提供控件的可用性相关的内容, accessibility 常用来形容对一些特殊人群的功能支持,比如残障者、老人等;
icu :里面放了专门为 Mac OS X 10.4 编译的 icu 相关头文件;
platform :提供了平台相关的具体实现,如事件响应、本地化、网络连接等;
plugins :插件相关内容;
ForwardingHeaders :头文件;
inspector : Inspector 是 WebKit 提供的查看网页源代码, DOM 树,以及调试脚本的工具,本目录包含了实现此功能的内容;
Configurations : X Code 环境相关的配置文件;
English.lproj :本地化文件;
manual-tests :测试用的 html 文件;
Resources :资源,图标;
WebCore.gyp :工程文件。 GYP ( Generate Youre Project )是 google 自己开发了一个脚本工具,这个工具也 是采用 python 编写的。它采用了自定义的一套规则,用于生成各种工程文件;
WebCore.vcproj : VC 工程文件;
WebCore.xcodeproj : X Code 工程文件;
WTF : Apple 的 C++ 库,可以看作精简的 STL ; SunSpider
一个 JavaScript 的检测程序,它不检测 DOM 或者浏览器其他的 API ,只用来检测 Javascript 。
JavaScriptGlue JavaScriptCore :有关 JavaScript 的相关内容,包括了脚本解释器、分析器以及执行程序; PlanetWebkit: 一个比较灵活的 RSS 阅读器; Webkit 网站上的 Planet :一站式的 Webkit 开发与动态信息; 四. 体系结构
WebKit 主要包括三部分: WebKit , WebCore ,以及 JavaScriptCore ,加上所使用的库,依托的平台,其基本的体系结构 (Architecture) 如下所示:
注意有的模块相对于下面的模块有突出,这是因为此模块与下面几个模块直接相关,比如 WebCore 模块就与JavaScriptCore 、 Libraries 和 Platforms 模块直接相关。
发表评论
-
《算法之美》の字符串相关问题の壹
2012-07-06 09:52 723题目:编写一个单词逆序输出的算法,例如输入"SE ... -
WinForm下正则表达式的应用
2012-07-06 09:45 9361.引入命名空间:using System.Text.Re ... -
八个最常用的正则表达式
2012-07-06 09:38 711灵活的使用正则表达式,可以使得程序既简洁,又清晰。因为正则 ... -
基于表的Lua原生支持面向对象编程在GUI中的使用示例
2012-07-06 09:30 1137lua真的有很多神奇的用法,下面是一个基于表的形式实现的对 ... -
图片展示
2012-07-05 20:45 5945 ... -
Flex 4架构的组件开发
2012-07-03 13:44 599Flex 4架构的组件开发 作者:Michael Labr ... -
Flex利用自定义事件使用弹出窗口为DataGrid添加新数据
2012-07-02 12:27 629下面是TitleWindow所有代码: Xml代码 ... -
Flex右键菜单扫盲
2012-07-02 12:27 775怎么添加右键?在 Flex 中,只有应用程序中的顶层组件才 ... -
flex--LineChart
2012-07-02 12:27 622最近工作上用到了linechart,在网上查的资料还是非常 ... -
flex的mask处理
2012-07-02 12:26 759在做公司一个flash播放器时候,需要在一个swf中动态加 ... -
flex datechooser 日期小例子
2012-07-02 12:26 583在这个例子中,我们讲解的是DateChooser 控件,这 ... -
在应用中使用Ext Loader
2012-07-01 10:01 522原文:http://www.sencha.com/b ... -
广州工作2个月!差人的公司可以call我
2012-07-01 10:01 557网名:夜梦惊魂/夜枫设计 姓名:胡军 博客:http ... -
基于push技术的web实时网络管理框架研究
2012-07-01 10:01 4351 引言 基于 web 的网络管理是web 功能和网 ... -
MyEclipse for Spring 8.6: Spring MVC Scaffolding
2012-07-01 10:01 790Scaffolding consists of singl ... -
FLEX和Actionscript开发FLASH游戏8-2-1
2012-06-30 16:28 613FLEX和Actionscript开发FLASH游戏8-2-1 ... -
flex安全沙箱
2012-06-30 16:27 1056flex安全沙箱 2011年02月2 ... -
flex 联机游戏开发 - 五子棋游戏:(二)人性化选择
2012-06-30 16:27 590flex 联机游戏开发 - 五子棋游戏:(二)人性化选择 2 ...
相关推荐
### WebKit介绍及总结 #### 一、WebKit概述 WebKit是一个强大的开源浏览器引擎,它的起源可以追溯到KDE项目的KHTML和KJS。苹果公司在KHTML和KJS的基础上进行了大量的改进和优化,最终推出了自己的浏览器引擎——...
WebKit 是一个开源的 Web 浏览器引擎,广泛应用于苹果的 Safari 和谷歌的 Chrome 浏览器中。这个引擎使得浏览器能够解析 HTML、CSS、JavaScript 以及其他 Web 相关的格式,为用户提供丰富的网络浏览体验。下面我们将...
**一、Android WebKit 的架构** Android WebKit 的架构主要由以下几个关键部分组成: 1. **WebView**: 这是 Android SDK 提供的一个视图组件,应用程序可以直接使用它来嵌入网页内容。WebView 类提供了加载网页、...
总结起来,Webkit内核是现代Web浏览器的核心,它处理着从网络数据到用户界面的转换。Webkit的开源特性、强大的功能和广泛的使用,使其成为开发跨平台Web应用的重要工具。无论是构建桌面浏览器还是移动设备上的应用,...
总结来说,Webkit是一个强大且灵活的网页渲染引擎,其设计和实现充分考虑了性能、安全和跨平台兼容性,对现代互联网浏览体验产生了深远影响。无论是对于开发者还是普通用户,了解Webkit的工作原理和关键组件都是深入...
- **Main Entrances**:每个移植都有一个简单的主函数入口,可以构建一个基于WebKit2接口的基本可执行程序。 #### 五、总结 通过对WebKit源代码结构的详细解析,我们可以清楚地看到其清晰的目录组织方式不仅有利...
总结来说,Webkit内核是一个强大且灵活的Web内容渲染工具,通过WebKit.Interop.dll,开发者可以在.NET环境中充分利用其优势,构建丰富的Web应用和组件。不过,这需要开发者具备扎实的.NET编程基础和对Web标准的理解...
总结起来,"WebKit研究报告2.pdf"深入探讨了WebKit的核心组件、移植方法以及与图形和网络相关的技术。通过这份报告,读者可以了解到WebKit如何构建和优化网页渲染,以及如何在不同的计算环境中实现高效的性能。对于...
### WebKit内核源代码分析(三):Android中的WebKit介绍 #### 一、WebKit概述与URL处理 本文档深入探讨了WebKit在Android环境下的实现原理,并特别关注了WebKit如何处理URL请求及其相关的CSS样式应用等内容。...
### WebKit和Chromium源码及原理剖析 #### 第1篇 Web开发须知的浏览器内幕:缓存与存储篇(2) **3. HTTP Cache综述** - **HTTP Cache概念**: - HTTP缓存机制遵循IETF规范设计,最新的标准文档为[RFC 7234]...
本文详细介绍了在Fedora Core 5上编译WebKit的步骤,从安装基本工具和库,到编译Qt框架,每一步都至关重要。尽管过程繁琐,但对于那些希望深入了解WebKit内部工作原理,或者想要定制自己的Web浏览器的开发者来说,这...
本篇文章将深入探讨Node-Webkit如何利用Node.js构建内建服务器,并介绍相关的关键知识点。 首先,我们来看`http.js`文件。在Node.js中,`http`模块是核心模块之一,用于创建HTTP服务器。通过`require('http')`可以...
**一、Node.js介绍** Node.js是一个基于V8引擎的JavaScript运行环境,它通过事件驱动、非阻塞I/O模型实现了高效的数据处理和轻量级应用开发。Node.js的出现使得JavaScript不仅限于浏览器,还能在服务器端运行,实现...
- **总结**:总结图形库在WebKit中的作用和重要性。 ### WebKit之网络库介绍 #### 网络原理 - **超文本传输协议**:介绍HTTP协议的基本原理和工作方式。 - **URL类**:解释WebKit中URL类的用途和实现。 - **Page...
本文将详细介绍如何为基于WebKit核心的浏览器(如Chrome和Safari)编写CSS Hack。 #### 二、WebKit核心浏览器概述 WebKit是一个开源的渲染引擎项目,由Apple发起并维护。它最初是基于KHTML和KHTML的JavaScript解释...
本文将详细介绍CefSharp V63版本的Demo以及如何利用Webkit进行应用开发。 首先,CefSharp V63是一个特定的版本,该版本基于Chromium的某个稳定分支,提供对Web标准的全面支持。Chromium是Google Chrome浏览器的核心...
WebKit作为一款流行的浏览器引擎,被广泛应用于Safari、Google Chrome等浏览器中。本文将深入探讨WebKit内核浏览器的默认CSS属性,帮助开发者更好地理解这些属性如何影响页面布局与呈现。 #### 默认样式概述 根据...
这部分内容将在后续关于 WebKit 中 JavaScript 执行机制的文章中详细介绍。 #### C++ 层处理 在 Java 层调用了 `nativeLoadUrl()` 后,接下来的处理流程将进入 C++ 层。 ```cpp // WebCoreFrameBridge.cpp static ...
- **基础技术**:介绍了 WebKit 的核心技术和架构,以及 Qt 如何与其进行交互。 - **未来改进**:讨论了未来的改进方向和技术发展路线图,以满足不断变化的需求。 #### 6. 好处 - **提升用户体验**:通过结合 Web ...