智能体刷屏的背后,是 AI 应用拐点的来临?AICon 北京站议程重磅公布,50+ 硬核分享不容错过 了解详情
写点什么

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

  • 2015-06-24
  • 本文字数:1305 字

    阅读完需:约 4 分钟

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

2015-06-24 04:4916124
用户头像

发布了 1008 篇内容, 共 417.9 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

出自阿里P8的Java面试神册,涵盖30个技术栈扛住面试官的狂轰乱炸

程序知音

Java 面试 程序员面试 后端技术 Java八股文

视频分析StreamEye Studio

贾献华

7月月更

阿里云发布《升舱-数据仓库升级交付标准化》白皮书

Lily

精品方案|海泰云密码应用服务解决方案 打造安全合规的云上应用

电子信息发烧客

C#/VB.NET在 Word 中插入水印

Geek_249eec

C# word 添加水印 VB.NET

如何提高LED显示屏清晰度?

Dylan

LED显示屏 led显示屏厂家

云生态大会,随“峰”而来!

天翼云开发者社区

超实用转型攻略!《2022央国企云原生落地实用指南》重磅发布(附下载链接)

York

云原生 系统架构 数字化转型 信创 国资委中央企业

用 emoji 学安全上网小常识?看 Google 新玩法

极客天地

Web3 基础设施 NFTScan 浏览器对区块链行业的价值与意义

NFT Research

区块链 Web3.0

算法题每日一练---第3天:一步之遥

知心宝贝

算法 前端 后端 云开发 7月月更

TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2

PingCAP

TiDB TiDB 源码解读

AntDB数据库产品入选中国信通院《全球数据库产业图谱(2022)》

亚信AntDB数据库

国产数据库

数仓之数据质量建设

五分钟学大数据

数据仓库 数据治理 数据质量 7月月更

什么?多商户系统不适配 APP?这不就来了么!

CRMEB

iOS中内存管理(ARC)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

在 Excel 内使用 ODBC 消费 SAP ABAP CDS view

汪子熙

JDBC SAP abap ODBC 7月月更

C++课程设计:图书管理系统【附源码】

攻城狮杰森

c++ 7月月更 课程设计 图书管理系统

Wallys/3×3/2×2 MIMO/ 802.11ac/ Mini PCIe /2,4GHz / 5GHz QCA 9880

wallys-wifi6

CentOS 8里的这个功能,天翼云SFS弹性文件校准了

天翼云开发者社区

Centos 7 CentOS 8 弹性文件

最右×微帧,高质量的HEIF图片编码压缩技术

微帧Visionular

计算机视觉 HEIF 视频编解码 图片压缩 WebP

【LeetCode】数位和相等数对的最大和Java题解

Albert

LeetCode 7月月更

图的基本定义和相关概念(一)

乔乔

7月月更

Wallys/DR882/QCA9882/ AC/AN MiniPCIE/2×2.4GHz 2x5GHz MT7915 MT7975

wallys-wifi6

QCA9880 QCA9882 MT7915 MT7975 /

KusionStack 开源|Kusion 模型库和工具链的探索实践

SOFAStack

编程语言 开源项目 运维技术 自主研发 项目共建

RKE vs. RKE2:对比两种 Kubernetes 发行版

Rancher

Kubernetes k8s rancher

解密方舟的高性能内存回收技术——HPP GC

HarmonyOS开发者

HarmonyOS

绿色低碳天翼云,数字经济新引擎!

天翼云开发者社区

云计算 大数据 AI 数字化转型

云原生平台,让边缘应用玩出花!

天翼云开发者社区

CDN 云平台

IReport导出PDF字体加粗失效

源字节1号

软件开发 前端开发 后端开发 小程序开发

开源demo| ARCall 小程序开源示例发布

anyRTC开发者

小程序 音视频 视频通话 开源demo ARCall

WebAssembly:面向Web的通用二进制和文本格式_JavaScript_Abel Avram_InfoQ精选文章