浏览器发展史
现在浏览器已经成为网上生活的重要家园和工具。而从年,Wb之父TimBrnrs-L亲手设计第一个HTML浏览器开始,到现在HTML大行其道,苹果、谷歌等创新企业引导潮流,恍若隔世。
曾经AOL收购Ntscap后被大骂是“毁人不倦”,曾经也有很多人为IE写过“墓志铭”,曾经很多人还见证了Mozilla从出生到壮大,也曾惊讶于苹果Wbkit的英明,而现在想起这一幕一幕,心中感慨万千。当再一次翻开浏览器的发展史,我们很鲜明地发觉一个规律:江山代有才人出,各领风骚仅几年。后来者居上,似乎是浏览器市场的宿命。
下面以内核(RndringEngin)的变革来简述一下过去几十年浏览器市场风云,个中的刺刀见红,值得玩味。为了不让这篇文章写成技术说明文,我还是尽可能说得简单通俗点。
内核首先得搞懂浏览器内核究竟指的是什么。
浏览器内核英文叫做:RndringEngin,中文翻译很多,排版引擎、解释引擎、渲染引擎,现在流行称为浏览器内核,至于为什么流行这么称呼,请自行领悟。内核可以分成两部分:渲染引擎(layoutnginr)或(RndringEngin)和JS引擎。内核负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS引擎则是解析Javascript语言,执行javascript语言来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于单指渲染引擎。有一个网页标准计划小组制作了一个ACID来测试引擎的兼容性和性能。内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的浏览器内核可以分这四种:Gcko、Tridnt、Wbkit、Blink。
需要注意浏览器和浏览器内核是不同的概念,浏览器指的是Chrom、Firfox、Safari、Opra等,而浏览器内核则是Blink、Wbkit、Gcko、Tridnt等。浏览器内核只负责渲染,GUI及网络连接等跨平台工作则是浏览器实现的。
第一次变革:Ntscap王者曾几何时,我用着Ntscap,大骂那些用IE的是人“土鳖”。而到现在,这个名字已成为历史。
故事从年开始,那一年网景通信公司推出了代号为“网景导航者”的网景浏览器1.0,互联网历史上第一款商业化浏览器产品——Ntscap诞生了,随后的Ntscap6开始采用Gcko内核。后来的MozillaFirFox(火狐浏览器)也采用了该内核,Gcko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gcko内核的浏览器也很多,这也是Gcko内核虽然年轻但市场占有率能够迅速提高的重要原因。这款产品迅速风靡,随后迭代版本占领了浏览器大部分份额。在最鼎盛的时期,风光程度甚至超过了后来者IE。
第二次变革:蝗虫IE浏览器世界统治时间最长、最为著名的莫过于微软的IE系列浏览器。如果不是网景浏览器的太过成功,或许不会有后来的IE了,快速的发展让Ntscap犯下了一个致命错误,由于浏览器的成功带来的自信导致这家公司干脆尝试去做一个操作系了,而当时操作系统领域已经领先的微软马上意识到网景的威胁,立马收购另外一家浏览器公司,年微软基于Mosaic(“马赛克”,这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览)代码修改成了新的Tridnt内核,开发出了IntrntExplorr,而且微软把IE浏览器捆绑在了他自己的操作系统中,想想当时的场景,安装一个微软的操作系统没有浏览器,还需要再花钱买一张网景浏览器软件才能上网,尽管网景浏览器很好用,但这样也很麻烦。微软操作系统中直接带有浏览器,试问还有谁愿意去在花钱买个浏览器软件?所以IE立马占领了浏览器市场。一直到今天,尽管有些强弩之末,但依然占据了半壁江山。
很多人将IE的成功归咎于微软的“蝗虫”式垄断战略,但坦白地说,Tridnt内核帮了它大忙,尤其在早期,从IE4中首次采用一直沿用到了IE11,所以Tridnt也被普遍称为IE内核。Tridnt实际上是一款开放的内核,它比较轻盈,而且历经多代发展,已具有成熟的接口规范和接口开发性,能够适应不同的脚本要求。因此才有许多采用IE内核而非IE的浏览器(壳浏览器)涌现。
非Tridnt内核浏览器的市场占有率大幅提高也致使许多网页开发人员开始注意网页标准和非IE浏览器的浏览效果问题。
补充:IE从版本11开始,初步支持WbGL技术。IE8的JavaScript引擎是Jscript,IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。
国内很多的双核浏览器的其中一核便是Tridnt,美其名曰“兼容模式”。Window10发布后,IE将其内置浏览器命名为Edg,Edg最显著的特点就是新内核EdgHTML。关于Edg浏览器更多可以参考如何评价MicrosoftEdg浏览器?
第三次变革:烈士遗孤Mozilla年1月,网景与微软IE浏览器竞争失利以后,为了挽回市场,网景通信公司公布旗下所有软件以后的版本皆为免费,并成立了非正式组织Mozilla,自此Mozilla浏览器开始登上舞台。Ntscap虽然死了,但是留下的“遗孤”Firfox(狐狸),则开始迈出了漫长的复仇之路。MozillaFirfox也是基于Gcko内核,但此Gcko已非彼Gcko。
上一代的Gcko内核由于公司产品研发策略发生的偏差,导致它越来越臃肿,受人诟病。尤其是被AOL收购后,这家公司除了将Ntscap带向死亡外,没有任何建树。
而新一代的Gcko内核引擎的由来跟IE不无关系,由于IE本身的“垄断性”(虽然名义上IE并非垄断,但实际上,特别是从Windows9年代一直到XP初期,就市场占有率来说IE的确借助Windows的东风处于“垄断”的地位)而使得Tridnt内核的长期一家独大,微软很长时间都并没有更新Tridnt内核,这导致了两个后果——一是Tridnt内核曾经几乎与WC标准脱节(00年)这也导致了微软内部一些开发人员的不满,二是Tridnt内核的大量Bug等安全性问题没有得到及时解决,然后加上一些致力于开源的开发者和一些学者们公开自己认为IE浏览器不安全的观点,也有很多用户转向了其他浏览器,而那些不满的部分微软“叛将”与当时已经停止更新了的Ntscap的一些员工一起创办了Mozilla(Opra也是这个时候兴起的),以当时的Mosaic内核为基础重新编写内核,于是开发出了Gcko。针对IE,Gcko祭出了自己的杀手锏——开源,通过源代码开放,彻底解决了安全和速度问题。尤其是热代码加速这个全新思路,为Firfox打开了胜利之门。从刚开始被微软取笑为“臭狐狸”到与IE形成分庭抗礼的局势,也不过是短短几年而已。不过,Gcko内核的浏览器仍然还是Firfox用户最多,所以有时也会被称为Firfox内核。此外Gcko也是一个跨平台内核,可以在Windows、BSD、Linux和MacOSX中使用。
第四次变革:苹果Safari来了可惜的是尽管Mozilla、opra浏览器很好用,可微软操作系统的市场占有率很大,造成其他浏览器的市场份额一直不变。IE自从坐上了份额第一的头把交椅后,就一直不思进取了,自己制作一套wb标准,也不怎么支持html,javascript,css这些wb技术的新版本特性,微软从i6开始到i8七八年间几乎没对Tridnt进行过像样的更新,这与后来勤快的苹果、Googl形成鲜明的对比。虽然i通过垄断赢得了市场,但不安全、崩溃、速度慢等等问题也一直让用户难以忍受。现实往往就是这么捉摸不定,变幻莫测,正当人们认为Gcko将与Tridnt上演“双寡头”的时候,苹果大叔开始出手,做了蝉和黄雀后面的螳螂。
话说回来,这也得怪Gcko和Tridnt他们自己。Gcko再次犯了当年的错误——贪大求全,将邮件组、新闻组、聊天等流行应用都打包进了Firfox,导致内存占用问题。此外,Firfox对JavaScript的支持并不好,反应迟钝也开始被频频抨击。而Tridnt呢,几乎没怎么更新过,很多兼容问题导致开发者也是头大。再加上开放性问题,致使IE在安全性、速度等诸多问题上被群起而攻。从这个意义上来说,是垄断成就了IE,同样也是垄断毁灭了IE。
勤劳的又追求极致的苹果推出的基于WbKit内核的Safari浏览器则引导了浏览器的本质回归潮流。Safari在00年1月7日首度发行测试版,并成为MacOSXv10.与之后版本的默认浏览器,也成为苹果其它系列产品的指定浏览器(也已支持Windows平台)。WbKit内核则是苹果基于KDE小组(Linux桌面系统)的KHTML引擎开发出来的,可以说WbKit是KHTML的一个开源的分支。当年苹果在比较了Gcko和KHTML后,选择了后者来做引擎开发,是因为相比Gcko,KHTML拥有清晰的源码结构和极快的渲染速度,也实现了JavaScript脚本的快速解释器调用。事实上,这个宝押对了。这种轻灵随后就赢得了Googl的青睐(年谷歌公司发布chrom浏览器,采用的chromium内核便fork了Wbkit)。现在GooglChorm已成增长最快,最受开发者喜欢的浏览器了,加上苹果Safari的份额,WbKit已经与Gcko、Tridnt开始“三国演义”。
有意思的是,自从苹果的WbKit推出后,不光是谷歌青睐,就连Firfox内部也开始有“异见”,要求抛弃Gcko而选择WbKit。
更有意思的是,一提到wbkit,大家首先想到的便是chrom,可以说,chrom将Wbkit内核深入人心,殊不知,Wbkit的鼻祖其实是Safari。现在很多人错误地把wbkit叫做chrom内核(即使chrom内核已经是blink了),苹果都哭瞎了有木有,Wbkit内核可以说是以硬件盈利为主的苹果公司给软件行业的最大贡献之一。
第五次变革:后起之秀-谷歌Chrom(Bink/Chromium)自苹果推出的WbKit内核后,这种回归本质的轻灵受到了谷歌的青睐,年chrom横空出世。界面简洁、加载快速、数据安全等这些特点让chrom越来越受喜欢,甚至好过于苹果了。加之很多wb开发者对其的追捧,最终使其市场份额逐步攀升,成为了后起之秀。
谷歌发布的chrom浏览器使用的内核被命名为chromium。chromium虽然是开源引擎wbkit的一个分支,却把WbKit的代码梳理得可读性提高很多,所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定。因此Chromium引擎和其它基于WbKit的引擎所渲染页面的效果也是有出入的。所以有些地方会把chromium引擎和wbkit区分开来单独介绍,而有的文章把chromium归入wbkit引擎中,都是有一定道理的。谷歌公司后来还研发了自己的Javascript引擎,V8,极大地提高了Javascript的运算速度。
Chromium问世后,带动了国产浏览器行业的发展。一些基于chromium的单核,双核浏览器如雨后春笋般拔地而起,例如:搜狗、60、QQ浏览器等等,无一不是套着不同的外壳用着相同的内核。然而01年4月日,谷歌在ChromiumBlog上发表博客,称将与苹果的开源浏览器核心Wbkit分道扬镳,在Chromium项目中研发Blink渲染引擎(即浏览器核心),内置于Chrom浏览器之中。
Wbkit用的好好的,为何要投入到一个新的内核中去呢?
Blink其实是WbKit的分支,如同WbKit是KHTML的分支一样。Googl的Chromium项目此前一直使用WbKit(WbCor)作为渲染引擎,但出于某种原因,并没有将其多进程架构移植入Wbkit。后来,由于苹果推出的WbKit与Chromium的沙箱设计存在冲突,所以Chromium一直停留在WbKit,并使用移植的方式来实现和主线WbKit的对接。这增加了Chromium的复杂性,且在一定程度上影响了Chromium的架构移植工作。基于以上原因,Googl决定从WbKit衍生出自己的Blink引擎(后由Googl和OpraSoftwar共同研发),将在WbKit代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离WbKit的影响,创造一个完全独立的Blink引擎。这样以来,唯一一条维系Googl和苹果之间技术关系的纽带就这样被切断了。
Googl和Appl在多个领域都是竞争对手,而唯独在浏览器引擎上有技术合作,利益一致。但为了各自的利益,谁都不会拿出%的“诚意”来做好WbKit,因为你做出来的成果竞争对手可以直接享用。移动互联网已经崛起,手机和平板设备端必将成为浏览器的另一个战场。这个时候,如果Googl跟苹果仍然黏在一起,将会严重阻碍双方的进步,也会阻碍WbKit的进步。据说Blink删除了w行wbkit代码。
至于为什么叫Blink?有兴趣的可以看下这篇访谈PaulIrishonChromMovingtoBlink,里面说:
itfitsthatBlinkwillnvrsupportthinfamousblinktag.
Blink引擎问世后,国产各种chrom系的浏览器也纷纷投入Blink的怀抱,可以在浏览器地址栏输入chrom://vrsion进行查看。
在chrom发展壮大过程中,微软才意识到chrom开始对它逐步侵蚀自己的市场有了危机感,才开始频繁更新IE,年IE9发布,01年IE10发布,01年IE11发布,最后IE的代码实在适应不了新要求的wb技术,就重新开发了一个名为“dg”的浏览器用来取代IE,但还是挡不住chrom成为市场份额第一的命运。在IE横行的那一段时间为了适应IE中国的大多数常用网站也不大符合互联网标准,也就是说如果用符合互联网标准的浏览器去解析这些网站,反而会不正常显示,可见IE坐头把交椅的那几年,却一直在误导和阻挠互联网的发展,悲哉啊。在此要向那些不断创新、不断完善、不断接纳新wb技术的浏览器公司致敬,面对IE他们的市场份额不高,却仍然坚持着不断前进。
第六次变革:1+1,双核时代Wbkit的异军突起将浏览器的特性拉回到“浏览”的本质上来——评价浏览器优劣的关键词不外乎三个方面:兼容性、安全性、浏览速度。而追究每一次浏览器的更替,你总会发现,它们在这三方面总有致命缺陷。
如此情况下,一种新的呼声正在崛起——多核。尤其是在中国市场,由于Firfox等浏览器在中国的市场份额极少,中文网页多是“IE标准”,用户暂时无法抛弃Tridnt内核,但他们又需要速度更快、更稳定的浏览体验。采用“多核”之后,这种矛盾迎刃而解。
从全球范围来看,多核未必蔚然成风,但在特殊的中国市场,这代表了潮流。看看现在的国内浏览器吧:60安全浏览器,QQ浏览器、搜狗浏览器,UC浏览器、4加速浏览器、百度浏览器、猎豹浏览器、遨游浏览器,世界之窗,有几个不是双核的?你再看看国外的浏览器:chrom、safari、opra、firfox、i又有几个是双核?
为什么国内主流浏览器双核是标配?其实,双核功能的出现与我国互联网环境有着极大的关系,因为有些像网银和公司校园这类网站用Chrom浏览器打不开或会出问题,但却可以用IE浏览器打开。但是对于常见的网站用IE浏览器搞不好就会卡死。对于这类问题,我们称之为“网站存在兼容性问题”。
在没有出现双核浏览器之前,用户的使用习惯是大多情况要使用一个基于WbKit内核的浏览器Chrom、Safari、Firfox或Opra,然后在碰到兼容性问题时再切换至兼顾兼容性的Tridnt内核IE浏览器上。很显然,这个“缝”给用户使用带来一定的不便。更有甚者,很多用户从技术层面并不知道Chrom其实比IE做得更好,没有机会享受更好的上网体验。而在那个移动互联网还没有大行其道的年代,大家普遍的观点是浏览器是互联网的重要入口,是推广自家产品的最佳工具,是巨大的流量入口,而用户的这种痛点正是一个拿到坐票的商机,这种背景造就了国内大量双核浏览器的出现,国产双核浏览器在年快速崛起,证明了浏览器在兼容性以及速度性能上的诉求,是用户所需要也是用户看重的。到现在双核已经成为了国内浏览器的标配。
综上,双核功能的定位实际上就是主打WbKit核的快速并以Tridnt核出色兼容性做为补充,让“多核”共存共融,真正发挥1+1效果的效果。UC浏览器的双核指的也正是这两个核,且两个核的定位也是这样的。但从长远来看,双核浏览器可能是一条死路,随着wb标准的推广,i内核也会越来越靠近标准,很多网站也将不支持旧版本的i浏览器,等过几年,内核之间已经不存在兼容问题,双核浏览器就没有卖点了。
为什么Chrom是造就国内双核浏览器的幕后真英雄?因为,在当时来说,一个是伴随着Windows操作系统而来的用户基础庞大的IE浏览器(Tridnt内核),而另一个就是基于WbKit内核,更多的是兼顾性能的以Chrom为代表的浏览器了。
这里有问题,我们都知道Wbkit内核是苹果公司基于KHTML内核开发的新内核,但为何大家都选择了Chrom作为第二核呢?
这一方面是因为,虽然Wbkit内核是苹果开发的,但把它发扬光大的并非是苹果,而是谷歌。谷歌发布的Chromium内核虽然是开源引擎Wbkit的一个分支,但却把Wbkit的性能优化的更高。Googl团队在Chromium项目上包括Wbkit在内做了大量的创新,可以说只要存在影响网页打开速度的瓶颈,就能看到相应的创新点。象DNSPrftch、SPDY、QUIC、Prrndr、多进程架构、PPAPI、v8JavaScript引擎、对HTML的支持等技术内容都是很好的创新例子。这也导致了Chromium引擎和其它基于WbKit的引擎所渲染页面的效果是有出入的。比如用户打开的一个站点包含有加载速度较慢的Java广告,Chromium则会把Java代码隔离起来,网页的其它部分则不会受到影响。点击图标后,Chrom在数秒钟内就能启动—远远领先于其他一些基于Wbkit内核对手。另外chromium的预处理也是让打开网页的速度快的飞起,比如Chrom会根据历史统计来预估所输入字符对应的网站,比如输入了「ba」,根据之前的历史发现90%的概率会访问「