X Windows 与 Windows 95/98/NT 的比较: 无胜负之争

来源:互联网 发布:vba 数组初始化 编辑:程序博客网 时间:2024/05/01 23:09

X Windows 与 Windows 95/98/NT 的比较: 无胜负之争

作者: Paul Gregory Cooper
译: Gump

    在12月份(1998年, 译者注)的 << Linux 杂志 >> 里, Sergio Martinez 来信 寻求一篇(能尽快得到的)文章论述一下关于 X 和 Windows 95/98/NT (w95) 之间的区别--原文见下. 现在我试图回答这个问题--我记得四年前我刚开始使用 UNIX 时问过类似的问题. [在"值两美分的提示"栏目中有更多的内容, 编者注] 我试图使这篇文章面向Linux 新手, 而且由于我不是一个 X 的黑客, 也 从来都不是 W95 的黑客, 所以文中可能有一些不准确的地方, 但是我尽量体现 X 的精髓和妙处(对 w95 也一样). 我希望得到 X 专家和新手的指正.

    Sergio 问了关于 GNOME 和 KDE 的问题, 在此文的大部分视二者等同 (同时 也视所有的窗口管理器相同). 我现在需要声明, 相对 KDE 我更喜欢用 GNOME, 尽管现在正有 KDE 和 开放源代码的争论. 因此相比 KDE,我对 GNOME 更有经验. 这可能也会导致一些不准确之处.

有意见和建议请发电子邮件到: pgc@maths.warwick.ac.uk


以下是 Sergios 的来信:

    我的致信是为我的一个想法寻求快速的答复. 我现在正在使用 GNOME 桌面环境. 对于 Linux, 我相对而言是一个新手, 然而我想一篇简短的关于窗口管理器的文章 对于很多只有较少经验的读者们会有好处. 以下是一些我现在不太理解的事情:

1. 一些术语: 在 GUI, 窗口管理器(window manager), 桌面环境(desktop), 及界面 (interface)之间的区别(如果有的话). 它们和 X 窗口(windows)有什么不同?

2. 是所有的窗口管理器(象 GNOME 或 KDE 或 FVWM95) 都运行在 X 窗口之上吗?

3. 对一个应用程序来说, 所谓"GNOME 或 KDE 兼容(aware)"是什么意思? 如果程序 不是会怎么样? 你还能运行它吗?

4. GTK+ 库(在 GNOME上) 或 Troll 库(在 KDE 上)究竟是做什么用的?

5. 和提供给 Win98/95 用户的桌面环境相比, Linux (或 Unix)的历史怎么样? 尤其是, 怎样评价微软(Microsoft)通过只向用户提供一种据称是为"易用"而设计 的桌面环境?

6. 公共桌面环境(CDE)怎么样 ? 它在 Linux 用户中没有被广泛采用是否是因为 象有人所说的它是"吃资源的猪", 或者是没有开放源代码?

从这些问题出发可以写一篇具有启发性的简短的文章. 谢谢您的关注.

-- Sergio E. Martinez


    在我回答所有问题之前, 我想先对 X-windows 作个简短介绍.

    试从普通程序的角度考虑 X. 当你键入 startx 时, 所发生的就是 X 在后台运行 起来了(惊呀吧!), 并且执行 .xinitrc 文件. .xinitrc 告诉 X 一旦 X 自己启动 然后启动什么程序 -- 稍后我会详述此点. (有些系统用 .Xclients 文件替代 .xinitrc - 我将只用 .xinitrc).

    既然 X 就是一个程序, 那它做些什么呢? 概略地说, X 从命令行那里接管了屏幕 控制, 然后提供给系统以创建窗口和与之通信的能力. 基本上这就是它所做的一切. 至于窗口的描绘, 移动, 改变大小, 输入焦点等等, (也就是管理 X 所提供的窗口) 都留给了窗口管理器.

    X 的聪明之处在于采用了客户机/服务器的模型, 而且作到了网络透明. 哦, 这都是 行话 -- 究竟什么意思呢?

    当你键入 startx 时, 你是在启动 X 服务器 (X-server), 当你运行一个 X 应用 程序时, 例如 netscape, 它是 X 服务器的一个客户, X 服务器向它提供窗口. 类似 地, xterm 就是一个把命令行放到了窗口里的 X 应用程序.

    网络透明并没有太大意义如果你没有连网的话, 所以让我们假设你启动了 X 的计算机 名字叫做 fourier 并且已经连网. 现在网上任何一台计算机上的程序都可以请求 fourier 上的 X 服务器为它产生一个窗口(在fourier上), 例如, 从 fourier 你可以 telnet 到 cauchy (网上的另外一台计算机)而后运行 netscape 并且让 netscape 的窗口 出现在你的屏幕上(连接在fourier的显示器).

    事实上, 另外一种用法也可以- 一个 X 服务器可以一次连接多个屏幕(或者, 象它所 称呼的,显示) - 所有的都不同 - 并且这些屏幕甚至可以在网络的另一端. 这就回到了 X 的最初的设计目的(其中之一): 为了 X 终端, 也就是一些看起来象一台计算机而 实际上不过是一个显示器, 一些内存, 一个BIOS 和一个连到一台 UNIX 主机上的网卡 的东西. 你可以到这一页来看看如何把旧的 386/486 们转变成 X 终端. (以下是对每个具体问题的回答: --译者注)

1. 一些术语: 在 GUI, 窗口管理器(window manager), 桌面环境(desktop), 及界面 (interface)之间的区别(如果有的话). 它们和 X 窗口(windows)有什么不同?

    好, 我们用到了更多的术语 - 我希望我有这个权利;-). 一个接口是指一个软件与用户 交互的方式. Unix 命令使用一个命令行接口(CLI)而 X 应用程序则使用一个图形用户界面(GUI). 然而不同的应用程序采用不同的方法来实现 GUI, 例如在 netscape中你 选择菜单时点一下鼠标就弹出了那个菜单, 而在 ghostview 中, 你必须保持按下鼠标 才行. GNOME, KDE 和 w95想做的就是提供一致的 GUI 给所有的应用程序, 或者至少 是这些程序的共同部分, 例如菜单, 文件选择框, 窗口控制, 卷滚条, 等等. 你可以 到GUI 的荣辱厅来看一看好的和坏的 GUI 设计的例子.(在窗口环境中)

    就象前面所提到的, 窗口管理器接管 X 遗留的一切--这就是说, 控制 X 提供给它的 窗口. 窗口管理器通常提供给你许多别的能力, 而不仅仅限于移动, 缩放, 或图标化 窗口. 许多窗口管理器还会提供虚拟桌面, 任务条, 桌面主题(themes), 程序管理器, 等等. 你可以到"X 的窗口管理器"来看到包含绝大多数(如果不是全部)的窗口管理 器的列表.

    (迄今为止) 桌面环境有两个用途. 我们用'桌面'来指屏幕上的背景. GNOME, KDE, W95 和 MacOS 都提供一个背景意义的桌面, 但它们不仅仅意味着是好看的图画的画布 -- 它就象系统中的任何目录一样. 从技术上讲, 这意味着你可以把文件放在上面. 当然, 这些文件可以是数据(象一封给祖母的信)或程序(例如 netscape, emacs 等等). 通常, 这种 "象目录一样工作的背景" 的哲学是随着一个图形化的文件管理器, 因此当你在 一个文件上双击鼠标时, 或者它会运行起来(如果它是程序的话), 或者会启动一个适当 的程序从这个文件中读取数据. 在这种情况下, '桌面'也可以包含 GUI, 因此当人们 说 Linux/Unix 所缺少的全部就是一个'桌面'时, 他们所指的是一个程序公共部分的 一致的设计, 一个图形化的文件管理器, 和能够让文件们乱七八糟地搁在桌面上.

2. 是所有的窗口管理器 (象 GNOME 或 KDE 或 FVWM95) 都运行在 X windows 上吗?

    我情愿认为窗口管理器, fvwm95, 窗口产生器, 等等, 以及桌面, GNOME 或 KDE, 是与 X 协作 - 但这仅仅是说法不同. 窗口管理器和/或桌面是在 X 启动之后启动的. (写在 .xinitrc 文件中)

    传统上(就是在 KDE/GNOME 之前) .xinitrc 中的设置(在一些环境变量之后)是启动 一些 xterm 和 一个窗口管理器, 所以 .xinitrc 中的最后几行可能是这样:

xterm &xterm &fvwm95

     窗口管理器是 .xinitrc 所启动的最后一个东西, 当它退出时, .xinitrc 也就结束了, 然后 X 结束.

    假如你在使用 GNOME, .xinitrc 文件的最后几行可能是这样的:

fvwm95 &gnome-session

对于 KDE, 则会是:

startkde

     就象前面所说, GNOME(KDE) 是.xinitrc 所启动的最后一个东西, 所以当你退出 GNOME (KDE)时, gnome-session (startkde) 终止, .xinitrc 完成, 然后 X 结束.

    在以上的例子中, xterm 会被记下因为 GNOME 和 KDE 提供会话级的管理, 这就是说 当一个会话结束时正在运行的任何程序在下一个会话启动时都会启动. Windows 也有 一些会话管理的功能.

    请看下一个问题的答案以了解为什么 GNOME 需要窗口管理器的启动, 而 KDE 不需要.

3. 对一个应用程序来说, 所谓"GNOME 或 KDE 兼容(aware)"是什么意思? 如果程序 不是会怎么样? 你还能运行它吗?

    据我的理解, 如果一个应用程序符合 GNOME (KDE) GUI 设计原则/详细说明, 并且使用 Gtk+ (qt)程序库, 那么它就是一个 GNOME(KDE) 应用程序. 这意味着, GNOME 应用程序使用 Gtk+ 来构造菜单, 按钮, 卷滚条, 文件选择框, 等等, 而且它们 用一致的方式(由 GNOME 小组定义) 来产生这些. 例如, 所有的菜单都是左对齐, 所有的应用程序都有一个"文件"(FILE)菜单作为最左边的菜单, 等等. KDE 的情况 也是一样,除了它使用的是 Troll Tech 的"qt" 程序库以外(以及可能用另一套设计 指导原则).

    只要你安装了 Gtk+ 库(和其他 GNOME 库), 任何 GNOME 应用程序就可以运行, 类似 地, 任何 KDE 程序都可以运行只要你安装了 qt 库(和其它 KDE 库).-- 你并不一定 需要运行 GNOME/KDE 为了使用 GNOME/KDE 的应用程序. 另一个 GNOME/KDE 可能有的 功能是可"拖放"性, 例如在 GNOME 里, 你可以从GMC(文件管理器)的窗口里拖一个 JPG 文件到"电子眼"(ElectricEyes)(图形浏览器)窗口中, 然后"电子眼"会显示出这个 文件. 你可以在 KDE 里做类似的事情.

    GNOME 和 KDE 以不同的方式对待窗口管理器. KDE 偏爱在它自己的窗口管理器 Kwm 上工作, 而 GNOME 则是对窗口管理器"无所谓"- 不过这些只是"政治路线". 你可以用 其它的窗口管理器与 KDE 合作(别人这么告诉我), GNOME 则应该可以与任何窗口管理 器合作, 但是它最好是与ICCCM 兼容及"符合 GNOME"的窗口管理器合作. 我不能肯定它 的确切要求, 但我知道唯一完全兼容的窗口管理器只有 Enlightenment DR0.15 (它是 现在CVS唯一可以提供的),带上 icewm, 和 blackbox 及 windowmaker. 我想 KDE 小组 正在努力工作使 KDE 减少对 Kwm 的依赖, 及定义 KDE 的窗口管理器材(wm) 应该是 什么样.

4. GTK+ 库(在 GNOME上) 或 Troll 库(在 KDE 上)究竟是做什么用的?

    哦!(Whoops) - 我想我在上面已回答了这个问题. Gtk+ 和 qt 是用于构造菜单, 按钮, 卷滚条, 对话框, 和其他更多东西的工具箱.

5. 和提供给 Win98/95 用户的桌面环境相比, Linux (或 Unix)的历史怎么样? 尤其是, 怎样评价微软(Microsoft)通过只向用户提供一种据称是为"易用"而设计 的桌面环境?

    我不敢说理解了这个问题能够回答它. 所以我来回答一个代替它的问题, 我想你问的 也许是它: UNIX + X 和 W95/98/NT 的区别是什么?

    首先要指出的是UNIX中实现图形用户界面/桌面(GUI/Desktop)的基于组件的方法. 首先, 我们有了操作系统本身, 在我们这里就是 Linux, 在其上我们有窗口系统, X, 于之协作 的我们有了窗口管理器,fvwm (举例来说), 然后与这两者协作, 我们有了桌面/GUI, GNOME 或 KDE.这遵循了 UNIX 的一个普遍原则: 构造小的工具, 然后用很好的方式把 它们联结起来. 这看起来有些混乱, 但是作用强大. 它意味着其中的这个或 那个部分可以被替换, 这给了用户很多的选择(也许太多了), 而且也有益于技术的进步. 例如, X 只是一个窗口系统而且可能不是最后一个(喘气地说!). 会有别的, 例如, 饥饿的程序员们Y. 这就给用户一个选择, 用哪一个窗口管理器或桌面, 或者干脆不用 窗口和桌面. - 看起来有点奇怪, 但是有些人们喜欢用命令行, 有些其他人虽然用 X 和 窗口管理器但不喜欢用 GNOME 或 KDE.

    另一方面, Windows 95/98/NT 则是不同的一罐鱼. 在这里无法(象在UNIX里)分清操作 系统, GUI, 窗口管理器, 和桌面, 它们全都混在一起. 因而你有了微软(Micorsoft)给 你的选择, 也就是窗口布景(windows themes).

    对微软来说这是一个优势 - 它阻止了人们顶掉和重写他们的操作系统的一部分, 这可能 会使他们失去钞票. 例如他们认识到了在用古老的 windows 2/3.1 时你可以简单地用另 一个兼容的DOS象 Caldera的DR DOS 来替换 MS DOS. 在一个正在进行的诉讼案中, Caldera 宣称微软在Windows 里增加专门的代码以使 DR DOS 看起来存在错误(bug). 而到了 9*/NT, 它们包含了所有东西, 已没有必要使用这种策略了.

    恕我直言, W95 的桌面是低档的, 因为用户被限制在一个设计中, 而相比之下, Linux 系统 的窗口管理器+桌面可以适应每一个人.(包括那些不想要窗口管理器或桌面的人) .

6. 公共桌面环境(CDE)怎么样 ? 它在 Linux 用户中没有被广泛采用是否是因为 象有人所说的它是"吃资源的猪", 或者是没有开放源代码?

    它没有被广泛采用是因为它是商业软件, 不是开放源代码的, 是一个"吃资源的猪", 有安全性问题(Redhat 因为这一点停止销售它), 并且, 恕我直言, 已经过时了.


版权所有 (C) 1999 NJLUG

出版于第36期《Linux公报》1999年1月 中文版第三期