木子见解-为何说WebAssembly会影响每一个开发者?
当前位置:首页 - 言载于网 - 木子见解-为何说WebAssembly会影响每一个开发者?

WebAssembly 是由Google, Microsoft, Mozilla,Apple等几家大公司合作发起的一个关于面向Web的通用二进制和文本格式的项目。WebAssembly 将是一个编译型语言。它的设计目标描述了一个美好的未来:

在浏览器之争中,Chrome凭借JavaScript的卓越性能取得了市场主导地位,然而由于JavaScript的无类型特性,导致其运行时消耗大量的性能做为代价,这也是JavaScript的瓶颈之一。WebAssembly旨在解决这一问题。本文从WebAssembly的起源到开发实践对其做全面探究,帮助开发者对WebAssembly有全面的了解。

有人预测 WebAssembly 至少在某种程度上,它将改变Web生态,到底结果如何,让我们用时间来证明一切吧。下面接着说

(上图是 WebAssembly 在各主流浏览器的运行速度对比。可以看出 WebAssembly 的运行速度和 JavaScript 相差不大。)

从今的 JavaScript 是 Web 世界的汇编语言,然而我相信它在不久的将来会和 WebAssembly 并存。这并不意味着WebAssmbly是为了取代 JavaScript而生。

过去几年,我们看到越来越多的项目问世,它们试图通过开发编译程序,将其他语言代码转化为 JavaScript,以此让开发者克服 JavaScript自身存在的一些短板。其中一些项目专注于给编程语言增加新的功能,比如微软的 TypeScript和Google的Dart,或是加快 JavaScript的执行速度,例如 Mozilla 的 asm.js 项目和Google的PNaCI。

WebAssembly 是一种新的字节码格式。它的缩写是".wasm",.wasm 为文件名后缀,是一种新的底层安全的二进制语法。它被定义为“精简、加载时间短的格式和执行模型”,并且被设计为 Web 多编程语言目标文件格式。 这意味着浏览器端的性能会得到极大提升,它也使得我们能够实现一个底层构建模块的集合,例如,强类型和块级作用域。

最好不要把WebAssembly仅仅当做一门编程语言,实际上它更像是一个编译器。

最近我看到了阮一峰在写《asm.js 和 Emscripten 入门教程》。个人认为 webassembly 相较于 asm.js 的优势主要是涉及到性能方面。根据 WebAssembly FAQ 的描述:在移动设备上,对于很大的代码库,asm.js 仅仅解析就需要花费20-40秒,而实验显示 WebAssembly 的加载速度 比 asm.js 快了20倍,这主要是因为相比解析 asm.js 代码,JavaScript 引擎破译二进制格式的速度要快得多。

WebAssembly对于JS来说绝对是一个巨大的改进。WebAssembly 对于浏览器来说也有着非同一般的意义。 支持WebAssembly的浏览器可以识别二进制格式的文本,它有能力编译比JS文本小得多的二进制包。 这将给web应用带来类似与本地应用的性能体验!

包括 Google,Microsoft,Mozilla 只是这一长串名单中的少数几家公司。项目带头人们发起了WebAssembly Community Group这一社区,这个团队的愿景是“在一种新的,轻量的 web 编码格式的基础上,促进浏览器厂商们的合作.” 不过,WebAssembly 项目还只是刚刚启动,虽然它有一个美妙的开头,但在 WebAssembly 成为一个大众认可的 web 标准之前,它还有很长的路要走。

由于主要的浏览器厂商对WebAssembly支持表现积极,并且都在实现WebAssembly的各项功能,因此在Web中高性能需求的应用例如在线游戏、音乐、视频流、AR/VR、平台模拟、虚拟机、远程桌面、压缩及加密等都能够获得接近于原生的性能。相信WebAssembly将会开创Web的新时代。

本文 暂无 评论

Top

分享: