自主研发一款浏览器内核的难度到底有多大?
作者:卡卷网发布时间:2024-11-29 15:15浏览数量:106次评论数量:0次
来来来, 让写过内核的人给你们聊一聊 ^^
其实内核分类啥的,真的没有那么复杂。 要了解难度啥的, 看看浏览器本身发展的历史会清楚很多。
浏览器的内核从头开看的话, 其实并没有那么多。 Google 的 Blink 来源于 苹果开源的 Webkit,而苹果的开源的 Webkit 来源于 KTHML, 属于 KDE 的一部分, 而 KDE 基于的 QT, 是 Trolltech 开发的, 很多 KHTML 的贡献者其实是来自于 Trolltech.
因此,Google Chrome 和 Safari 这个分支其实是来自于 Trolltech .
很多人不知道的是, Trolltech 也是一家挪威公司, 而且就在 Opera 的楼下。 他们是四楼, 我们是五楼。 我刚加入 Opera 的时候, 他们还和我们共享食堂。很多员工彼此都是好朋友,连代码都是部分共享的. 因此 KTHML 和 Opera 的自有引擎 Presto 架构非常类似。
现在你看到了吧, 内核架构其实就三个分支
- KTHML, Opera -> Webkit -> Blink (Chome, Opera, Safari)
- Netscape -> Firefox
- Trident or whatever -> IE
两个系列是美国的,一个系列是挪威的。
然后有人就要问, 美国做这些东西很正常, 毕竟 IT 起步早,发展快。为啥挪威这种莫名其妙的国家也做浏览器, 还做得风生水起的。。
很大程度上和这个兄弟有关系。这个兄弟叫 Haakon Wium Lie, 也是个挪威人, 发明了 CSS. 然后做了 Opera 的 CTO.
Håkon Wium Lie - WikipediaHaakon 在 W3C 的影响力非常大, 毕竟 CSS 之父。 于是带了一大票挪威人在 W3C 里面制定标准。 当年我旁边办公室里面随便拎一个出来,都是 W3C 某个讨论组的主席啥的. 然后事情就比较有意思了。 CSS 规范里面其实非常多的地方定得非常的绕。 如果你去看 Opera 里面的一些 CSS 实现方法, 你会发现实现的非常优雅。而其他浏览器就更像七拼八凑出来的。这让我非常怀疑,其中这些规范是 Opera 实现好了, 再提出来的 ...
现在看清楚了吧。从历史原因来说,美国有资本优势,毕竟互联网泡沫还在, 而挪威有标准影响力。其他任何一个国家研发浏览器在那个时候来说, 都是费力不讨好的事情。
从技术上来说,浏览器研发的难度更多的像是一个系统工程。浏览器的各个组件研发难度其实都不大。
包括很多人认为的 Javascript engine。 其实除非像 V8 那样子往死里面优化,单纯的 javascript engine 其实相当独立且并不复杂
Opera 里面很长一段时间做 javascript engine 就一个人。javascript engine 和浏览器之间的耦合非常标准, 所以做 javascript engine 和 浏览器其他部分的人几乎没有交集。于是这个哥们长达数年时间, 自己跟自己开会,自己跟自己汇报,自己定计划。 最后离职的理由是和其他部门交流太少,实在是太孤独。。
做为系统工程,浏览器最大的挑战的是浏览器承载的网页是不确定的,虽然标准还在, 但是扛不住无限种可能。
比如你并不知道在明天在世界某个角落的人会不会发精神病在页面里面写上一万个 canvas. Opera 当年为了追求小巧, 解析器用的是简单的递归下降。 于是你也不知道是不是有一个精神病会写上一万层标签嵌套搞挂你的栈。
而无限可能带来的另外一个问题是: 你在解决一个新的可能时。你怎么知道没有搞挂另外一个已经解决过的可能呢?
如果是非主流浏览器, 解决这问题事情都需要靠暴力的, Opera 因为做得早,积累了非常多的回归测试。我记得放弃掉 presto 的时候, 大概 14 万个测试用例, 有一个服务器集群每天晚上都跑。 新的提交要是出现了回归,集群马上把报告用邮件自动发给提交者。
如果是主流浏览器,那就好办多了,只需要保证满足标准就行(比如 chrome), 或者不要自己砸自己老版本的浏览器(比如 IE). 因为网页反过来, 会来适配你,
于是如果你要研发一个浏览器内核,那你肯定是从 “非主流浏览器” 浏览器开始,要不然你像 Google 一样,找一个 “主流浏览器” 的内核二次开发,然后强行推广成为一个主流浏览器。
要不然就像 Opera 一样暴力解决。。
而技术本身,相对于系统工程本身,并不是很大问题。从某种意义上面,这和操作系统蛮类似的,不同的仅仅在于,浏览器需要适应无限可能的页面,而操作系统需要适应无限可能的硬件。
而我非常怀疑国内有任何厂商有耐心来做这个事情 。。。
[1] WebKit - Wikipedia
[2]The Qt Company - Wikipedia
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎