WebAssembly-- 目标及核心优势
引言
我们在前两篇文章中分别介绍了 WebAssembly 语言标准制定和其演进历程(WebAssembly初探),并且通过分析 WebAssembly 的执行过程和内存模型原理,简单初识 WebAssembly 高效的性能及优势(WebAssembly--执行与内存模型),今天我们来更全面地认识下 WebAssembly 设计的主要目标也是其核心优势,以便在未来的工作中能充分发挥 WebAssembly 的作用帮助我们构建出更完美用户体验的产品。
WebAssembly 目标
编辑
WebAssembly 的目标是为 Web 提供一种高效、便携、安全的编译格式。它旨在为那些需要高性能的应用(如游戏、音频和视频处理、物理模拟、加密等)提供支持,同时也为其他语言提供了一种在 Web 上运行的可能。
WebAssembly 的出现并不意味着 JavaScript 的终结,它们并非竞争关系,而是互补关系。JavaScript 擅长处理高级应用逻辑,而 WebAssembly 则更适合处理计算密集型任务。通过将它们结合起来,我们可以在 Web 上构建出更强大、更复杂的应用。
WebAssembly 核心优势
性能 :WebAssembly 是一个轻量的二进制格式,提供了友好的高效冷启动,轻量部署能力。 WebAssembly 作为静态强类型低级语言,通过利用常见的硬件能力,WebAssembly 代码在不同平台上能够以接近本地速度运行。
跨平台、可移植 : WebAssembly 是一个可移植、体积小、语言和平台无关的二进制格式,开发者可以使用各种自身熟悉的语言开发,生成的 WebAssembly 作为平台无关的应用发布形式;发布的 WebAssembly 模块可以在众多平台上运行,例如浏览器、后端、终端设备、移动设备、IoT 等都有广阔的应用场景。
安全性:WebAssembly 运行在一个独立的沙箱中,一方面可以避免了数据的泄露和侧信道攻击,另一方面恶意代码只能影响自身沙箱环境而不会影响应用本身。此外,WebAssembly 还提供了一种内存安全的编程模型,可有效防止特定类型的安全漏洞。WebAssembly 在网络安全设计原则是与其他网络技术和谐共处并保持向后兼容,WebAssembly 被限制运行在一个安全的沙箱执行环境中,像其他网络代码一样,它遵循浏览器的同源策略和授权策略。
标准化 : W3C WebAssembly Working Group 制定相关的标准,可以保证标准的通用性和各厂商的兼容性。
工程化 : WebAssembly 制定了标准化的中间指令格式,开发者可以使用多种不同的开发语言,如 C/C++,Java/Kotlin, TypeScript, Rust 等,利用工具链可以转化为统一的 WebAssembly 的中间指令格式,方便开发者低成本集成进自己的应用
结语
WebAssembly 的设计初衷和优势可以使其他语言和技术栈的同学可以在不同场景发挥其优势,为应用开发者提供了不一样的技术架构选型的可能性。
对于 JS、Python 等脚本语言来说,为了追求更高的性能,可以将性能热点模块通过 WebAssembly 来实现,从而获取高性能执行的收益。对于 Rust 开发者来说,利用语言的特性可以获取高性能和高安全性,但为了让开发者获得更低的开发门槛,可以编译为 WebAssembly 模块提供给类似 JavaScript、Python 等脚本语言使用,降低开发者门槛;对于 C++ 开发者来说,可以获得高性能,但 C++ 不完备的安全性机制可能会使应用存在安全隐患,可以将其编译为 WebAssembly 在轻量级安全沙箱中运行,从而使得安全机制做到开箱即用(安全性保障需要安全领域的专业支持,门槛很高)。
微信公众号首发:欢迎关注、转发、收藏,感谢努力奔向成功的你。
版权声明: 本文为 InfoQ 作者【江湖修行】的原创文章。
原文链接:【http://xie.infoq.cn/article/2f7ff186e70236c338600b6ee】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论