互联网的浪潮从未停息,而用以网上冲浪的冲浪板也一直在变得愈加精良。自人们进入互联网时代以来,即已经发生了三次浏览器大战。第一次浏览器大战的主角是IE和Netscape,最终IE凭借着Windows的庞大身躯推倒了Netscape;第二次浏览器大战Netscape浴火重生化身为火狐狸Firefox,一口咬了IE身上一大块肥肉;正在Firefox和IE正缠绵不息之时,突然凭空杀出个Chrome——这名出身豪门Google的小伙子一下子成长得额外精壮,上串势头凶猛,追得两位前辈娇喘吁吁。这位Chrome究竟是何方人物,能练就如此神功,在短短几年内就成为互联网浏览的一大主流,市场份额赶超了Firefox不说,甚至还曾在短时间内压过了微软帝国的IE,形成天下三分的第三次浏览器大战的格局?

 
  Chrome的血统
  出于好奇,不少人都八卦了一下Chrome的来历,然后发现Chrome的背后深藏着Webkit这个名字。对浏览器有所研究的朋友,应该也会或多或少地闻过Webkit的大名。Webkit源于KDE开源项目,兴盛于苹果公司的Safari项目,它身上有诸多创新,近年来风行的HTML5以及CSS3潮流都和Webkit脱不开关系。Webkit小巧、灵活但又十分强大,而且源代码开放,深得业界喜爱。从诺基亚S60上的浏览器,到价比肾贵的iPhone上的Safari,我们都能看到Webkit的身影。

Google从来都不是嗅觉迟钝的公司,Webkit的优秀自然也吸引了这位互联网枭雄的眼光。2008年9月,Google发布了Chrome的测试版,Chrome面世了。Chrome使用了Webkit的代码,继承了Webkit的优良排版引擎,渲染页面速度惊人。

  既然Chrome使用了Webkit的源代码,也使用了Webkit的排版引擎,那么我们是否就可以认为,Google只是在Webkit上面加了一层壳就做出了Chrome呢?

  Chrome的基因突变
      Chrome是Webkit的马甲,这种说法并不准确。实际上Webkit由两部分组成,一部分是WebCore排版引擎,用以解析HTML语言和CSS框架;另一部分为JSCore JavaScript执行引擎,用以执行网页JS脚本。Chrome只是继承了Webkit的WebCore部分,在JS引擎上使用了Google引以为豪的“V8”引擎,大大地提高了脚本执行速度,这也是为什么Chrome会如此快的重要原因。

不仅如此,Chrome还在Webkit上封装了一层Webkit Glue,Chrome中只调用WebkitGlue层的接口使用Webkit组件。与此同时,Chrome的源代码和Webkit也有了很大区别,Google对Webkit的源代码重新进行了梳理,使代码的可读性更好,编译效率更高,并拥有自己的开源项目——Chromium。
 
  Chromium 和 Chrome:试制品和成品
  既然提到了Chromium,这里就顺带谈一下Chromium和Chrome的区别。

不知道从什么时候开始,流行着这样一种说法——Chrome开源。这是错误的。Chrome并非一款自由软件,也没有开放源代码。甚至和Firefox比起来,Chrome还很封闭——因为它无法提供像Firefox一样繁多而高权限的应用接口,这使得Chrome在扩展以及界面定制方面都不如Firefox自由。那Chrome是开源软件一说何来之有?

之所以这种说法,多是因为人们把Chrome和Chromium搞混了。虽然名字很像,图标界面功能什么的都差不多,也同样隶属于Google,但事实上这两者真的不同。

Chromium是一款自由软件,遵循BSD许可证开源,开发者可以使用Chromium的源代码进行开发。我们可以认为Chromium是Google为了发展Chrome而开启的开源计划,       Chromium相当于Chrome的实验开源版。两者功能也有微妙的差异,Chrome比Chromium多了PDF阅读器Flash Player及Google Update等一些小部件。

 

简单来说,Chromium是一个实验项目,Chrome则是一件商品。开发者所能使用的代码只能是开源的Chromium,而不会是闭源的Chrome。若听到有人说,某某浏览器基于Chrome内核,速度快得很!这时候我们应该知道,这款浏览器实际上使用的是Chromium内核。

     Chromium
  目前使用Chromium内核的著名国产浏览器有360极速浏览器、搜狗浏览器世界之窗浏览器极速版等等,为数不少。但我们发现,在国内虽然Chromium内核很受浏览器厂商欢迎,但是更原始的Webkit却几近无人问津。这又是为何?

当然这也是有原因的。前面提到,Google对Webkit的代码重新梳理,Chromium代码的可读性和编译效率远比Webkit高。对比Chromium的代码,Webkit的代码堪比天书,开发难度高得多。Webkit这货不是你想弄,想弄就能弄的啊。更何况Chromium的V8JS引擎比Webkit的JSCore效率更高,好用又强大的东西干嘛不用呢。
  鉴于Chromium和Webkit拥有较大的区别,我们不应该单纯地认为Chrome/Chromium只是在Webkit上面套一个马甲。给Google的工程师们一些掌声吧,因为他们的优秀和努力,世界上多了一个优异的浏览器内核。

参考:  http://www.freair.com/bbs/simple/?t795.html

Chrome 和 Webkit 的渊源的更多相关文章

  1. 简析Chrome和Webkit的渊源

    http://www.3lian.com/edu/2012/05-25/28803.html 互联网的浪潮从未停息,而用以网上冲浪的冲浪板也一直在变得愈加精良.自人们进入互联网时代以来,即已经发生了三 ...

  2. Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件

    在C#中,默认的WebBrowser控件默认使用的是IE的core,而IE的种种遭人吐槽的诟病使我不敢轻易使用WebBrowser,因此,打算使用Chrome的内核替换IE.Chrome的内核使用的是 ...

  3. 【转】WebKit 与 V8 的关系

    页面的绘制(绘制,就是把一个HTML文件变成一个活灵活现的页面展示的过程...),只有一半轮子是Chrome自己做的,还有一部分来自于WebKit,这个Apple打造的Web渲染器...之所以说是一半 ...

  4. IE内嵌google chrome frame解决浏览器兼容问题

    IE内嵌google chrome frame解决浏览器兼容问题  http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...

  5. 基于.net开发chrome核心浏览器

    本文转载自:http://www.cnblogs.com/liulun/archive/2013/04/20/3031502.html 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一 ...

  6. 解决Chrome谷歌浏览器不支持CSS设置小于12px的文字

    在最新版的谷歌里.已经不在支持这个属性啦 谷歌浏览器Chrome是Webkit的内核,有一个 -webkit-text-size-adjust 的私有 CSS 属性,通过它即 可实现字体大小不随终端设 ...

  7. 基于.net开发chrome核心浏览器【二】

    原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心, ...

  8. 理解WebKit和Chromium(电子书)

    前言   基础篇 WebKit, WebKit2, Chromium和Chrome介绍 WebKit和Blink WebKit和Chromium代码目录结构介绍 WebKit和Chromium功能模块 ...

  9. 【css】怎么让Chrome支持小于12px 的文字

    谷歌浏览器Chrome是Webkit的内核,有一个 -webkit-text-size-adjust 的私有 CSS 属性,通过它即可实现字体大小不随终端设备或浏览器影响.CSS样式定义如下:-web ...

随机推荐

  1. POWERDESIGNER中显示样式设置

    1.调整表.视图的显示样式. 右键选中的对象,选择format(或ctrl+t),在弹出窗口中选中content,可以设置只显示表名还是把所有列也显示出来. 2.如何显示表中字段的code. tool ...

  2. JavaScript中对于闭包的理解

    1.什么是闭包? 闭包,官方对闭包的解释是:一个拥有很多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 闭包的特点: (1).作为一个函数变量的一个引用,当函 ...

  3. @property and retain, assign, copy, nonatomic解析

    nonatomic vs. atomic - "atomic" is the default. Always use "nonatomic". I don't ...

  4. (WPF, Service) 删除注册表中的USB Enum值.

    Task: 删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0XXX&PID_0XXX Key Tree 首先第一想到的使 ...

  5. [CSS]元素的显示与隐藏

    摘自:http://www.zhangxinxu.com/wordpress/?p=1528 元素隐藏与显示是我们在页面制作与交互效果实现中非常常见的,如果您只是使用display:none与disp ...

  6. DBA_Oracle DBA常用SQL汇总(概念)

    2014-06-20 Created By BaoXinjian

  7. Form_Form标准控件Folder开发解析(案列)

    2014-01-09 Created By BaoXinjian 1. 打开APPSTAND.fmb, 并加载程序库APPFLDR.pll. 2. 基于APPSTAND.fmb生成Folder开发所需 ...

  8. linuc c 代码示例

    fork的应用: #include "stdio.h" #include "string.h" #include <sys/types.h> #in ...

  9. 获取mysql数据表中的列名

    select COLUMN_NAME from information_schema.columns where table_name='table_name' DESCRIBE table_name ...

  10. ylbtech-dbs:ylbtech-5,RI(报销发票系统)

    ylbtech-dbs:ylbtech-5,RI(报销发票系统) -- =============================================-- DatabaseName:Pur ...