Mozilla Firefox团队最近发布了Firefox 52.该版本包括了一些典型的bug修复和优化列表,但是一个很大的改进是包含了WebAssembly支持。 WebAssembly社区设置的野心有可能改变人们如何使用设备和网络。
听起来令人印象深刻,对吧?
现在,WebAssembly的大多数文档都是面向开发人员的,所以普通的终端用户感觉不到这种技术将会带来的变化。
WebAssembly是一种预编译的二进制汇编格式,适用于可在浏览器或其外部运行的应用程序。 与Flash不同(它需要一个早已过期的死亡),WebAssembly将内置到浏览器中,所以没有插件是必要的,有点像JavaScript默认支持。
如果你对编译过程不了解,让我解释一下。 你的典型桌面程序,例如Firefox,是一堆从源代码编译的0和1。 该源代码可以用C或C ++语言编写。 但是你的PC(一般)不直接运行C / C ++代码; 它必须编译成那些0和1。
WebAssembly是一种通用于所有计算机的二进制汇编语言(或中间的一和零)。 当PC下载WebAssembly代码时,它说:“哦,我明白这一点。 这是一个程序。“然后,PC可以组合代码(汇编器是一种编译器),同时对架构和操作系统进行优化。
大多数Web应用程序现在使用JavaScript在浏览器中运行。 JavaScript已经存在了很长时间,由于浏览器优化和硬件改进,它得到了相当快。 但是总有结束的时候,JavaScript仍然是一种解释型语言,这意味着计算机(或电话)必须逐行解析和执行代码。 这可能产生一些严重的开销,尤其是在移动设备上。
如果你曾经想过为什么一个网页可能在电脑上加载和工作正常,但在完全相同的Wi-Fi网络,但是在手机上慢,这种延迟可能是罪魁祸首。 这是应用程序生态系统存在的一个重要原因:通过运行针对设备而不是网络优化的代码,您将获得更快的执行速度和更快的体验。
把编译的二进制代码看作是设备的母语。 解释的代码就像一门外语。 CPU必须更努力地理解解释的代码。
换句话说,将新闻故事中的德语单词“Lastkraftwagen”看作源代码。 翻译成英语,“truck”是WebAssembly汇编代码。 这是一个通用的术语,所有英语的人都能理解。 现在考虑英语中的区域差异作为每个设备的特定架构和优化:在你从伦敦的朋友大声阅读故事之前,你可能会说“卡车”而不是“卡车”,因为故事涉及商业中型车 ,而不是皮卡车。 虽然有些程序集可能仍然需要在设备本身,WebAssembly保存您的电脑,不必去每一个单词的Google翻译。
如果你认为,“编译是一个很耗时的操作,”你是对的。 但你可能没有在你的网络浏览器中运行它们。 WebAssembly为应用程序提供了更快,“速度更快”的分布格式。
由于WebAssembly是在本地机器上运行的二进制代码,这意味着访问Photoshop Web应用程序可以像桌面Photoshop应用程序一样灵敏和快速。 WebAssembly团队甚至希望看到AAA游戏标题在浏览器中运行。 Unity和Unreal Engine 4引擎都已在WebAssembly中工作。 Epic有一个短的WebAssembly演示,你可以查看,如果你有Firefox 52的运行。 你可以玩坦克游戏! WebAssembly也在Unity引擎中运行。
Epic的Zen Garden是一个有趣的演示,但它显示了游戏和应用程序可能运行的方式:资源(纹理等)花费的时间比WebAssembly代码本身更长。 对于游戏,这意味着你仍然可能需要在本地下载和保存资产文件,但可执行文件可以下载并运行相对较快。
对于Linux用户,这是一个好消息。 切换到Linux(或Chrome操作系统)的一个主要块是,用户有一些他们依赖工作或游戏(我称之为“关键任务”应用程序)的应用程序。 获得一个专业的摄影师,其工作流设置在Adobe Lightroom切换到Linux或Chome操作系统是一个非快速,因为Adobe创意程序不支持在Linux上。 使用WebAssembly,Adobe可以通过编译到WebAssembly而不是Windows或Mac OS来部署像Lightroom这样的创意程序。
WebAssembly还承诺应用程序的安全性,因为每个WebAssembly应用程序都在其自己的沙箱中运行。 这意味着WebAssembly不能更改系统上的任何内容,无法通过API或某种其他故意的方法访问。 换句话说,如果一个WebAssembly应用程序是恶意的,它不应该能够损害您的系统。 (但是,您提供给它的任何信息仍然可能会受到影响。)
考虑到像Ubuntu的snap和Fedora的Flatpak这样的软件包格式,WebAssembly有可能支配两者。 也就是说,如果开发人员采用该格式并开始部署它。
网友评论