什么是WebAssembly(Wasm)?

WebAssembly是什么?

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和Rust是紧密相关联的。WebAssembly是基于堆栈的虚拟机的二进制指令格式,它被设计为编程语言的可移植编译目标。目前很多语言都已经将 WebAssembly 作为它的编译目标了,但是不同的语言编译的成熟度不同。目前最高成熟度的语言有几个:C/C++/Rust。

目前对于WebAssembly来说的最佳选择还是Rust。因为Mozilla同时全力在推 WebAssembly 和 Rust(WebAssembly 标准是由Mozilla主导的,同时Rust也诞生于Mozilla)。

WebAssembly和JavaScript

WebAssembly 的出现是否会取代 JavaScript?
参考URL: https://www.zhihu.com/question/322007706

提到WebAssembly大家很自然的会想到JavaScript,WebAssembly并不是JavaScript的替代,二者可以协同工作,通过使用WebAssembly的JavaScript API,把WebAssembly模块加载到一个JavaScript应用中并且在两者之间共享功能。

WebAssembly优势

  • 快速高效:WebAssembly被设计为针对Size和Load Time进行优化的格式,可以在各个硬件平台上以native speed运行;
  • 安全性:WebAssembly是运行在沙盒内的,甚至可以和当前的Java虚拟机共享一套环境,并且也遵守浏览器各种跨域不跨域的规章制度;
  • 开放性:WebAssembly开放标准,不受任何一家厂商控制,并且被设计为可以和Java API和Context交互。

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可以实现一些高性能组件。
比如:编码工具,图像音频处理,数据分析等。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值