WebAssembly影响未来WEB技术

简介: WebAssembly(缩写为 Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式, Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部署客户端和服务器应用程序,它可能会终结所知道的互联网上的隐私和安全。

WebAssembly(缩写为 Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式, Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部署客户端和服务器应用程序,它可能会终结所知道的互联网上的隐私和安全。

WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。—— MDN Web Docs

WebAssembly 之前

每一项新技术的诞生都是为了解决一些现有的问题,WebAssembly 的出现是为了解决网络问题。

如今,前端应用程序变得越来越重,功能也变得更加复杂,除了逻辑复杂、代码量大之外,还有一个原因是语言本身的缺陷。Brendan Eich 创造了被广泛使用的解释性编程语言 JavaScript ,使得它的发展历史在一定程度上变成了一个填补漏洞的历史。

JavaScript 主要有两个问题。

性能

与其他解释型编程语言类似,JavaScript 很慢。至少在2008年之前,速度很慢。

与其他解释型编程语言类似,JavaScript的速度很慢。至少在2008年之前,它是非常缓慢的。随着越来越多的web应用程序采用JavaScript,浏览器之间的性能大战开始了。JIT(Just-In-Time compiler)的引入是为了解决JavaScript的性能问题。谷歌的V8和微软的 ChakraCore 都带有JIT(甚至是多阶段JIT)。

image.png

由于其设计为动态语言,因此有几类优化可供其他编程语言使用,但即使是最快和最现代的 JavaScript 运行时也无法使用,例如,提前(AOT)优化编译策略。

鲁棒性和可维护性

使用 JavaScript 等动态编程语言,可以快速构建项目,但当项目规模变大时,就会变得一团糟。

静态类型可以更轻松地处理复杂系统,它可以帮助在编译时更快地捕获类型不匹配,并使其更易于优化。

例如,在动态类型编程语言中,如果不小心输入,可能会做一些奇怪的事情,比如尝试将数字1与字符串 "2" 相加,结果得到字符串 "12" 。但这种类型的错误应该在开发阶段捕捉,简单地说,动态类型具有“先写后调试”的风格,而静态类型涉及“先思考后写”的风格。

要在 JavaScript 中添加静态类型,有以下几种方法:

  • TypeScript:建立在JavaScript之上,添加了静态类型定义。
  • ReasonPureScript:翻译程序将其他静态类型语言(如OCaml/Haskell)编译成JavaScript。
  • asm.js(已弃用):定义一个严格的JavaScript子集,可以用作编译器的低层次、高效的目标语言——特别是允许编译器进行预先(AOT)优化编译。可以使用一个源到源的编译器,比如Emscripten,将静态类型语言(比如C)编译成 asm.js。

WebAssembly 简介

虽然 asm.js 在性能上比原始 JavaScript 有所改进,但它本质上仍然是 JavaScript 。在某些情况下,生成的文件将变得太大,并为需要频繁传输的代码带来瓶颈。

由于  asm.js  代码主要用作编译目标,不会手动编辑它,因此有必要发明一种二进制格式,这基本上是 WebAssembly 的起源:

WebAssembly (缩写Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式,Wasm是为编程语言设计的可移植编译目标,支持在web上部署客户机和服务器应用程序。——WebAssembly的网站

WebAssembly 于 2015 年首次发布,第一个演示是运行 Unity 的“愤怒的机器人”。可以在 WebAssembly Games 上玩更多部署在 WebAssembly 上的游戏。另一个经典演示是 Mozilla 的 Zen Garden (Epic)。

2019 年 12 月 5 日,WebAssembly 成为继 HTML、CSS 和 JavaScript 之后的官方“Web第四语言”。

WebAssembly 是一种不同于 JavaScript 的语言,但它并不是用来替代 JavaScript 的。相反,它被设计成与 JavaScript 互补并协同工作,允许web开发人员充分利用两种语言的优点。

可以通过 WebAssembly 重用嵌入在更大的 JavaScript/HTML 应用程序中的现有代码,这可以是任何东西,从简单的助手库到面向计算的任务卸载。

image.png

WebAssembly 能做什么?

WebAssembly 提供了卓越的性能,这意味着网站运行速度几乎可以和浏览器以外的普通软件一样快。它允许浏览器运行过去由于性能问题而无法使用的软件和游戏,它将使复杂的 WebVR 体验成为可能。

发现非常有趣的 WebAssembly 应用程序之一是 Microsoft 的 Blazor。微软所做的基本上是将他们的整个 .NET 平台移植到 WebAssembly 并在上面添加一个 UI 库。

WebAssembly 尝试

在 WebAssembly 中,有两种常用的文件格式,这两种格式可以相互转换。:

  • .wat :一种基于 S 表达式的文本格式和一种设计用于在文本编辑器、浏览器开发工具等中公开的中间形式。
  • .wasm :一种可以被 WebAssembly 的虚拟机读取和运行的二进制格式。

如果只是在尝试 WebAssembly,可以使用 WasmExplorer 来输入一些 C/C++ 代码。可以将 C/C++/Rust 或其他源代码转换为 .wat 格式,然后将 .wat 格式汇编为 .wasm

目前,大多数 Web 浏览器已经支持 WebAssembly,可以尝试打开浏览器的控制台并输入如下输入:WebAssembly.compile

对于初学者,最好的教程是官方文档,可以选择最熟悉的编程语言,编译成WASM格式。

wasmtime 是 WebAssembly 的独立运行时,wasmer 不仅是一个运行时,而且支持使用超轻量级容器。

WebAssembly 的未来

WebAssembly 还有许多功能正在开发或处于提案阶段,尽管现在还不完整,但未来它会影响客户端 Web 开发、桌面应用程序、服务器端功能、遗留现代化、游戏、无服务器等领域。


相关文章
|
2月前
|
机器学习/深度学习 JavaScript 前端开发
深入探索WebAssembly:提升Web应用的性能
【10月更文挑战第15天】深入探索WebAssembly:提升Web应用的性能
70 3
|
23天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
31 6
|
29天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
42 3
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
63 1
|
1月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
75 2
|
23天前
|
机器学习/深度学习 编解码 JavaScript
探索WebAssembly:加速Web应用性能的神奇引擎
探索WebAssembly:加速Web应用性能的神奇引擎
|
1月前
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
1月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
1月前
|
JavaScript 前端开发 开发者
探索WebAssembly:加速Web应用的未来
探索WebAssembly:加速Web应用的未来
|
1月前
|
机器学习/深度学习 JavaScript 前端开发
WebAssembly:提升Web应用性能的新技术
WebAssembly:提升Web应用性能的新技术
45 0
下一篇
DataWorks