原文: 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. FTP服务器的搭建与安全配置

    FTP可以说是Internet上使用非常广泛的一种通讯协议了.它工作在OSI模型的第7层,是TCP/IP的一种具体应用.FTP采用基于TCP的可靠连接:监听21端口来等待控制连接请求,当连接建立后,采 ...

  2. Spring IOC 和 AOP概述

    IoC(控制反转,(Inversion of Control):本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IoC容器,Spring的IoC容器主要使用DI方 ...

  3. 开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用

    SLD概述 SLD(OpenGIS® Styled Layer Descriptor):图层样式注记.其当前版本是1.1.0.SLD是一种描述地图图层样式的标准,一般用于WMS中的图层符号化. 说白了 ...

  4. 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 4、创建数据上下文和数据实体模型

    说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dodu ...

  5. Oracle数据库01

    常用函数 COUNT(*):统计所有的数据量,没有过滤功能 COUNT(字段):统计出指定字段不为null的数据量,有过滤功能 COUNT(DISTINCT 字段):统计指定字段不为空并且去掉重复数据 ...

  6. CF79D Password

    题目链接 题意:给定长度为n的0/1序列,初始值都为0.你每次可以在给定的l个长度中的\(a_i\)并将序列中长度为\(a_i\)的部分取反.使得最终状态为\(x_1\)~\(x_k\),求最少取反次 ...

  7. 如何到python模块路径linux

    执行命令whereis python即可显示出python相关的所有的路径,包括可执行文件路径,安装路径等,该方法适用于大部分类似的场景抄自百度知道

  8. [科普] 借助 everything 扩展教你屏蔽网址或转发网址

    教你屏蔽网址或转发网址 万恶之源 为什么写这篇文章,俺觉得大家应该是有这个需(bai)求(du)的.只是不知道如何操作... 一.屏蔽网址 1.借助系统自带防火墙 (不推荐) Linux 下有 ipt ...

  9. 【性能测试】jmeter的坑(1)——如何在多网卡情况下正确连接

    问题现象: 性能测试时,使用的服务器配置了双网卡,windows客户机配置了四网卡,坑爹的配置,内外网的隔离,导致在使用jmeter进行分布式测试的时候总是连接失败. 原因分析: Jmeter采用了r ...

  10. TSL协议升级导致的问题:caught when processing request: Received fatal alert: protocol_version

    近日,公司升级TSL协议,禁用TSL1.0,导致原本好好的https接口,报以下错误: 2019-03-05 15:43:29 [org.apache.commons.httpclient.HttpM ...