Qter 发表于 2021-9-25 19:43:43

漫画 | 为什么中国没有搞出浏览器引擎?

注意,是浏览器引擎,不是浏览器!浏览器引擎主要有两个功能,一个负责渲染/页面布局,另外一个是执行JavaScript。国内搞出的浏览器挺多的,不过都是基于外国的开源引擎。 为什么没有自主的,或者主导的开源引擎呢?回答这个问题之前,我们先看看浏览器引擎的发展历史,答案就在其中。https://p1-tt.byteimg.com/origin/pgc-image/7936172808bb489eb58bcd5892c1ce79.png?from=pc

1990年夏日的一天,阳光明媚,这对于寒冷的挪威来说,非常难得。两个程序员走出办公室,步入公园,坐在长凳上享受美好的阳光。他们俩正在用C++开发一个超声波图像程序,遇到了一个跨平台的问题。https://p6-tt.byteimg.com/origin/pgc-image/7a4509af8ec54a3cba14283be459ba57.png?from=pc

这两个程序员,一个叫做Haavard ,另外一个叫做Eirik , 他们计划开发框架就是大名鼎鼎的QT 。https://p6-tt.byteimg.com/origin/pgc-image/e24c50411204423288515ae102b02e3d.png?from=pc

经过两人几年的辛苦努力,QT于1995年发布了第一个版本。作为一个跨平台的GUI框架,QT深受C++程序员的欢迎,被广泛地应用在汽车、消费电子、医疗、娱乐和工业自动化等领域。Haavard 和Eirik 不失时机地成立了一个叫做Trolltech的公司,专门开发QT, 并且提供专家咨询服务。让我们把目光再转向德国,1996年,一个德国大学生Matthias Ettrich在使用Unix桌面时候,觉得非常不爽。https://p3-tt.byteimg.com/origin/pgc-image/c7e39cc29d5346408d5c847118dcfc15?from=pc

他当然不能从零开始开发,一番调查研究之后,Matthias 发现了QT这个宝藏https://p3-tt.byteimg.com/origin/pgc-image/2116e2db691b45029edfbfc3fe41ebca.png?from=pc

https://p6-tt.byteimg.com/origin/pgc-image/f7f3b885580f48909b5867a5f092cff1?from=pc

Trolltech公司的大力支持让他下定决心采用QT来开发一个Unix的桌面:KDEhttps://p3-tt.byteimg.com/origin/pgc-image/d87ac922808c4e40b5221952c4d85da6.png?from=pc

也许是对QT太喜欢了, Matthias在1998年干脆加入了Trolltech公司。与此同时,Trolltech公司也有很多员工参与到了KDE的开发当中,甚至成为领导者,Trolltech和KDE可真是一对好基友。在大西洋另一边的美国,Web已经成为最热门的发展方向,风起云涌,英雄辈出。网景率先推出Navigator,拔得头筹。微软不甘落后,搞出了Explorer。IE靠着和Windows捆绑策略,后来居上,统治了浏览器市场。https://p3-tt.byteimg.com/origin/pgc-image/68249a3f79a745f1af62ad5e213c34bb?from=pc

KDE作为一个桌面环境,自然也不能落伍, 也开发了属于自己的浏览器:Konqueror。Konqueror(其实是Conqueror,KDE的项目都以K开头) 从名称上看就野心勃勃https://p3-tt.byteimg.com/origin/pgc-image/963247cc7b4043feb3a524bdc2fa81af.png?from=pc

Konqueror并没有实现征服,因为Unix/Linux在桌面市场的占有率实在太低了。但是Konqueror的两个重要组件:渲染引擎KHTML和JS引擎KJS却在后来大放异彩。https://p1-tt.byteimg.com/origin/pgc-image/6633db8f95234c5b92078dac343ad427.png?from=pc

2001年,苹果想为自家的Mac OS X开发一个浏览器, KHTML和KJS进入了他们的视线。https://p6-tt.byteimg.com/origin/pgc-image/5ebef04d1ce5467894ab83f1ed387d90.png?from=pc

苹果的开发人员对KHTML和KJS做了一个分支, 移植到了OS X上,改名为WebCore 和JavaScriptCore。2003年,乔布斯在Macworld Expo 上正式发布了浏览器Safari 和WebCore。https://p6-tt.byteimg.com/origin/pgc-image/7a77b8dc80654abdbbed7db3dbc0a7e0.png?from=pc

但是KHTML团队和Apple团队之间的关系却日趋紧张https://p3-tt.byteimg.com/origin/pgc-image/a428db064b6a4cdcb1dd7e081776d1df.png?from=pc

两个团队分裂了,开始独立发展。2005年,Apple 把WebCore和JavaScriptCore打包到Webkit中,作为一个开源软件向公众发布Webkit 是个优秀的浏览器引擎, 小巧、灵活又十分强大。它率先实现了CSS3和HTML5的功能, 受到业界的喜爱, 围绕着它有很多浏览器发展起来。https://p1-tt.byteimg.com/origin/pgc-image/e415cd4f677045838fa200c5380b3501.png?from=pc

Webkit的成功引起了Google的注意,作为一个互联网领域的巨无霸,它也要占据流量的入口,实现自己的浏览器。https://p6-tt.byteimg.com/origin/pgc-image/26a05954030643a9adfbb7a3cb04db4d.png?from=pc

不过,Google 对当时的Web有着深刻的洞察力,它认为Web和之前已经完全不同了。https://p1-tt.byteimg.com/origin/pgc-image/365e3a94e6f5476e90b612e5d05eef3f.png?from=pc

这些在浏览器中运行的应用程序基本上都是JavaScript来实现的,JavaScript引擎必须极为强劲才行。https://p3-tt.byteimg.com/origin/pgc-image/429771c7013a47af9cc9f92fb367cda2?from=pc

既然JavaScriptCore不能满足需求,那就自己造一个吧!当然,布局和渲染引擎还可以用Webkit 的WebCore。https://p3-tt.byteimg.com/origin/pgc-image/5684f9f6042e42b38d79f3d35c1c6bab.png?from=pc

2009年,搭载着WebCore和V8的Chrome问世了, Chrome界面简洁、稳定, V8引擎极为强劲,引发了下载的狂潮,并迅速成为了浏览器的霸主!此后,Google也fork了Webkit的源码,并且花了大功夫梳理,使得使得可读性更好,编译效率更高,2013年形成了一个新的开源浏览器引擎Blink。这几个浏览器引擎的关系是这样的。https://p1-tt.byteimg.com/origin/pgc-image/5c1ac42b3e6c45d69c9ecdad3163ceab.png?from=pc

再加上Firefox的Gecko , 三大浏览器引擎正式形成!https://p1-tt.byteimg.com/origin/pgc-image/1f54443258ce4b87aee826ee6783c913.png?from=pc

当然,我们不能忘了曾经的浏览器霸主IE和它的引擎Trident。https://p6-tt.byteimg.com/origin/pgc-image/9281bdb02e7e42aca630de58121e4344.png?from=pc

终于可以回到文章开头的问题了:为什么国内的IT巨头不搞出一个浏览器引擎呢?回顾这些浏览器引擎的发展历史,它们几乎都起源于90年代, 当时国内软件业非常薄弱, 错过了浏览器开发的这一波浪潮。随着Web标准的不断发展和完善,浏览器引擎也变得极为复杂,代码量动辄就是千万行级别,工作量巨大。浏览器引擎需要经年累月的积累,没法弯道超车。即使是强如Google、Apple 也都是站在别人的肩膀上,加上自己的创新, 慢慢发展起来的。国内的互联网巨头又专注于商业模式,主要在应用层折腾,对底层技术重视不够。把别人的浏览器引擎拿过来,包装一下,形成自己的浏览器,这是性价比最高的做法。但是,我们要提出一个问题:当你用了别人的东西,是不是也要做出贡献呢?有没有可能自主创新后搞出自己的分支、然后占据主导地位呢?原创2021-09-05 15:23·码农翻身
页: [1]
查看完整版本: 漫画 | 为什么中国没有搞出浏览器引擎?