技术开发 频道

谷歌砍掉PNaCl,全面拥抱WebAssembly

   【IT168 编译】6月5日,Google宣布Chrome将不再PNaCl,它将和其他浏览器一起拥抱WebAssembly。至此,WebAssembly获得了所有浏览器的一致支持, Chrome 和 Firefox 已经原生支持 WebAssembly,Edge 和 Safari 也在预览版中加入了 WebAssembly 支持。

谷歌砍掉PNaCl,全面拥抱WebAssembly

  原生应用程序是为了编译正在运行的系统本地机器代码,而原生应用程序的目的就是在硬件上尽可能快的运行,浏览器在采用JavaScript以来速度提升了很多,但是和本地代码比起来仍有差距。为了使得Chrome能够运行原生应用程序,2011年Google发布了NaCl(Native Client),它支持编译的代码在沙箱中运行,允许原生应用程序在浏览器中全速运行。

  NaCl推出之后,很快就得到了一大票程序员的青睐,但是最初的狂热过去之后,有一个很大的问题就凸显出来了。NaCl只适用于Chrome,其他浏览器并不能采用。于是,2013年就推出了改良版NACl——PNaCl,它使用便携式中间代码,允许原生应用程序在一系列硬件上运行的浏览器中运行。

  技术的发展,让擅长PNaCl的程序员或者是擅长C / C ++的Web程序员都认为“Only works on Chrome"这个标签是一个很大的桎梏。

  浏览器制造商Mozilla尤其表示,浏览器中的本地代码不仅是一个错误,也是一种老式思维。浏览器的未来应该是HTML 5或者是相似的技术。事实上,他们对于在浏览器中运行Web App并没有提供一个好的解决方案,所以渐渐程序员对PNaCl失望了,在加上asm.js和WebAssembly的出现,让谷歌开始审视PNaCl。

  去年,PNaCl团队分散,但开源项目仍在继续。但是Google官方已经十分确定的表态,PNaCl已经被彻底抛弃了:在 2018 年第一季度移除对 PNaCl 的支持, WebAssembly 生态系统更适合高性能 Web 应用。Google 发布了帮助开发者将现有的 PNaC 实现迁移到 Web 平台的指南。

  但是,有意思的是ChromeOS仍然支持PNaCl,它是Chromebook运行本地代码的唯一方法。这对于Google来说,并不是一个好的现象,因为在不久的将来,它就会被淘汰,毕竟没有人会愿意编写一个PNaCl程序只能在ChromeOS上运行。

  如何迁移到WebAssembly?你只需要PPAPI更改为标准Web API,就可以将C / C ++代码重新编译为WebAssembly。谷歌也号召开发者迁移到WebAssembly:随着WebAssembly的推出,Web平台已经为在所有浏览器中运行的新一代快速而沉浸式的Web应用程序奠定了基础。我们很期待看到开发者建设的下一步!

  这一消息发出之后,很多程序员对于迁移到基于JavaSCript表示了不满,虽然他们提出了很多理性的理由,如WebAssembly速度太慢,但是我们都知道他们之所以不喜欢WebAssembly,是因为他们对JavaScript就带有敌意。而WebAssembly存在的最大问题是不够成熟,它还需要一段时间才能成长到和PNaCl比肩的程度。但是谷歌这一举动,无疑让我们对跨浏览器语言追赶原生应用程序的速度充满信息。

0
相关文章