WASM是什么?带你了解WebAssembly的前世今生
参考URL: http://www.mabiji.com/webassembly/wasm.html
WebAssembly是什么?WebAssembly即WASM, WebAssembly是一种新的编码格式并且可以在浏览器中运行,WASM可以与JavaScript并存,WASM更类似一种低级的汇编语言。
WebAssembly(又名wasm)是一种高效的,低级别的编程语言。 它让我们能够使用JavaScript以外的语言(例如C,C ++,Rust或其他)编写程序,然后将其编译成WebAssembly,进而生成一个加载和执行速度非常快的Web应用程序。
Wasm 具有运行高效、内存安全、无未定义行为和平台独立等特点,经过了编译器和标准化团队多年耕耘,目前已经有了成熟的社区。
WebAssembly和Rust是紧密相关联的。WebAssembly是基于堆栈的虚拟机的二进制指令格式,它被设计为编程语言的可移植编译目标。目前很多语言都已经将 WebAssembly 作为它的编译目标了,但是不同的语言编译的成熟度不同。目前最高成熟度的语言有几个:C/C++/Rust。
目前对于WebAssembly来说的最佳选择还是Rust。因为Mozilla同时全力在推 WebAssembly 和 Rust(WebAssembly 标准是由Mozilla主导的,同时Rust也诞生于Mozilla)。
WebAssembly 的出现是否会取代 JavaScript?
参考URL: https://www.zhihu.com/question/322007706
提到WebAssembly大家很自然的会想到JavaScript,WebAssembly并不是JavaScript的替代,二者可以协同工作,通过使用WebAssembly的JavaScript API,把WebAssembly模块加载到一个JavaScript应用中并且在两者之间共享功能。
WebAssembly优势
wasm只是一个字节码标准,人们可以基于这个标准开发高级语言。类似jvm一样,很多语言可以编译成jvm字节码,从而使用jvm平台。wasm出现的意义是使用其他语言开发web app成为可能。之前也有其他语言,比如typescript开发,但是都是把代码编译成JavaScript运行,本质上还是使用的JavaScript. 个人认为JavaScript以后会作为浏览器默认支持的高级语言一直存在下去,但是wasm出现可以使基于web的开发工具出现百花齐放的状态,web端可能出现类似Java这样适合大型项目的静态类型语言。以后浏览器可能成为第二操作系统,大部分的用户应用都是云端app,少部分应用才需要安装到本地操作系统。
**WebAssembly 目前还不具备 IO 以及 DOM 访问能力。**跟外接的交互只有实现函数并导出,以及在函数实现中调用导入的函数。如果在浏览器或者 Node.js 中运行一定需要借助 JavaScript 才行。
WebAssembly虽然可以实现一套VM环境,但是我认为不会取代JS,WASM应该作为JS的扩展而存在,由于JS的性能有限WASM可以实现一些高性能组件。
比如:编码工具,图像音频处理,数据分析等。