浏览器开发难度有多大?

知更鸟
知更鸟
知更鸟
站长
2511
文章
0
粉丝
网文资讯27阅读模式

你每天打开浏览器刷网页、看视频,肯定没想过这玩意儿背后的复杂度,它可能是这世上最难开发的软件,没有之一。

浏览器开发难度有多大?

就拿谷歌的Chromium内核来说,光是源码就有16G,下载得用大带宽,解压后能占满整个硬盘分区;编译更恐怖,要100G的空间,高性能电脑得跑几个小时,普通电脑可能一天都编译不完。

几千万行代码堆在一起,比Windows 10的代码量还大——你没看错,浏览器的代码比很多操作系统还多。

更吓人的是这些代码不是“堆”出来的,而是分成了几十个“超级模块”,每个模块都能单独当一个大型软件开发。比如处理网络的net模块,要管DNS解析、SSL加密、缓存、WebSocket,每一项展开都是一本厚厚的技术书;处理JavaScript的v8引擎,得做字节码解析、JIT编译(实时把JS转成机器码)、垃圾回收,这些都是编译原理的深水区,没学过的人看代码像看“天书”;还有处理图形的skia库,要画矢量图、文字、GPU加速,甚至能生成PDF——谷歌当年都觉得自己做太麻烦,直接收购了别人的代码。

最核心的网页排版模块blink更要命。它得严格按照HTML、CSS的规范来,比如一个简单的display:flex布局,背后要计算每个元素的位置、大小,还要支持从右往左的阿拉伯文、各种奇奇怪怪的字符排版。

现在的Web标准有上万页,光是把这些细节全部实现,就需要一个团队好几年的时间——你以为“网页能正常显示”是理所当然?

其实每一行文字、每一个按钮的位置,都是代码算出来的。

还有浏览器的多进程设计。为了防止一个网页崩溃连累整个浏览器,Chromium用了“主控进程+渲染进程+插件进程”的结构:主控进程管全局,每个网页单独开一个渲染进程,插件、扩展也有自己的进程。

这种设计能提高稳定性,但需要进程间通信、隔离,复杂度比单体软件高十倍——改一点渲染进程的代码,可能要同步改主控进程的消息机制,稍微出错就会崩溃。

除了这些,还要解决跨平台(Windows、macOS、Linux都要支持)、安全沙箱(防止恶意网页攻击系统)、性能优化(比如滚动时要每秒60帧不卡顿)、Web标准更新(比如每年都有新的CSS特性,得跟着改代码)。
强如微软,当年做IE内核,最后也放弃了,不是不想做,是维护一套内核的人力财力比造个操作系统还大,根本打不过Chromium。

华为要自研浏览器内核。

之前大家都用开源的Chromium,但老美卡脖子的事让我们明白:底层技术不掌握在自己手里,哪天别人不让用了,整个互联网生态都得崩。

就像鸿蒙系统,当年被嘲讽是“PPT系统”,现在升级用户破2.2亿,打了多少人的脸?华为做浏览器,不是为了“重复造轮子”,是为了安全和自主,毕竟浏览器是互联网的入口,要是内核被别人控制,相当于把家门钥匙给了别人。

现在华为自研浏览器要来了,你觉得它能打破Chromium的垄断吗?

本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
  • 网文资讯