为什么Web赢得了远程应用程序的空间而X却没有呢?


19

X Window System已有25年的历史,它在昨天(15日)生日。

您可能已经知道,它最重要的功能之一就是将服务器端和客户端分开,这是Microsoft,Apple或Wayland的窗口系统所没有的。

早在过去(对措词不清表示抱歉),由于服务器和客户端之间的这种分离,许多人认为X在其他制作窗口的方法中将占主导地位,从而允许应用程序在用户单击并在其上键入内容时在其他位置的服务器上运行在家里拥有电脑。

这种用法显然仍然存在,但充其量是被边缘化的。当我们编写和使用在服务器上运行的程序时,我们几乎总是将Web与html / css / js一起使用。

为什么网络赢了,而X没有赢?用于网络的技术(称为html / css / js)是一团糟。结合所有后端框架(Rails,Django和所有后端框架),它确实是一个可以穿越的丛林。Web仍然凭借创造力和进步而蓬勃发展,而远程X应用程序却没有。


6
两者甚至无法遥不可及。X服务器连接允许我运行一个远程应用程序,并在本地查看它的GUI,这与允许我将远程资源加载到本地客户端中完全不同。
马丁·彼得

3
我不同意。当我将Web客户端(浏览器)连接到服务器(本地或远程)时,我可以查看我的(Web)应用程序的GUI。就像我可以通过X会话查看应用程序的GUI一样。
马丁·约瑟夫森

4
尝试编写X11程序并将其与HTML页面进行比较-还比较所需的带宽。此外,WWW并没有替代X11,而是替代了Gopher。

2
Pieters:当然,页面是在客户端上呈现的,而JS在客户端上运行,但这仅是技术性。通常,代码在服务器端运行(php,java,.net,python,ruby等)。实际上,它们都是应用程序在服务器上运行并在客户端上显示的界面。X和Web以不同的方式进行操作,但这就是其要旨。
马丁·约瑟夫森

14
由于该技术尚未通过成人娱乐业的验证,因此是该技术主流采用所必需的步骤(这是一种奇怪的说法,即裸体女性的图片无法在X系统上足够快地变得可用)。
dasblinkenlight 2012年

Answers:


22

现在看来,它是完全显而易见的,而且是基本的,但是万维网的杀手级创新是超链接。即使X并非在调制解调器链接上完全无法使用,它也无法通过单击在全新服务器上启动全新进程的方式,将妨碍其在这种用例中的采用。


1
这很可能是正确的答案。另外,Web客户端也可以在Apple和Microsoft OS上运行。
马丁·约瑟夫森

该超链接不是万维网的创新。它曾经被实施过很多次,例如在Apple的Hypercard中,它是80年代和90年代流行的程序,与Web浏览器有着许多不可思议的相似之处。超文本和超链接的概念可以追溯到60年代,当时是Xanadu项目,在蒂姆·伯纳斯·李(Tim Berners-Lee)最终于90年代初在欧洲核子研究组织(CERN)最终创建了自己的基于网络的超文本实现之前,超文本和超链接的概念已经以多种格式实现了很多次。
Charles Salvia 2012年

3
@CharlesSalvia:HTML超链接的突破归功于URL。特别是它的通用方面:全球性,只有足够的中央权限才能工作,并且与一种特定的媒体类型或技术无关。您以前的技术远未普及。
MSalters 2012年

17

因为X要求您具有CS学历才能编写应用程序。虽然Web要求您具有键入的能力(甚至不是)。

特别是在Web只是html的早期。您可以在10分钟内打开一个终端并建立一个有效的显示,然后通过即时反馈进行交互式改进。如此低的准入门槛刺激了用户的大量使用。另一方面,即使对于有经验的程序员,构建X-Server应用程序也不是一件容易的事。

从功能上讲,Web已经成为X应用程序的直接竞争对手,并提供了类似GUI的能力已经花了10年的时间。随着时间的流逝,此功能已添加到语言堆栈中,使开发人员可以先掌握一套功能,然后再添加一套。因此,技术复杂性的这种逐步扩展保持了较低的标准(对于已经在该领域中并且有很多人的人)。现在进入该领域比10年前要困难得多,但是仍然有可能,并且网络的即时反馈使学习变得更加令人满意(人类需要快速满足才能增强自己的动力)。

成本是另一个驱动因素。学习足够的编程技能以开发X服务器的实际成本是巨大的。另外,用于运行您的应用程序的服务器的可用性也增加了成本。学习编写HTML实际上并不能使“ Hello World”页面正常运行,互联网服务提供商免费提供了托管服务,以激发您建立Web连接的机会。这样您就可以免费练习。当您最终需要企业托管时,托管公司的可用性已经增加,并且费用一直相对便宜。


1
您假设要编写用于X上的应用程序,您需要了解X api。但是就像您不需要了解HTTP才能编写Web应用程序一样,您也不需要了解X即可编写在X下运行的应用程序。只是在顶部有一个GTK库。比学习html,css,js和服务器端语言更容易。其要点是:正如您不需要编写http服务器来发布网站一样,您也不需要编写X服务器来为X应用程序提供服务。
马丁·约瑟夫森

我不同意你在那里的分析。尽管您的观点是正确的,但是现在编写现代Web应用程序几乎和十年前编写X应用程序一样复杂。编写X-Application仍然不是一件容易的事。就像编写Windows应用程序一样。远远超出任何没有丰富编程经验的人的能力。另一方面,建立HTML页面很简单,可以在10分钟内完成(即使是初学者也可以)。从而导致快速增强和快速实验的能力。这使其进入的门槛更低。
马丁·约克

网络建立好之后,GTK才可用。
user16764 2012年

@ user16764:那不是真的。我在1997年使用过GTK(不知道它们何时开始,但在此之前)。当时,网络(如HTML / HTTP)可能已经启动,但是建立得还不错。我的意思是Web浏览器只是在92年才被带入主流(我第一次看到它)。X在此之前还有其他几个可用的窗口管理器。我记得使用过twm(我相信是tom的窗口管理器)和另一个稍高一点的级别(我忘记了),但是有90种(太多)可供选择(太多)了(我认为在那之前可用)。
马丁·约克

@LokiAstari:您正在混淆窗口管理器和GUI库。虽然存在一定的重叠(GNOME / Gtk,KDE / Qt),但是它们肯定是不相同的。即使有了窗口管理器,您仍然会感到痛苦。
MSalters 2012年

11

答案是“采用许多技术是出于任意历史或社会政治原因,而不是技术原因。” 对于给定问题的最佳解决方案并不总是成为主导技术。(实际上,它很少这样做。)

在2012年,使用HTTP服务器创建与桌面应用程序相当的交互式应用程序时,HTTP和X之间的比较很有趣。事后看来,X可能是开发丰富的,交互式网络部署的应用程序的更好技术。类似交互式桌面的应用程序不能很好地映射到诸如HTTP之类的无状态,面向文档的技术,并且这种不匹配在历史上一直导致创建状态的各种变通方法(黑客),例如cookie,会话等。

但是HTTP的最初目的并不是要开发有状态的类似于桌面的应用程序。它是要检索文档并显示信息 -可以链接到也可以立即显示的其他文档的信息。链接文档收集的想法可以追溯到1960年代,即西奥多·尼尔森(Theodore Nelson)的Xanadu项目 ”。Web应该是Nelson的超文本概念的实现,超文本是试图将印刷的页面(如百科全书或报纸)进行计算机化处理,允许用户单击一下即可将其从一篇文章迅速“跳到另一篇”。

这个想法的许多迭代都来了又去了,例如Apple的Hypercard,它实现了超文本/超链接的概念,但从未部署在网络上。万维网是CERN对超文本概念的基于网络的实现,它之所以兴起,是因为蒂姆·伯纳斯·李(Tim Berners-Lee)免费发布了其浏览器代码库,并允许其他人对其进行试验。这最终导致了Marc Andreesen的Mosaic浏览器,即Netscape的前身。剩下的就是历史。


但是...与许多技术一样,新的可能性开始出现,以至于HTTP或超文本的原始设计者并没有考虑太多。网络开始商业化,人们开始开发具有状态交互性的网站,例如购物车和登录名。越来越明显的是,HTTP的无状态且面向文档的特性不适用于类似于桌面的应用程序。但是到那时,为时已晚。每个人都已经在使用HTTP。因此,今天我们到了这里,各种骇人听闻的AJAX应用程序都竭尽所能,假装它们是桌面应用程序。


3

这些技术现在可能会尝试解决类似的问题,但是他们肯定过去没有。

当前的HTML堆栈随着时间的推移从真正简单的文本文档传输,到几乎没有脚本的“可视”文档演变为功能齐全的应用程序平台。

在HTML开始的时候,没有人梦想着连接到远程计算机并在其中运行图形应用程序。只有在互联网获得更好的延迟和吞吐量之后,这才有可能。但是在那时,HTML已经存在了。每个人都知道这是使客户和用户访问在远程计算机上运行的图形应用程序的方法。

与每个“免费”系统一样,这次变得无法“重置”整个事情并重新开始做得更好。这就是为什么我们需要关闭并使用HTML / CSS / JS,只希望支持它的人们最终能够明智地将其与多年的遗产一起掩埋。

这回答了“为什么网络赢了?”的问题。没有任何竞争,网络在一切开始之前就赢了。


1
在HTML开始的时候,已经有了NSCA HTTP服务器及其SGI的服务器端计算。大多数应用程序都提供文本,但我记得一个能够渲染B / W自定义地图的人,它是Google地图的祖先。
mouviciel 2012年

图像地图的确可以追溯到上个世纪最后十年的早期。
MSalters 2012年

1

我同意,原则上两者是相似的。如果您问“如何在服务器上运行代码但在远程客户端上提供可视化?”这个问题,则可以合理地认为独立团队可以提出两种解决方案。

我怀疑一个原因在某些方面比另一个更受欢迎的原因是因为两者从完全不同的角度处理同一问题。X是解决技术问题的技术解决方案,但是Web的发展是解决社会问题的需要-我如何才能从远程服务器上获取资源并将其显示在本地计算机上,并以一种简单的方式进行方便吗?

网络之所以“成功”,是因为它解决了更多人遇到的问题。想想一个汽车类比:豪华轿车和卡车表面上都解决了相同的问题:如何将物品从一个地方运输到另一个地方。

卡车解决了从字面上如何从A点拖到B点的技术难题,并且它工作得很好。乘用车的发展是为了人们在旅途中要舒适,载人更多,粪便更少。这成为需要便利的必要条件。因此,随着时间的流逝,乘用车的数量远远超过了道路上的皮卡车的数量(根据对芝加哥交通的观察,我猜想也许德克萨斯州会有所不同吗?

因此,就像汽车/卡车的类比一样,Web和X11都可以解决相同的技术问题,但是它们完全是分开的。


1

您正在将苹果与梨进行比较。X窗口用于将屏幕内容的呈现分离到本地客户端中,该客户端可以通过细线连接到内容源。它实际上是计算模型从“玻璃tty”时代到高质量图形领域的延伸。X起源于PC还很薄弱的时代,而大多数实际计算都是在Unix或大型机上进行的。这个想法是利用相对便宜的“ X终端”和相对较慢的网络的力量,以图形方式提供这些重要的计算资源。

在Mac和PC上无法获得成功的原因是,它们的开发始终是由在本地应用程序(包括游戏,编辑器和商业图形)中支持高端图形的愿望所驱动的。支持网络常驻应用程序是最近的事。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.