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

系统 浏览器
以后大家只要打开浏览器,就可以听音乐、看视频、玩游戏、办公、做图像处理......桌面能做的一切,浏览器都可以干。 具体该怎么实现呢?

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

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

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

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

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

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

具体该怎么实现呢? 

插件!!

图片

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

1

不过,两兄弟走了不同的道路,老大绑定了微软,改名为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。

2

转折点是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能做的事情也越来越复杂,很多应用都可以在浏览器中运行了。

3

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

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

图片

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

浏览器需要一种能力:

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

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

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

图片

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

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

图片


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

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

4

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

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

那将是一场伟大的变革!

责任编辑:赵宁宁 来源: 码农翻身
相关推荐

2023-01-08 13:07:46

2017-05-22 23:41:04

2019-12-17 10:14:18

设计计算机CPU

2019-08-16 10:23:17

云计算云平台技术

2017-10-17 12:43:17

前端CSS布局

2022-02-21 16:00:39

Web3中心化互联网

2020-04-22 10:33:29

GMIC带货

2017-06-26 10:18:43

2021-08-27 10:14:22

机器学习工具手册人工智能

2020-05-17 16:06:47

ICMPIP协议网络协议

2021-07-14 08:31:08

Java反射机制Class类

2012-08-30 09:44:27

2022-07-12 15:23:38

勒索软件网络攻击

2013-05-02 13:52:07

2019-04-28 11:06:01

Hbase架构程序员

2024-01-03 16:28:46

WinDbg命令调试

2020-11-02 10:50:21

爬虫Python网络

2021-03-18 10:57:42

物联网IoT

2018-10-25 09:37:02

Docker入门容器

2018-03-07 09:35:17

区块链
点赞
收藏

51CTO技术栈公众号