今天大家可能在“Wow! Ubuntu”或其他地方看到了这篇文章:Ubuntu 决定未来将启用 Wayland X-Server。Wayland是什么呢?它是X Window?还是要取代X Window?它的优势在哪里?Linux桌面/移动会因此有什么变化?在本篇中,我将回顾历史,展望未来,通过简易的文字,来先回顾一下X Window,从而继续解答Wayland。 注:在下对X Window的理解仅限于表面,文章中会有不少技术、历史方面的错误,若有大侠指出,不甚感激! 古老的X Window和现代的桌面技术 X Window在1984年由MIT研发,它的设计哲学之一是:提供机制,而非策略。举个最简单的例子吧:X Window提供了生成窗口(Window)的方法,但它没规定窗口要怎么呈现(map)或摆放(place),这个策略是由外部程序——窗口管理器 (Window Manager)所决定的。另外一个X Window的主要特点便是:Server/Client网络模型。不论是本地、远程的应用程序,都统一通过Server/Client模型来运作,比 如:让远程的应用程序跑在本地上。 X Window在推出之后快速演化,在1987年时候,其核心协议已经是第11版本了,简称:x11。这个版本已经将“提供机制,而非策略”这个哲学贯彻地 非常彻底,以致于核心协议基本稳定,不需要特别大的改动。于是乎,你看到了,现在是2010年,整整23年了,X Window依然是X11。 你可能会诧异,23年了,X Window的核心都没有特别大的变化,它能适应现代桌面的快速发展吗?这就要再次提到X Window的设计优势了,X Window在核心层之外提供一个扩展层,开发者可以开发相应扩展,来实现自己的扩展协议,比方说:
所以啊,这23年,X Window除了继续完善核心协议、驱动以外,很大程度上,都是扩展使它保持“与时俱进”,比如说:
X Window的核心,基本上就是在处理Server/Client、驱动之类的,而外部的那些支持,基本上全是通过“扩展”进行的。这没什么不好,X Window的结构设计精良,尽管是扩展,但它们没有任何效能上的问题。通过扩展方便地实现了一些对新技术、新事物的支持,而且方便维护,这再好不过了。 所以你看到了尽管23年过去了,基于X Window的GNOME、KDE,还能保持与同期Windows、Mac OS X竞争甚至某些方面更好,你就不得不佩服这些前辈在最初设计时定下的设计哲学是多少正确了。 虽然扩展的众多没有给X Window造成什么问题,也跟X Window的设计哲学相符,但是其Server/Client的网络构架,却一直倍受质疑,这便是: X Window的效率问题 经常听到有人说,X Window的Server/Client结构严重影响效率,导致Linux桌面的效应速度一直不如Windows、Mac OS X。事实是不是这样呢?让我们还是透过原理来说话吧。 这张,便是当前X Window系统的架构图,稍微解释一下:
|