为什么WebKit

现在,研究人员WebKit越来越多的人,我不能逃脱,其中还增加。WebKit也多亏了流行的浏览器和WebOS乱斗。随着Palm WebOS, Chrome OS, Firefox OS和Ubuntu Mobile相继公布,WebOS逐渐成为Android和IOS之外的第三世界,而WebKit也随之从浏览器内核晋升为Mobile OS的内核,除了IE和Firefox之外,市面上叫得上名字的都是基于WebKit发展起来,Chrome, Safari, Opera, 360......。因此。不管你是从事浏览器还是Mobile的开发,WebKit都是不二的选择。

而我眼下是由于须要在WebOS上提供一个相似与Chrome for android那样能够远程debug的功能。而接触到WebKit,随着不断深入。也逐渐步入WebKit的开发正轨,也是想把近期的学习历程记录下来,也是帮助其它朋友进这个大门,WebKit的资料实在不多。

怎样起步

我就假定你和我一样。从没接触过WebKit,没写过c/c++。被Java/PHP等傻瓜式语言惯坏了。对设备底层技术不甚了解,在这种情况下(不可能比这个更糟了),也是能够在一周左右入这个门槛的。

正式开工之前先准备以下几步:

  • 学习文章:http://paulirish.com/2013/webkit-for-developers/,当然也有中文版本号:http://www.infoq.com/cn/articles/webkit-for-developers,弄清楚WebKit的几个概念
  • 准备一台CPU和硬盘较好的电脑,CPU是为了应付编译。硬盘是为了应付大规模代码的訪问(去年7月份买的mac已不够用,特地为此换了SSD)
  • 开发平台最好是Xcode,Visual Studio也行,只是可能会遇到非常多坎、
  • 准备一本C++ Primmer Plus放在手边,研究WebKit同一时候顺便把C++也给解决了
  • 给予足够的耐心,应付漫长的源代码下载和编译

好了。就这么多。能够开工了。关于怎样编译和调试等问题,我会在兴许文章中具体介绍。

开工之前的扫盲

WebKit port

WebKit已发展为相似与Linux这样平台性的框架,已不是单一产品类型的开源项目。它是一个标准和变异的结合体。以下这张图能非常好说明这点:
WebKit提供了像这张图这种标准架构和WebCore这种核心库,但灰色的其它部分都是要依据各自平台的不同而进行替换和移植,也就是谈及非常多的port。这里谈的平台就是各自设备的执行环境。比方mac os x,Android和IOS。因此尽管咱是用WebKit,但能够做的事情还有非常多,WebKit仅仅是提供了流程和框架,里面有非常多洞须要咱自己去填补的。

比方。我如今做的远程调试功能,在WebKit里面已在流程上支持,但具体实现上是须要port的。也就导致了仅仅有chrome for android和safari for IOS支持远程调试。

开头介绍的文章中已罗列出哪些点是标准已实现的。哪些点是差异化的,从这里面大概就能估计到须要做哪些东西。

学习平台的选择

官方的WebKit是以Safari for Mac OSX为基础的,Chromium尽管也是基于WebKit,但基本上已是另外一套,还有QT和GTK平台,有非常多浏览器,比方Opera和360都选择了基于Chromium,那对于我们这些刚開始学习的人来说该怎样选择学习的起点呢?我的感觉是,标准的WebKit门槛低一点,文档要丰富一些,但作为将来project的方向,Chromium更受欢迎一些。所以,我推荐以官方的WebKit为起点。然后再延伸到Chromium。

后面我会谈开发环境的搭建,基于官方的WebKit。再加上XCode。会感觉手上非常顺滑,不至于像大多数大型开源项目那样在最開始就把你拒之门外。

開始动手

以下我介绍动手的几个步骤,能够在你无需了解细节的情况下。把环境搭起来。大多数包含我自己,都还是习惯于代码和环境搭建好情况下,比較有心情和底气去往下深入,所以耐心地完毕以下几步。你就能够在开发环境中启动WebKit,这里我介绍的是Mac下的情况,但在windows和linux会困难一些。起码我是受阻后就放弃了:
  1. 升级Mac OSX和Xcode至最新版本号。我的是Mountain Lion 10.8.3和Xcode 4.6。

    做这个是由于我的一个哥们用的是lion,用的一样的步骤,但启动后一直报内存訪问错误,升级系统至最新后就解决了。当然,别忘记了xcode command line

  2. 取得最新代码:svn checkout https://svn.webkit.org/repository/webkit/trunk 当然,这个过程是须要耐心的,特别是下载layout test时,为了将来的一马平川。忍忍吧
  3. Xcode的菜单File->Workspace Settings->Build->Derived Data Location一栏选择Workspace-relative。并输入WebKitBuild->Done
  4. Xcode的菜单Product->Scheme->Edit Scheme->选择scheme: All Source(target WebProcess), Exceutable选择WebProcess.app

假设你是下载的是最新代码,环境搭建仅仅仅仅须要以上几步,当你点击Run后。就能够開始顺利编译,最后会弹出Safari,实际上它的run的是webkit内核,须要一个Safari来作UI层。

WebKit也提供了一个MiniBrowser,这就和Safari没关系了。启动方法就是在第四步上的Exceutable选择MiniBrowser.app就可以。

我当初基于的代码会有些其它的问题,这里就不干扰大家了。假设有遇雷的请把错误贴出来。我看看遇到过没。

OK。了解基本概念。搭建好了开发和调试环境,我敢相信不论什么级别菜鸟,都会有信心往下继续深究了。我的理念就是这样,不管后面有多难,千万不要把开头搞得太复杂,这样会拒非常多人之门外,这也是我为什么推荐最開始用xcode的原因,WebKit官方已把编译中全部细节都隐藏在xcode的项目设置和脚本中了。

后面。我会基于源代码,逐步深入。和大家一起探究WebKit内核的奇妙和伟大。

探索WebKit核心(一)------ 新秀开始的更多相关文章

  1. CSS gradient渐变之webkit核心浏览器下的使用

    一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...

  2. CSS gradient渐变之webkit核心浏览器下的使用以及实例

    一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...

  3. 探索WebKit内核(一)------ 菜鸟起步

    为什么搞WebKit 如今研究WebKit的人越来越多,俺不能免俗,也增加当中.WebKit的火爆也是得益于浏览器和WebOS的混战,随着Palm WebOS, Chrome OS, Firefox ...

  4. Junit初级编码(二)探索JUnit核心

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.现在就让我们慢慢学习Junit单元测试框架 一.Junit的三个核心概念测试类.测试集.测试运行器 1 测试类 公共的, ...

  5. CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack

    @media screen and (-webkit-min-device-pixel-ratio:0) { ul#navUL ul a{padding:8px 2px;word-break:keep ...

  6. 一系列令人敬畏的.NET核心库,工具,框架和软件

    内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...

  7. 基于Chrome内核(WebKit.net)定制开发DoNet浏览器

    1.    源起 a)     定制.Net浏览器 本人是一名C#开发者,而作为C#开发者,做客户端应用中最头痛的一件事就是没有一个好的UI解决方案, WinFrom嘛,效率虽然还不错,但是做一些特殊 ...

  8. WebKit示例解读

    如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处.UIWebView是基于移动版的Safari的,所以它的性能表现十分有限.特别是在对几乎每个Web应 ...

  9. 基于QT的webkit与ExtJs开发CB/S结构的企业应用管理系统

      一:源起       1.何为CB/S的应用程序       C/S结构的应用程序,是客户端/服务端形式的应用程序,这种应用程序要在客户电脑上安装一个程序,客户使用这个程序与服务端通信,完成一定的 ...

随机推荐

  1. HDU 3699 A hard Aoshu Problem (暴力搜索)

    题意:题意:给你3个字符串s1,s2,s3;要求对三个字符串中的字符赋值(同样的字符串进行同样的数字替换), 替换后的三个数进行四则运算要满足左边等于右边.求有几种解法. Sample Input 2 ...

  2. JavaScript发展史,与JScript差别,引入方式,数据类型,命名规范,命名推荐,解决命名冲突

    文件夹: 1.JavaScript发展史 2.JavaScript与JScript差别 3.JavaScript引入方式 4.JavaScript基本数据类型及布尔值 5.JavaScript命名规范 ...

  3. STL之Vector(不定长数组)

    vector是同一种对象的集合,每一个对象都有一个相应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. 引入头文件 #include<vector> 1.vec ...

  4. 【剑指offer】复制的复杂链条

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26154691 题目描写叙述: 输入一个复杂链表(每一个节点中有节点值,以及两个指针,一个指 ...

  5. 一个简单的HTTP服务器(多线程)

    为了更好的了解HTTP协议, 特意谢了一个简单HTTP服务器, 代码只有400行. 因为很简单, 所以效率也不怎么高, 而且支持的特性也不多, 不过也可以运行, 性能跟Apache差不多. ===== ...

  6. C#之再议数组和集合

    1.数组 1.1简单数组 1.2 多维数组 1.3锯齿数组 1.4Array数组 1.5作为参数的数组 1.6枚举 1.7结构 以上部分可参考 http://www.cnblogs.com/ztb12 ...

  7. java中取得上下文路径的方法

    1.request.getContextPath(); 获得web根的上下文环境 如 /tree tree是web项目的root context 2.可以在servlet的init方法里 String ...

  8. JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串

    insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...

  9. 初识缓存以及ehcache初体验

    1.缓存的意义 缓存机制就是将数据库中经常使用的数据取出放入内存中.程序调用时直接从内存中取,丌用每次使用  数据都訪问数据库,这样提高了效率. 2.缓存须要关注的问题 1)  缓存的更新 缓存中的数 ...

  10. 【VMware混合云】掀起你的盖头来

    作者:范军 (Frank Fan) 新浪微博:@frankfan7   微信:frankfan7 VMware混合云服务(vCHS)预计在2013年8月23日正式面向用户推出.目前开放服务的四个数据中 ...