BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

WebAssembly:面向Web的通用二进制和文本格式

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2015年6月25日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Mozilla、谷歌、微软和苹果已经决定开发一种面向Web的二进制格式。该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中。

几年前,我们在InfoQ上讨论过面向Web的通用字节码的优点(见《讨论:我们是否需要一种通用的Web字节码?》),概括了创建这样一种格式的困难。其中提及的一个主要问题是主要的浏览器制造商无法达成一致:Mozilla在推asm.js,谷歌支持PNaCI,苹果在开发FLTJIT,而微软没有对其中的任何一种表示出兴趣。但现在,情况已经发生了变化。所有四个主要的浏览器供应商一致同意创建一种面向Web的二进制格式WebAssembly或WASM/wasm。有人将其称为字节码,但wasm不是传统意义上的字节码,Brendan Eich指出:“WebAssembly实际上是一个经过压缩的AST编码,而不是一堆字节码。小声点,不要告诉任何人。如果愿意,你还是可以称它为字节码。”

迄今为止,这个项目一直是秘密进行的,但现在,它已经在GitHub上和W3C社区组里公开。WebAssembly的初衷是,让使用JavaScript之外的语言编写的程序可以运行在服务器、移动或IoT设备上的浏览器和其它JS代理中。这种格式最终将取代asm.js和PNaCI。根据项目设计文档(尚未最终确定),WASM使用二进制是因为它“可以提供更高的效率:它减少了下载文件大小,并加快了解码速度,因此,即使很大的代码库也可以快速启动。”WASM有一个相对应的文本格式,可以供调试器或其它面向开发者的工具使用。这些工具应该能够从一种格式转换成另外一种格式,而且不会丢失信息。

WebAssembly实现工作已经迈出了一个临时的第一步:将该格式转换成相应的asm.js代码,那样,它就可以运行在支持asm.js的浏览器上:Firefox、Edge、Chrome。已经有一个以此为目的构建的polyfill原型,初步结果显示,压缩后的二进制格式比asm.js压缩后要小20-30%,wasm解码速度比解析相应的asm.js源代码要快大约23倍。WASM稍后将获得浏览器VM的原生支持。

WebAssembly将首先把C/C++程序带给Web,但稍后会通过增强实现对其它任何语言的支持。一个LLVM后端和clang移植已经在计划上。WASM将运行在“和JavaScript相同的语义空间”,支持从/到JavaScript的异步调用,访问所有的浏览器API,并且遵循JavaScript程序所遵循的安全策略。客户端应用程序可以完全用WASM编写,也可以用WASM实现业务逻辑,而用HTML/CSS/JavaScript实现UI。

紧跟着JavaScript的第二十个生日宣布,并且是在Ecma宣布ES6规范获最终批准的当天,WebAssembly对JavaScript而言可不是一个好消息。WASM将使得使用任何能够编译成WASM的语言编写Web代码成为可能,
JavaScript将直接与其它语言竞争。我们是否可以期待Java或C#编译成WASM呢?

WebAssembly将从开发asm.js和PNaCI的经验教训中获益,因为创建它的团队中包含了来自Mozilla和谷歌的团队。而微软和苹果的支持使它成为了一个非常有前途的项目。剩下的唯一问题是时间:通常,由多个大型公司共同开发的项目需要花费大量的时间。在这种情况下,标准化过程非常缓慢。

查看英文原文:WebAssembly: A Universal Binary and Text Format for the Web

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

typo by Chris Xue

PNaCl的最后一个字母是小写的L/l,而不是大写的I/i

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT