5

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

 2 years ago
source link: https://os.51cto.com/article/710500.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

记住这两兄弟,他们可能是Web史上最大的错误
作者:码农翻身刘欣 2022-06-01 10:20:26
以后大家只要打开浏览器,就可以听音乐、看视频、玩游戏、办公、做图像处理......桌面能做的一切,浏览器都可以干。 具体该怎么实现呢?
81e0c1f13d0991466fe6724909eeb588052fc4.jpg

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

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

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

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

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

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

具体该怎么实现呢? 

图片

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

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

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

图片

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

图片

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

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

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

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

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

图片

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

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

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

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

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

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

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

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

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

图片

于是,JavaScript火了。 

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

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

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

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

图片

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

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

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

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

图片

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

浏览器需要一种能力:

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

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

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

图片

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

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

图片

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

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

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

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

那将是一场伟大的变革!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK