记住这两兄弟,他们可能是Web史上最大的错误

记住这两兄弟,他们可能是Web史上最大的错误

上个世纪90年代,有两个兄弟,他们看到互联网风起云涌,马上就要爆发,决定投身其中,干出一番事业。

他们俩仔细研究了当时互联网的入口,即浏览器,发现了一个重大的问题:

浏览器能做的事情太有限,就是展示文字+图片的网页,最多执行一点儿可怜的JavaScript。

相比于功能强大、界面漂亮,有极强交互的桌面应用程序,这实在是太简陋、太差劲了!

两兄弟想到:能不能把桌面应用程序“搬”到浏览器中呢?

以后大家只要打开浏览器,就可以听音乐、看视频、玩游戏、办公、做图像处理……桌面能做的一切,浏览器都可以干。 

具体该怎么实现呢? 

插件!!

记住这两兄弟,他们可能是Web史上最大的错误

给浏览器装插件,然后从网络上下载代码来执行。

1

不过,两兄弟走了不同的道路,老大绑定了微软,改名为ActiveX。

老二去了Sun,和Java眉来眼去,改名为Applet。

记住这两兄弟,他们可能是Web史上最大的错误

他们的目的也确实达到了,不信你看看这些应用,哪里像一个网页,完全就是桌面应用(90年代)嘛。

记住这两兄弟,他们可能是Web史上最大的错误记住这两兄弟,他们可能是Web史上最大的错误

如果这么发展下去,就没有后来的Vue,ReactJS什么事情了。

前端工程师用的编程语言不会是JavaScript,而是C#/VB.NET/Java。

坏就坏在两兄弟有着致命的缺陷。

两兄弟当中,老大ActiveX的能力最强,能访问计算机的所有资源——这是程序员喜欢的能力,却是用户害怕的能力。

想想看,你打开一个包含ActiveX控件的网站,按照IE的提示把ActiveX从网络上下载到浏览器,结果这个ActiveX控件把你硬盘上的文件删除了,吓人不?

记住这两兄弟,他们可能是Web史上最大的错误记住这两兄弟,他们可能是Web史上最大的错误

更有些流氓ActiveX控件,赖到你浏览器中,怎么赶都赶不走,如3721。

所以,如果是公司自己开发的ActiveX控件,运行在局域网中,这是个不错的选择。

如果一旦进入广阔的、野蛮的互联网,ActiveX就太吓人了。

老二Applet则聪明得多,他宣称自己运行在Java沙箱中,根本没法访问本地计算机的资源。

但是Applet需要Java运行环境(JRE),JRE又大又复杂,如果浏览器没有JRE,需要网络下载,非常缓慢。

Java的GUI界面也非常丑陋,吓跑了无数人。

再加上ActiveX和Applet不是开放标准,没法获得其他大佬的支持,两兄弟慢慢淡出了大家的视野,在浏览器中运行复杂应用的第一次努力失败了。

Web页面继续平淡无奇,运行在浏览器中的依然是HTML+CSS,和一点儿简单的JavaScript。

2

转折点是Google的GMail, Google Maps,大家发现:卧槽,用JavaScript也能做出交互这么良好的应用啊,还用啥Java,用啥VB, 用啥C++啊! 

记住这两兄弟,他们可能是Web史上最大的错误

于是,JavaScript火了。 

浏览器要执行的JavaScript越来越多,负担越来越重,响应越来越慢。

Google又把两兄弟的理想给捡了起来:Web不仅仅是网页,而是应用。

只不过,此应用再也不是封闭的ActiveX, Applet,而是开放的JavaScript、HTML、CSS。

Google还为这种应用专门打造了一个浏览器Chrome,用V8引擎把JavaScript编译成类似Java的字节码,高效率执行。

记住这两兄弟,他们可能是Web史上最大的错误

JavaScript一路狂飙,jQuery、Angular、React、Vue等框架如雨后春笋冒出。

相应地,Web能做的事情也越来越复杂,很多应用都可以在浏览器中运行了。

3

但是JavaScript毕竟是个动态语言,无论如何优化,面对性能要求很高的应用时,还是力不从心。

例如3D 游戏、CAD、软件模拟/仿真、虚拟和增强现实、计算机视觉、图像/视频编辑以及许多其他需要本机性能的应用,在Web中运行是非常吃力的。

记住这两兄弟,他们可能是Web史上最大的错误

此外,下载、解析和编译非常大的 JavaScript 应用程序的成本可能令人望而却步。

浏览器需要一种能力:

  • 执行一种特殊的代码,要能达到接近本机的速度
  • 一定得安全,可以在安全沙盒中运行,还有有浏览器的同源策略和权限策略。
  • 和浏览器中的其他Web技术(如JavaScript)协作。

这就是浏览器的汇编语言:Web Assembly(WASM)。

不过,这次不再用两兄弟时代的插件了,而是在浏览器中内置了一个虚拟机(VM),既能执行JavaScript,又能执行WASM。

记住这两兄弟,他们可能是Web史上最大的错误

JavaScript负责简单的交互,WASM负责高性能的部分。两者密切配合,完美。

并且,各种编程语言都可以写代码,编译成WASM:

记住这两兄弟,他们可能是Web史上最大的错误

以后你想用某个应用,只需要浏览器中输入网址,立刻开始使用,不用安装。

和别人分享也非常的方便,发个link就行了。  

4

不知道ActiveX和Applet两兄弟看到此处会何感想,他们最早提出了在Web中运行桌面应用,绝对是先驱,就是过于超前,成先烈了。

但是Web技术还是沿着他们俩的愿景走了下去,浏览器的能力越来越强,也许真的有一天,所有的应用都被搬到了浏览器中。

那将是一场伟大的变革!

© 版权声明

相关文章