记住这两兄弟,他们可能是 Web 史上最大的错误
这是「进击的Coder」的第 637 篇技术分享
作者:刘欣
来源:码农翻身
“
阅读本文大概需要 5 分钟。
”上个世纪 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 应用程序的成本可能令人望而却步。
浏览器需要一种能力:
1.执行一种特殊的代码,要能达到接近本机的速度
2.一定得安全,可以在安全沙盒中运行,还有有浏览器的同源策略和权限策略。
3.和浏览器中的其他 Web 技术(如 JavaScript)协作。
这就是浏览器的汇编语言:Web Assembly(WASM)。
不过,这次不再用两兄弟时代的插件了,而是在浏览器中内置了一个虚拟机 (VM),既能执行 JavaScript,又能执行 WASM。
JavaScript 负责简单的交互,WASM 负责高性能的部分。两者密切配合,完美。
并且,各种编程语言都可以写代码,编译成 WASM:
以后你想用某个应用,只需要浏览器中输入网址,立刻开始使用,不用安装。
和别人分享也非常的方便,发个 link 就行了。
4
不知道 ActiveX 和 Applet 两兄弟看到此处会何感想,他们最早提出了在 Web 中运行桌面应用,绝对是先驱,就是过于超前,成先烈了。
但是 Web 技术还是沿着他们俩的愿景走了下去,浏览器的能力越来越强,也许真的有一天,所有的应用都被搬到了浏览器中。
那将是一场伟大的变革!
End
崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!
内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍
扫码购买
好文和朋友一起看~
标签:
相关文章
-
无相关信息