原文: https://tomassetti.me/introduction-to-webassembly/

WebAssembly简介:我们为什么要关心这个技术? ​​​​

在对抗js的伟大战斗中有一个新的武器,允许开发者们在提高性能和生产力同时选择他们喜欢的编程风格。这个武器就是WebAssembly,它将会掀起web开发中客户端的革命

WebAssembly,或者叫wasm,是用于浏览器端的底层字节码格式脚本。如果你为一个编程语言开发了一个编译器,其中一个选项是编译到一个目标平台,像jvm 或者.net编译你的语言到指定字节码,webAssembly使用同样的规则,当被编译成webassembly,可以在任何平台运行你的软件,换句话说,运行在所有浏览器中。

在实用性方面,webassembly是由浏览器中的js引擎开发者开发,本质上,在web领域中,它被设计成替代javascript,作为编译器的目标和翻译结果。例如,替代typescript编译成javascript,开发者可以编译成webassembly,简而言之,这不是一个新的虚拟机器,对于javascript虚拟机它是一个新的格式,可以被所有浏览器引入的格式,这样就可以利用现有的javascript资源,而不是用javascript

基本的可行性设计,已经在2017年3月设计完成,下面链接是主流浏览器支持情况
https://caniuse.com/#feat=wasm

为什么重要?

首先,webassembly格式保证在解析性能上有重大提高

webassembly这种二进制格式认为作为本地解析比javascript更快,在移动端,大量的编译代码仅仅是用来解析轻易地花掉20-40秒,所以本地解析对于提供一个好的冷负荷用户体验至关重要

注意,我们谈论的是解析性能,不是执行能行,因为许多情况下它将运行在现有的js引擎上,然而,单在解析性能上的提高将允许我们将以前无法实现的开发放在web软件上,例如,虚拟机,虚拟现实,图像识别

第一个产品用户可能是游戏引擎开发者,因为他们总是寻找最棒的性能,webassembly以前,他们最好选择是asm.js,一个很苦的技术,但是不太适用大多数游戏,我记得我试过罪名的demo Epic Citadel (已经下线) 它是使用UE引擎,实际上运行很平滑,但是下载和解析代码就要15分钟,对于需要快速的游戏来说它不够好

事实上,autodesk计划为他们的stingray游戏引擎提供支持webassembly支持,unity引擎创始人也在尝试webassembly,Rust开发者已经通过webassembly支持,在web上运行rust代码

他能为你做什么?

在更广泛的蓝图中,随着webassembly的到来,意味着在web领域,你不需要在被强制使用javascript,因为它仅仅只能跑在浏览器中,JavaScript名声不好,实际上它是一个很好的语言,可以快速编写小的脚本,问题是你被强制使用,用于所有你需要在web上运行的东西,许多大项目来说这就是一个问题

你可以使用更好版本的javascript,例如typescript,甚至新语言例如Kotlin,但是最后,他们不得不编译成javascript, 反过来,这也给JavaScript开发人员带来了问题,必须支持所有场景和所有编程风格,webassembly将改变这个,让每个人都集中精力做他们能做得更好的事情
这还不是全部,开放webassembly给所有其他平台,意味着如果你使用一种语言编写软件,编译成webassembly,你可以在.net平台上运行。实际上这将允许重复使用已有的javasxript资源,意味着你可以在产品中使用这些资源

然而这不是唯一可能,你可以创造自己的实现,根据你的需要,你可以为你的语言创造一个性能更好的编译器,你可以从头创建或者添加webassembly支持到一个现有的编译器,这样做你可以利用其他webassembly模块。

例如,你可以为dsl创造一个webassembly编译器,这种dsl语言在你的公司内部使用,让它运行在web客户端上,不需要自定义类似oracle java plug-in或者adobe flash插件

翻译:WebAssembly简介:我们为什么要关心这个技术? ​​​​的更多相关文章

  1. 20.翻译系列:Code-First中的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/migration-in-code-first.aspx EF 6 Code-First ...

  2. [翻译]PostCSS简介

    许多开发人员花时间在使用CSS的预处理器上如less,sass和stylus.这些工具已经成为Web开发的重要组成部分.写一个网站的样式,不使用嵌套,变量或混入等功能很少见.它们每个都是非常实用的,让 ...

  3. [译] QUIC Wire Layout Specification - Introduction & Overview | QUIC协议标准中文翻译(1) 简介和概述

    本文同步发布于: https://www.pengrl.com/p/33330/ ,转载请注明出处,谢谢. 目录 Introduction | 简介 Conventions and Definitio ...

  4. 转:WebGL、Asm.js和WebAssembly概念简介

    WebGL.Asm.js和WebAssembly概念简介 转:http://www.techbrood.com/zh/news/webgl/webgl%E3%80%81asm_js%E5%92%8Cw ...

  5. WebAssembly学习(一):认识WebAssembly

    WebAssembly作为一门新兴起的技术,在 JavaScript 圈非常的火!人们都在谈论它多么多么快,怎样怎样改变 Web 开发领域,被各大巨头所推广,这篇文章对其做一个简单的了解认识,本文非原 ...

  6. 通过 Serverless 加速 Blazor WebAssembly

    Blazor ❤ Serverless 我正在开发 Ant Design 的 Blazor 版本,预览页面部署在 Github Pages 上,但是加载速度很不理想,往往需要 1 分钟多钟才完成. 项 ...

  7. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

  8. Zabbix简介(第一章第一节)

    Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持. Zabbix是一个企业级的.开源的.分布式的监控套件 Zabbix可以监控网络和服务的监控 ...

  9. 翻译一篇SpiderMonkey GC的文章

    前言 这篇文章包含了对SpiderMonkey中Rooted<T>, Handle<T>的解释. 翻译自 https://developer.mozilla.org/en-US ...

随机推荐

  1. An Introduction to Text Mining using Twitter Streaming

    Text mining is the application of natural language processing techniques and analytical methods to t ...

  2. EBS常用接口表

    AP接口表: AP_INVOICES_INTERFACE AP_INVOICE_LINES_INTERFACE 涉及的请求: 应付款管理系统开放接口导入 涉及案例: 运费导AP.费用导AP PO接口表 ...

  3. .NET框架源码解读之启动CLR

    前面提到在SSCLI环境里运行.NET程序的时候,执行的命令类似java程序的执行过程,即通过clix程序解释执行.net程序.这个过程看起来跟在windows环境下执行.net程序表面上看起来不一样 ...

  4. 使用dockerfile文件创建镜像时docker build没有反应

    问题: 先 docker pull centos:7 拉取了一个官方的基础镜像,为后续创建jdk8镜像做准备,在创建如下的dockerfile文件 执行docker build -t jdk_8u19 ...

  5. .net读写xml

    XML文件 <?xml version="1.0" encoding="utf-8"?> <book> <title>web ...

  6. asp.net mvc 3 linq实现数据的增、删、改、查、

    添加数据 定义一个对象: public class Student { public int id{get; set;} public string Name{get;set;} public str ...

  7. Dapper.Contrib.Extensions问题

    Dapper.Contrib.Extensions问题 Dapper.Extension.1.0.0.1\lib\net45\Dapper.Extension.dll Dapper.Contrib.1 ...

  8. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

  9. Django的views视图系统

    老师的博客:http://www.cnblogs.com/liwenzhou/articles/8305104.html 以看老师的博客为主 一个视图函数(类),简称视图,是一个简单的Python 函 ...

  10. jzoj1792

    #include<bits/stdc++.h> using namespace std; long long a[100010],m,n; int main(){ scanf(" ...