于是人们又起草了Web Assembly的标准 。这是一种类似汇编语言的web标准 。号称web端的汇编语言 。
其目的在于解决JavaScript执行效率低的问题 。同时可以使用C++等高级语言 。开发Web Assembly模块 。
如今已经有很多Web Assembly结合JavaScript的应用案例了 。如Google在其Google earth的web版本中就大量使用该技术 。
这也会导致浏览器花费大量代码来支持Web Assembly的各种功能 。
文章插图
非常感谢您能够耐心的看到这里 。不知道您有没有发现 。我们在Windows里面做的很多事情 。在浏览器里面 。居然也能做了!这说明浏览器已经慢慢发展到和操作系统差不多的功能了 。您说他能不复杂吗!
其他观点:
浏览器内核的复杂性就在于它几乎囊括了计算机所有的专业知识 。
编译原理:V8引擎中的各种黑优化哪个是简单的?没有一定的编译原理基础你还真搞不定!
计算机网络:Chromium是自己搞了一套网络栈的 。实现了很多协议 。比如目前移动端使用较多的QUIC 。
操作系统:Chromium的多进程 。必须得每个系统写一套 。同时还要消除不同系统之间的差异 。如果操作系统你学的一塌糊涂 。我想多进程的程序你是写不好的!
图形学:网页排版真的很复杂啊 。有木有?你要支持世界各国的奇奇怪怪的文字 。
我们以霸主chromium为例 。目前的Chrome、360极速浏览器、Edge最新版 。以及前段时间被爆丑闻的红芯浏览器都是以其为内核来开发 。它到底有多复杂呢?请看下图 。我简单列举了一些重要模块的功能:
文章插图
实际上 。拆分开每一项都是一套很复杂的东西 。我们以其中的net网络库为例 。
net网络库
如果你认为net只是一个简单的网络库实现 。那么就大错特错了 。还包括谷歌自己牵头实现的一些协议(比如QUIC等) 。它里面涉及的知识点 。包含了主机解析 。cookies 。网络改变探测 。SSL 。资源缓存 。ftp 。HTTP 。OCSP实现 。代理 (SOCKS和HTTP) 配置 。解析 。QUIC(Quick UDP Internet Connection 。是谷歌制定的一种基于UDP的低时延的互联网传输层协议) 。socket池 。SPDY 。WebSockets……每一项分开来写成一本厚厚的书都不成问题 。具体我们可以参考下图 。github上关于net模块的代码结构 。
文章插图
浏览器内核到底有多复杂呢?也许只有你真正参与其中才会发现 。这也是为什么强大如微软的企业也放弃了浏览器内核的维护 。转投chromium怀抱 。因为需要投入的人力、物力、财力简直太恐怖了 。而且还不见好 。
本文为作者“一个程序员的奋斗史”问答原创文章 。未经允许转载、抄袭必究!
其他观点:
文章插图
文章插图
文章插图
文章插图
无论多么复杂的代码都是由一个个功能模块构成的 。在有好的架构情况下把每个功能模块的代码完成好才能让整体完美的结合在一起 。再复杂的代码也是基本功能模块完成的 。不要看到了大量的代码就觉得距离太遥远 。任何一行优秀的代码也是遵守基本的编程规范情况下完成的 。希望能帮到你 。
推荐阅读
- 大家觉得现在的财经大V推荐的股票靠谱吗?有被骗过吗?
- 世界十大名花排行榜 世界上最美的十大名花
- 男人都会有处女情结吗?
- 用谷歌搜索的人多吗?为什么?
- 10首让人热血沸腾的歌 励志又燃的歌曲推荐
- 谷歌搜索引擎和百度搜索引擎的信息量差距有多大?
- 但愿人长久千里共婵娟的婵娟的意思是什么 带你了解是什么意思
- 为什么谷歌浏览器人们用的越来越少?
- 卤鸡蛋的制作方法和步骤 自制五香卤鸡蛋的做法