WebAssembly能否代替JavaScript,成为程序员的新宠?

图0:WebAssembly能否代替JavaScript,成为程序员的新宠?

多年来,JavaScript已经成为Web 应用程序开发者的首选语言,但是近日发生的一件事,让我们不得不重新审视JavaScript的霸主地位。

最近,Firefox 52成为了第一个支持WebAssembly的浏览器。Firefox为何抛弃了有二十年历史的JavaScript,而选用WebAssembly呢?本文就将为大家深度分析WebAssembly是否会取代JavaScript,成为Web应用程序的首选编程语言。

JavaScript

要谈JavaScript的起源,就免不了提起浏览器大战,当时微软凭借Windows系统捆绑Internet Explorer的先天优势击溃Netscape后,两大巨头就此进入了长达数年的静默期,JavaScript就是在这样的情况下被构想出来的的,当时的浏览器之王,Netscape Navigator创始人Marc Andreessen认为Netscape需要一种“glue language”来支持HTML,让Web设计师和兼职程序员可以很容易地使用它来组装诸如图像和插件之类的组件,且代码是可以直接写在网页标记中。除此之外微软的步步紧逼也迫使Andreessen不得不聘请Brendan Eich,及早将Scheme编程语言嵌入到Netscape Navigator中。

1995年,JavaScript以Mocha为名开发,并于9月在Netscape Navigator 2.0的测试版中首次发布,当时被称为LiveScript,12月,在Netscape Navigator 2.0 beta 3中部署时被重命名为JavaScript 。

虽然Netscape Navigator在Chrome、Internet Explorer和Firefox等多款浏览器的围追堵截中最终落败,但是JavaScript却推动了网页的发展,并一直被沿用至今。

WebAssembly

2015年6月17日,来自Google、Microsoft和Mozilla的工程师宣布了他们正在进行的一项跨浏览器技术叫做WebAssembly,2016年3月15日,谷歌、微软和Mozilla都宣布在其最新浏览器中添加对全新WebAssembly文件格式的支持。WebAssembly(简称Wasm)是一种用于浏览器中客户端脚本的低级编程语言,可由C/C++等语言编译而来,也可以支持其他源语言,如Rust。

与JavaScript相比,它的资历尚浅,能够流行其实很大程度上依赖C和C++。

JavaScript vs WebAssembly

相信在几年前,应该没有人想到有一个Web应用程序是没有JavaScript的,当然现在JavaScript仍是大部分Web开发人员青睐的编程语言。但Firefox选择WebAssembly作为开发本机应用程序和浏览器插件的首选编码语言,是不是意味着Web开发的转折点已经到来了。

为什么WebAssembly优于JavaScript?

如果要选一个WebAssembly对抗JavaScript的利器,那一定就是它的速度,这也是Firefox选择信任WebAssembly的原因,Mozilla工程师Lin Clark认为这会成为一个拐点,基于浏览器的应用程序的速度会显著增加。

智能手机的发展让越来越多的用户加入到互联网中,但是由于服务提供商的不断变化,各个地方的互联网速度都是不一样的,所以这就需要速度快的的Web应用程序和快速加载浏览器插件。

Mozilla平台工程部主管David Byrant显然已经是WebAssembly的狂饭了,他在博客中专门写了一篇帖子解释为什么Firefox会选择WebAssembly而不是JavaScript。

Byrant认为:WebAssemly将为计算机辅助设计,视频和图像编辑以及科学可视化等领域提供惊人的视频游戏和高性能网络应用。随着时间的推移,许多现有的生产力应用程序(例如电子邮件,社交网络,文字处理)和JavaScript框架都可能通过使用WebAssembly而显着减少加载时间,并同时提高运行性能。

与其他插件在浏览器中实现近原生性能的方法不同,WebAssembly完全在Web平台中运行。这意味着开发人员在CPU密集型计算中(例如压缩,人脸检测,物理学)中将WebAssembly库集成到现有的Web应用程序中,从而慢慢减少JavaScript的密集型工作量。

WebAssembly是否代替JavaScript,成为程序员的新宠?

虽然现在预测JavaScript还为时过早,但是技术圈是一个动态的世界,一直在不断的演变,随着VR和AR技术的发展,下一个技术革命可能已经到来,浏览器也需要突破原来的网页加载速度,WebAssembly就被视为是一种可能的解决方案。

JavaScript最初是作为一种轻量级语言,用于相当简单的脚本,而使用WebAssembly编写的Web应用程序可以以接近原生的速度运行,与JavaScript写入的所有代码都会在到达浏览器之前提前解析和编译不同,浏览器只看到低级别的machine-ready指令,所以可以快速验证,优化和运行。

Byrant说,WebAssembly可以改变Web开发人员的意义以及Web的基本能力。使用WebAssembly和附带的工具可以将用C / C ++语言编写的程序移植到Web,并以接近原生的性能运行。 我们期望,随着WebAssembly持续发展,你还可以将它应用于其它常用的移动应用程序编程语言,如Java,Swift和C#。

除了Firefox,Google也在其Chrome浏览器和Chromium项目中拥抱了WebAssembly,所以作为一个程序员,你应该对WebAssembly引起足够的重视,未来快速加载Web应用程序的需求肯定会增加。

你也许感兴趣的:

共有 1 条讨论

  1. wasm不是为了替代js,而是为了增强js在某些场景下的性能,wasm写的东西仍需要js去调用

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注