当前位置: 首页 > 科技观察

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

时间:2023-03-20 00:33:57 科技观察

1990年代,有两兄弟看到互联网风起云涌,即将爆发,决定加入其中,做一个职业。两人仔细研究了当时互联网的入口,也就是浏览器,发现了一个重大问题:浏览器能做的太有限,只能展示文字+图片的网页,而且在大多数执行一点JavaScript。与功能强大、界面美观、交互性强的桌面应用相比,这真是简单又可怜!兄弟二人想:桌面应用能不能“搬”到浏览器上?未来,只要打开浏览器,就可以听音乐、看视频、玩游戏、办公、做图像处理……桌面能做的,浏览器都能做。如何实现?插入!!给浏览器安装一个插件,然后从网上下载代码执行。1不过两兄弟走的路不同,老大绑定微软,更名为ActiveX。老二去了Sun,调戏Java,改名Applet。他们的目的果然达到了。如果您不相信我,请查看这些应用程序。它们看起来像一个网页,但它们完全是桌面应用程序(在1990年代)。再这样下去,就没有Vue和ReactJS这样的东西了。前端工程师使用的编程语言不会是JavaScript,而是C#/VB.NET/Java。糟糕的是,两兄弟都有致命的缺陷。两兄弟中,老大ActiveX拥有最强的访问计算机所有资源的能力——这是程序员喜欢的能力,却是用户害怕的能力。想一想,你打开一个包含ActiveX控件的网站,根据IE的提示从网上下载ActiveX到浏览器中。结果,ActiveX控件删除了硬盘上的文件。不可怕吗?甚至还有一些流氓ActiveX控件依赖于你的浏览器,怎么驱也赶不走,比如3721,所以如果是公司自己开发的ActiveX控件,运行在局域网中,这是个不错的选择。当涉及到广泛、野蛮的Internet时,ActiveX是可怕的。第二个小程序要聪明得多。他声称自己在Java沙盒中运行,根本无法访问本地计算机的资源。但是Applet需要JavaRuntimeEnvironment(JRE),它又大又复杂。如果浏览器没有JRE,需要从网上下载,速度很慢。Java的GUI界面也很丑,吓跑了无数人。另外ActiveX和Applet都不是开放标准,得不到其他大牌的支持。两兄弟逐渐淡出了大家的视野,第一次在浏览器中运行复杂应用的努力也以失败告终。网页依旧平淡无奇,在浏览器中运行的依然是HTML+CSS,还有一点简单的JavaScript。2.转折点是Google的GMail和GoogleMaps。大家发现了:靠,JavaScript也能做出这么好的交互应用。用什么Java、VB、C++!于是,JavaScript开始流行起来。浏览器要执行的JavaScript越来越多,负担越来越重,响应也越来越慢。谷歌又拿起了两兄弟的理想:Web不仅仅是一个网页,而是一个应用程序。但是,这个应用不再是一个封闭的ActiveX、Applet,而是一个开放的JavaScript、HTML、CSS。谷歌还专门为这个应用打造了一款浏览器Chrome,它使用V8引擎将JavaScript编译成类Java的字节码以高效执行。JavaScript一路飙升,jQuery、Angular、React、Vue等框架如雨后春笋般涌现。相应的,Web能做的事情也越来越复杂,很多应用程序都可以在浏览器中运行。3但是JavaScript毕竟是一门动态语言,无论怎么优化,在面对性能要求高的应用程序时还是力不从心。3D游戏、CAD、软件模拟/仿真、虚拟和增强现实、计算机视觉、图像/视频编辑等应用程序以及许多其他需要原生性能的应用程序都难以在Web上运行。此外,下载、解析和编译非常大的JavaScript应用程序的成本可能高得令人望而却步。浏览器需要一个能力:执行一段特殊的代码,必须是安全的,达到接近本机的速度,可以运行在安全沙箱中,有浏览器的同源策略和权限策略。与浏览器中的JavaScript等其他Web技术协作。这就是浏览器的汇编语言:WebAssembly(WASM)。不过这一次,不再使用两兄弟时代的插件,而是在浏览器中内置了一个虚拟机(VM),可以同时执行JavaScript和WASM。JavaScript负责简单的交互,WASM负责高性能的部分。两者配合紧密,堪称完美。而且,可以用各种编程语言编写代码,编译成WASM:以后如果要使用一个应用,只需要在浏览器中输入网址,就可以立即开始使用,无需安装。分享给别人也很方便,发个链接就可以了。4.不知道ActiveX和Applet这两兄弟看到这里会作何感想。他们首先提出在Web中运行桌面应用程序。他们绝对是先行者,但他们太先进了。但Web技术依然伴随着两人的愿景在前行,浏览器的能力也越来越强。也许有一天,所有的应用程序都会被转移到浏览器上。那将是一个巨大的改变!