Linux 版 (精华区)

发信人: howdoit (教练让我上场!!!), 信区: Linux
标  题: XWindows与Windows95/98/NT的比较:无胜负之争
发信站: 哈工大紫丁香 (Tue May 18 08:57:52 1999), 转信

《Linux公报》……让Linux更富魅力!

           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月 中文版第三期

                            

  

  


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:208.410毫秒