浏览 3.8k
原文作者:Dave McAllister of F5
原文链接:深入了解 WebAssembly —— 一种新的 Web 可执行文件格式
转载来源:NGINX 官方网站
NGINX唯一中文官方社区 ,尽在 nginx.org.cn
计算技术的发展日新月异。从大型机到云 IaaS,从虚拟机到 Linux,我们不断地扩展和重塑技术。通常,这些技术变革是由于“惯常做法”不再适用于新的模式,或者实际上从一开始就不太理想。
我们从一些新兴技术中不难看出这一点。不断变化的需求会催生新的解决方案,例如虚拟机 (VM)、容器、Kubernetes 和 OpenTelemetry。只要该解决方案行之有效,人们便会纷纷采用,就像 Kubernetes 和 OpenTelemetry 一样。
最近,我采访了一些行业专家,他们预测了的三项未来可能有重大影响的技术。其中一项技术尤为值得我们深入了解:WebAssembly(通常缩写为 Wasm)。
Wasm 引起了广泛关注,因为它将浏览器语言的支持范围扩展到了 JavaScript 之外。它不是 JavaScript 的替代方案,而是万维网联盟 (W3C) 认可的第四种也是最新的官方 Web 标准开发语言(其他三种是 HTML、CSS 和 JavaScript)。
早在 2015 年,Mozilla 就开始着手制定一套新标准,将“一种可移植的、紧凑的、加载时间高效的格式和执行模型”作为 web 浏览器的编译目标。
WebAssembly 的设计初衷是允许 JavaScript 以外的其他语言在浏览器中运行。Wasm 很快就得到了浏览器厂商的青睐,所有主流浏览器都可以支持它。
大家可能还记得使用交叉编译器的时代,当时代码是针对外部环境的,通常是在控制硬件中。这些目标千差万别,这意味着交叉编译必须在生成系统和目标系统之间严格保持一致。
Wasm 的工作原理大同小异,可在广泛的平台上为定义的运行时提供二进制可执行文件。由于运行时是一种低级虚拟机(类似于 JVM),因此可嵌入到许多主机应用中。
Wasm 既是一种用于执行程序的可移植二进制代码,也是一组用于程序与其环境之间交互的接口。它没有做出任何 Web 特定假设,因此可以被广泛使用。
事实上,人们对 Wasm 的兴趣在很大程度上源于其在服务器端用例中的潜力。Cosmonic、Fermyon 和 Suborbital 等公司表明,Wasm 将影响我们从浏览器到后端应用的未来发展。
Wasm 支持多种语言,这是它备受青睐的原因之一。Wasm 几乎涵盖了所有热门语言,包括 C、C++、Go、Ruby 和 Rust 等。对其他语言的部分实现也已经支持或正在开发中。
但需要注意的是,Wasm 对特定语言的支持可能仅限于某些特定的上下文:浏览器、浏览器之外,或者甚至直接在一个系统上。因此,您必须在您想要使用 Wasm 的上下文中验证它是否支持某种语言。
WebAssembly 专注于所有浏览器都需要的几个关键特性。我们之前提及了 Wasm 的多语言特性,该特性允许浏览器扩展到多种语言。接下来我们来看看它的其他特性。
这些特性不仅让 Wasm 具有很高的性能和效率,而且还非常好用。请记住,现在 Wasm 可能并不比 JavaScript 快多少,也没有 JavaScript 多年积累的优化成果。但是,速度并不是 Wasm 获得青睐的唯一因素——大小和能够支持您所使用的语言也很重要。
对于 WebAssembly,我们有很多很棒的资源和案例。显然,从初创公司到大公司,很多公司都在使用它:
但您不必一下子就切换到 Wasm。下面都是些很好的学习资源:
WebAssembly 仍在开发中,与其他新技术一样,有些方面仍需完善。即便如此,它背后的理念仍引人注目。
我预计它将成为一项颠覆性技术,成为支持未来感知可控、随需而变的应用发展的主要力量,无论是在浏览器中还是云端。毫无疑问,WebAssembly 是您现在需要深入了解的技术之一。
NGINX唯一中文官方社区 ,尽在 nginx.org.cn
更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源:
开源社区官网:https://www.nginx.org.cn/

按点赞数排序
按时间排序
微信公众号
加入微信群