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

FightingCoder

共 2456字,需浏览 5分钟

 ·

2021-09-01 04:10

这是「进击的Coder」的第 467 篇技术分享作者:码农翻身刘欣来源:码农翻身

阅读本文大概需要 6 分钟。



注意,是浏览器引擎,不是浏览器!


浏览器引擎主要有两个功能,一个负责渲染/页面布局,另外一个是执行  JavaScript。


国内搞出的浏览器挺多的,不过都是基于外国的开源引擎。 为什么没有自主的,或者主导的开源引擎呢?


回答这个问题之前,我们先看看浏览器引擎的发展历史,答案就在其中。 


c7c644d168eb6d3514d1b71d2f16fa3d.webp


1990 年夏日的一天,阳光明媚,这对于寒冷的挪威来说,非常难得。


两个程序员走出办公室,步入公园,坐在长凳上享受美好的阳光。


他们俩正在用 C++ 开发一个超声波图像程序,遇到了一个跨平台的问题。


41a6a73f2ffe0c94865388b528157853.webp


这两个程序员,一个叫做 Haavard ,另外一个叫做 Eirik , 他们计划开发框架就是大名鼎鼎的 QT

3e0909e139fc4457e938299332658607.webp


经过两人几年的辛苦努力,QT 于 1995 年发布了第一个版本。


作为一个跨平台的 GUI 框架,QT 深受 C++ 程序员的欢迎,被广泛地应用在汽车、消费电子、医疗、娱乐和工业自动化等领域。


Haavard 和Eirik 不失时机地成立了一个叫做 Trolltech 的公司,专门开发 QT, 并且提供专家咨询服务。


让我们把目光再转向德国,1996 年,一个德国大学生 Matthias Ettrich 在使用 Unix 桌面时候,觉得非常不爽。 


8ec5dc82d2ba500abd6691b03255a061.webp


他当然不能从零开始开发,一番调查研究之后,Matthias 发现了 QT 这个宝藏


802808bedeeedf0a31c69759c345c04c.webp

640570e5cef8a38b79b225654969fca6.webp

Trolltech 公司的大力支持让他下定决心采用 QT 来开发一个 Unix 的桌面:KDE

0dd9a940dd79c8abce703cc73e3b0b5c.webp


也许是对 QT 太喜欢了, Matthias 在 1998 年干脆加入了 Trolltech 公司。


与此同时,Trolltech 公司也有很多员工参与到了 KDE 的开发当中,甚至成为领导者,Trolltech 和 KDE 可真是一对好基友。

08e3f0618a298ea4d257537cf1d5e315.webp


在大西洋另一边的美国,Web 已经成为最热门的发展方向,风起云涌,英雄辈出。


网景率先推出 Navigator,拔得头筹。


微软不甘落后,搞出了 Explorer


IE 靠着和 Windows 捆绑策略,后来居上,统治了浏览器市场。


5a6327fc417d9642c6058b5ac4ef7782.webp


KDE 作为一个桌面环境,自然也不能落伍, 也开发了属于自己的浏览器:Konqueror


Konqueror(其实是 Conqueror,KDE 的项目都以K开头)  从名称上看就野心勃勃


ab0c89fb35098f9f4ef40dd4ec7726ba.webp


Konqueror 并没有实现征服,因为 Unix/Linux 在桌面市场的占有率实在太低了。


但是 Konqueror 的两个重要组件:渲染引擎 KHTML 和 JS 引擎 KJS 却在后来大放异彩。


b6345ea0fc7544ceb100087d77ced64c.webp


2001 年,苹果想为自家的 Mac OS X 开发一个浏览器, KHTML 和 KJS 进入了他们的视线。


748461c1fee46598c08909a0dd5a3c60.webp


苹果的开发人员对 KHTML 和 KJS 做了一个分支, 移植到了 OS X 上,改名为 WebCore 和 JavaScriptCore


2003年,乔布斯在 Macworld Expo 上正式发布了浏览器 Safari 和 WebCore。


4c1b41d5e11067c8b964ab1cb80f9728.webp


但是 KHTML 团队和 Apple 团队之间的关系却日趋紧张


b24bcf14a8b0a47427882148446ca3c0.webp



两个团队分裂了,开始独立发展。


2005 年,Apple 把 WebCore 和 JavaScriptCore 打包到 Webkit 中,作为一个开源软件向公众发布


Webkit 是个优秀的浏览器引擎, 小巧、灵活又十分强大。


它率先实现了 CSS3 和 HTML5 的功能, 受到业界的喜爱, 围绕着它有很多浏览器发展起来。


98b56d81a143b54bfe715b6facd2f72b.webp


Webkit 的成功引起了 Google 的注意,作为一个互联网领域的巨无霸,它也要占据流量的入口,实现自己的浏览器。


cd9de4da1cc6a3235ebaac13abd78fe1.webp


不过,Google 对当时的 Web 有着深刻的洞察力,它认为 Web 和之前已经完全不同了。


53ea728fd6e3613220a1d719588a270a.webp



这些在浏览器中运行的应用程序基本上都是 JavaScript 来实现的,JavaScript 引擎必须极为强劲才行。

dcba63a8c78b589de8bee39b35711c18.webp


既然 JavaScriptCore 不能满足需求,那就自己造一个吧!


当然,布局和渲染引擎还可以用 Webkit 的 WebCore。 


2c2122251c4b963ee40be47cda7d4e33.webp


2009 年,搭载着 WebCore 和 V8 的 Chrome 问世了, Chrome 界面简洁、稳定, V8 引擎极为强劲,引发了下载的狂潮,并迅速成为了浏览器的霸主!


此后,Google也fork 了 Webkit 的源码,并且花了大功夫梳理,使得使得可读性更好,编译效率更高,2013 年形成了一个新的开源浏览器引擎 Blink


这几个浏览器引擎的关系是这样的。


cfdbb25e980f7dc308687a5c6fbbe672.webp



再加上 Firefox 的 Gecko , 三大浏览器引擎正式形成!


86719a20778e9ff7854dbe6954f37c6d.webp


当然,我们不能忘了曾经的浏览器霸主 IE 和它的引擎 Trident


18ff62d19c350a9e1a4e04da9d769845.webp


终于可以回到文章开头的问题了:为什么国内的 IT 巨头不搞出一个浏览器引擎呢?


回顾这些浏览器引擎的发展历史,它们几乎都起源于 90 年代, 当时国内软件业非常薄弱, 错过了浏览器开发的这一波浪潮。


随着 Web 标准的不断发展和完善,浏览器引擎也变得极为复杂,代码量动辄就是千万行级别,工作量巨大。


浏览器引擎需要经年累月的积累,没法弯道超车。


即使是强如 Google、Apple 也都是站在别人的肩膀上,加上自己的创新, 慢慢发展起来的。


国内的互联网巨头又专注于商业模式,主要在应用层折腾,对底层技术重视不够。把别人的浏览器引擎拿过来,包装一下,形成自己的浏览器,这是性价比最高的做法。


但是,我们要提出一个问题:当你用了别人的东西,是不是也要做出贡献呢?有没有可能自主创新后搞出自己的分支、然后占据主导地位呢?

87064f1d9bbbc96a67d55649096a2f6b.webp

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。


看完记得关注@进击的Coder
及时收看更多好文
↓↓↓


崔庆才的「进击的Coder」知识星球已正式成立,感兴趣的可以查看《我创办了一个知识星球》了解更多内容,欢迎您的加入:


 


好文和朋友一起看~
浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报