随着互联网的发展,越来越多的应用程序借助 JavaScript 迁移到了 Web 上,但人们也注意到下载、解析、编译 JavaScript 会消耗大量时间,导致页面加载时间过长,最终 , 用户流失。
为了解决这些问题,Mozilla 的工程师 Alon Zakai 在 2012 年提出了 Asm.js,经过几年的发展,终于在 2015 年进化为 WebAssembly。
WebAssembly(缩写为 Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式。 Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部署客户端和服务器应用程序。
这是 webassembly.org 上 WebAssembly 的官方定义。 从这个定义我们可以看出WebAssembly是一种二进制指令格式。 但是WebAssembly Text Format也经常被称为WebAssembly,而实际上,这种文本格式是一种编程语言。
官宣后,WebAssembly 得到了飞速的发展。 到 2017 年 11 月,Mozilla 宣布包括 Chrome、Firefox、Safari 等所有主流浏览器都已支持 WebAssembly。 并且根据 2021 年 7 月的数据,94% 的正在使用的浏览器都支持 WebAssembly。
在得到浏览器的广泛支持后,一些重量级的应用逐渐移植到Web上,包括:
- Google Earth — 一种主要基于卫星图像呈现地球 3D 表示的软件。
- AutoCAD — 一种计算机辅助设计和制图软件应用程序。 它是一个在带有内部图形控制器的微型计算机上运行的桌面应用程序。
- Doom——一款由第一人称射击游戏组成的视频游戏
- TensorFlow — 一个用于机器学习和人工智能的免费开源软件库。
这些案例也表明 WebAssembly 已经达到了它的设计目标——支持在网络上部署桌面应用程序。
WebAssembly 的快速发展源于其特殊的特性:
- 接近原生的性能:基准测试显示它只比原生代码慢 10%。
- WebAssembly 体积小,加载速度快,是一种紧凑的二进制格式,通常比等效的 Javascript 代码小得多。
- 安全可靠,WebAssembly 代码在沙箱中运行,默认情况下不允许外部访问。
- 支持多种编程语言:WebAssembly 不限制用户用于开发的语言。 只要有相应的编译器,任何语言都可以编译成 WebAssembly。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。