WebAssembly 简介

Web 技术一直在飞速的发展。WebAssembly 就是 Web 最新发展带来的产物。

WebAssembly 被称为是一种浏览器的字节码技术。有人说 WebAssembly 的发明,相当于再一次发明了 flash、Silverlight,甚至是 java。

本文将主要介绍 WebAssembly 的一些特点,包含什么是 WebAssembly?WebAssembly 的特性?等。

什么是 WebAssembly?

WebAssembly 是除了 JavaScript 以外,另一种可以在浏览器中执行的编程语言。所以当人们说 WebAssembly 更快的时候,一般来讲是与 JavaScript 相比而言的。

Just-in-time 编译器

JavaScript 于 1995 年问世,它的设计初衷并不是为了执行起来快,在前 10 个年头,它的执行速度也确实不快。

紧接着,浏览器市场竞争开始激烈起来。

被人们广为传播的“性能大战”在 2008 年打响。许多浏览器引入了 Just-in-time 编译器,也叫 JIT。基于 JIT 的模式,JavaScript 代码的运行渐渐变快。

正是由于这些 JIT 的引入,使得 JavaScript 的性能达到了一个转折点,JS 代码执行速度快了 10 倍。

JavaScript 性能

随着性能的提升,JavaScript 可以应用到以前根本没有想到过的领域,比如用于后端开发的 Node.js。性能的提升使得 JavaScript 的应用范围得到很大的扩展。

现在通过 WebAssembly,我们很有可能正处于第二个拐点。

JavaScript 性能

随着 WebAssembly 普及,WebAssembly 更快、执行效率更高的特点也会越来越受欢迎。

WebAssembly 解决的问题:

  • JavaScript:性能不够理想,以及语言本身的一堆坑
  • Flash:私有技术(而且漏洞一堆),并且是纯二进制格式
  • Silverlight:私有技术,并且是纯二进制格式
  • 各种插件(Plug-in):安全性问题,平台兼容问题

WebAssembly 的特点

前面我们说了,WebAssembly 更快,效率更高是因为它是二进制格式的。这种二进制格式就是 WebAssembly 的一大特点。

和 WebAssembly 一样,flash 也是二进制格式,但是 flash 漏洞太多,还是私有技术。Flash 在设计的时候也没考虑过操作 DOM 的问题,这样一来搜索引擎和通用的文本分析方案(例如浏览器的搜索功能)对它束手无策。而搜索引擎几乎已经成为 Web 内容提供的中心——它们提供到任何地方的超链接。于是,在 JavaScript 引擎的效率已经相当可观的今天,Flash 不灵了。

flash 的问题并不是二进制的问题。二进制格式有它的好处:相对文本格式更轻量,在互联网上传输的成本更低,解释效率也更高。所以 WebAssembly 最终选择了一个妥协的方案:它要求一个程序段具有两种可互相转换的等价表达:二进制格式和文本格式。这二者可理解为类似机器码和汇编的关系:传输和运行的时候使用二进制格式,展现给人的时候用文本格式。这样就同时保留了二者的优点。当然了,为了安全性,要求以文本格式传输的程序不可被执行。

WebAssembly 的第二个特点就是它不是一项私有技术。

Flash 的诸多漏洞让人们意识到:让一个公司的私有技术主导 Web 并不是什么好主意。新的硬件平台?对不起,不支持。有 bug?等人家更新吧,你什么也干不了。高发热?对不起,你别无选择。没有权限安装浏览器插件?抱歉,你就别用了。不仅仅是 Flash,Silverlight,ActiveX 插件等也是同样的境地。而这些问题对 WebAssembly 来说将不复存在。

第三个特点就是安全性更高了。相比传统的浏览器插件(Plug-in),WebAssembly 的权限设计更好。传统的插件权力太大,它在后台执行了什么,用户根本不知道。而 WebAssembly 再使用某一项权限时都会得到用户的同意才能进行。

WebAssembly 告诉我们,用户应当有权利掌控他们的设备。

WebAssembly 的第四个特点是性能高。WebAssembly 将是一个编译型语言。它的设计目标描述了一个美好的未来:

定义一个可移植,体积紧凑,加载迅捷的二进制格式为编译目标,而此二进制格式文件将可以在各种平台(包括移动设备和物联网设备)上被编译,然后发挥通用的硬件性能以原生应用的速度运行。

总结

如果 WebAssembly 不出现,则 HTML,CSS,JavaScript 必将成为前端界的事实汇编语言:人们不断创造更多的(他们认为更好的)对这三者的高级(high-level)描述形式,并最后以这三者作为“编译目标”。WebAssembly 的出现则提供了一个更好的选择:接近原生的运算效率,开源、兼容性好、平台覆盖广的标准,以及可以借此机会抛弃 JavaScript 的历史遗留问题。

WebAssembly 简介

: » WebAssembly 简介

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/251279.html

(0)
上一篇 2022年5月2日
下一篇 2022年5月2日

相关推荐

发表回复

登录后才能评论