簡介
工作持續地進行,新的版本(version)不斷地產生(當軟體和前一版不相容時,新的版本便產生了)。在1985年。制定了任何人只要付著作權費便可使用X的授權許可。以下為一些最近的記事:
第10版:1985年底。直到此時,在MIT以外的人和組織,才開始對X有實質的貢獻。
第一套商業化的X產品DEC於1986年1月推出 VAXstation-II/GPX。
第10版第3次發行:1986年 2月。從此時起,X開始流傳於世,人們把它移植到許多新的系統上。
第10版第4次發行:1986年11月。
1987年 1月在MIT舉辦第一次X技術會議。
在1986年,第10版X無法滿足所有的需求已非常明顯。MIT 和 DEC便從事於完整協定(protocol)的重新設計。這就是X第11版(這就是所謂的X11)。
第11版第 1次發行:1987年 9月。
X協會成立:MIT X協會成立的目的是為了研究發展及控制標準。
第二次X技術會議:1988年 1月。
第11版第 2次發行:1988年 3月。
第11版第 3次發行:1988年10月。
嚴格地說,X Window系統並不是一個軟體,而是一個協定(protocal),這個協定定義一個系統成品所必需具備的功能(就如同 TCP/IP, DECnet 或IBM的 SNA,這些也都是協定,定義軟體所應具備的功能)。任何系統能滿足此協定及符合X協會其他的規範,便可稱為X。
2.X的基本部件
X系統不像早期的視窗系統是把一堆同類軟體集中在一起,而是由3個相關的部分組合起來的。
(1)Server(伺服器)
Server是控制顯示器和輸入設備(鍵盤和滑鼠)的軟體。Server可以創建視窗,在視窗中畫圖形和文字,回應Client程式的“需求”(requests),但它不會自己動作,只有在Client程式提出需求後才完成動作。
每一套顯示設備只對應一個惟一的Server,而且Server一般由系統的供應商提供,通常無法被用戶修改。對於作業系統而言,Server只是一個普通的用戶程式而已,因此很容易更換新的版本,甚至是第三方提供的原始程式。
(2)Client(用戶端)
Client是使用系統視窗功能的一些應用程式。在X下的應用程式稱做Client,原因是它是Server的客戶,要求Server回應它的需求完成特定的動作。
Client無法直接影響視窗或顯示,它們只能送一個請求(request)給Server,由Server來完成它們的請求。典型的請求通常是“在某個視窗中寫‘Hello World’的字串”,或者從A到B劃一條直線。
Client的功能大致可分為兩部分:向Server提“需求”只是它的一部分功能,其他的功能是為用戶執行程式而準備的。例如輸入文字信息、作圖、計算等等。通常,Client程式的這一部分是和X獨立的,它對於X幾乎不需要知道什麼。通常,應用程式(特別是大型的標準繪圖軟體、統計軟體等)對許多輸出設備具有輸出的能力,而在X視窗中的顯示只是Client程式許多輸出格式中的一種,所以,Client程式中和X相關的部分在整個程式中只占非常小的一部分。
用戶可以通過不同的途徑使用Client程式:通過系統提供的程式來使用;使用來自於第三方的軟體;或者是用戶自己為了某種特殊套用而編寫自己的Client程式。
第一次接觸X Window系統的用戶很容易混淆X Window系統中的客戶機/伺服器的概念,他們會認為X Window下的客戶機/伺服器的概念與普通網路中的客戶機/伺服器的概念不太相同。通常的觀念中,用戶使用客戶工作站,使用遠程伺服器提供的檔案或顯示服務,而在X Window下,用戶使用X伺服器進行操作,而客戶程式可以運行在本地或者遠程電腦上。
如果進一步理解,就會了解客戶/伺服器的概念指的是具體運行的進程,而非電腦或用戶。不是與用戶聯繫最密切的電腦就是客戶,而是首先要明確服務資源,然後再以資源提供者和資源占用者來進行區分。在一般的客戶/伺服器方式的套用中,一般是客戶程式直接與用戶互動,因此就容易造成錯誤的概念,以用戶為中心來區分客戶和伺服器。
但在X Window下,服務資源為X伺服器的顯示提供處理能力,X客戶程式要顯示圖形圖像,但它不能直接控制顯示硬體,只能使用用戶面前的X伺服器提供的顯示資源。同樣它也不能接受用戶輸入,也只能使用X伺服器控制的鍵盤或滑鼠資源來接受輸入。在這裡,X伺服器是硬體的控制者,X客戶只是單純的執行程式,只能使用X伺服器提供的服務進行輸入輸出。
X伺服器(X Server)是一個管理顯示的進程,必須運行在一個有圖形顯示能力的電腦上。理論上,一台電腦上可以同時運行多個X伺服器,每個X伺服器能管理多個與之相連的顯示設備。
X客戶程式(X Client)是一個使用X伺服器顯示其資料的程式,它可以運行在與X伺服器不同的電腦上。
X協定(X protocol)是X客戶程式和伺服器進行通信的一套協定,X協定支持網路,能在本地系統中和網路實現這個協定,支持的網路協定有TCP/IP, DECnet等。
優點
X的這種任務劃分有幾個優點:
1.客戶程式可以在遠程電腦上執行計算任務,而使用的X伺服器僅負責複雜的圖形顯示,充分發揮X伺服器在顯示上的優勢。
2.只有X伺服器與硬體打交道,所有的客戶程式都與硬體無關,這很容易在不同的平台上移植。
3.客戶程式可以在不同的電腦上運行,從巨型機到個人電腦,從而充分發揮網路計算的優越性。
儘管每個X客戶程式都可以對整個螢幕範圍進行顯示操作,但標準的做法是先創建一個顯示視窗,此後客戶程式的所有顯示都相對於這個視窗進行操作。這樣在同一螢幕內就能同時顯示多個獨立的客戶程式,通過對視窗的管理在不同的程式之間進行切換。每個視窗應該位於螢幕的哪個位置、何時顯示、何時隱藏,以及視窗的標題、四周如何顯示等,這些都不應該由產生這個視窗的客戶程式自己控制和維護,否則就不能達到簡化設計的目的。X Window並沒有自己實現這些任務,在X的設計原則中,這些代表 GUI風格的任務仍然是客戶程式的任務,因此X將管理視窗的任務給予了一個特殊客戶程式——視窗管理器,使用不同的視窗管理器會使X Window的外觀看起來截然不同。
X系統只負責顯示圖形,並不限制顯示和操作的風格,因此不同的X Window的風格並不相同,用戶可以根據自己的喜好進行選擇。
在X Window上,所有的視窗形成了一個樹狀結構。X Window的視窗管理程式運行在根視窗上,所有的其他視窗為根視窗的子視窗,而其他視窗上也有相應的按鈕、對話框等元件,這些是它的子視窗。如圖7-2所示。
由於X Window系統只提供了最基本的系統調用,而具體的視窗都有很多共性,因此要開發X應用程式,應該首先使用開發工具包,而沒有必要直接使用最基本的X Window 的系統調用,以簡化編寫程式的工作量。不同的公司或組織開發了各種工具包來提供創建和管理具體視窗的構件,例如Motif套件、OpenLook套件等。每種套件都提供了選單、按鈕、對話框等圖形接口的標準構件,還提供基本的視窗管理器。使用不同套件開發的程式,其顯示風格也不相同,因此就在不同程式之間形成了不同的GUI風格。Motif和Openlook 就是兩種不同的圖形接口風格,當前Motif成為了商業X Window的一個標準,很多商業軟體均基於Motif進行開發,而Openlook則沒有獲得更普遍的支持。
(3)通信通道
有了Server和Client,它們之間就要傳輸一些信息,這種傳輸信息的媒介就是我們所要介紹的X的第3個組成部件:通信通道。憑藉這個通道,Client傳送“需求”給Server。而Server回傳狀態(status)及其他一些信息給Client。
Client是通過函式館來使用通信通道的。在系統或網路上支持通信形態需求的是內建於系統的基本的X視窗函式館(library)。只要Client程式利用了函式館,自然就有能力使用所有可用的通信方法。這時通道本身就變得不再重要了,而只是一個概念而已。
3.Server和Client之間的通信
Server和Client通信的方法大致有兩類,對應於X系統的兩種基本操作模式。
第一類,Server和Client在同一台機器上執行,它們可以共同使用機器上任何可用的通信方法做互動式信息處理。在這種模式下,X可以同其他傳統的視窗系統一樣高效工作。
第二類,Client在一部機器上運行,而顯示器和Server則在另一部機器上運行。因此兩者的信息交換就必須通過彼此都遵守的網路協定進行,最常用的協定為TCP/IP。這種通信方式一般被稱為網路透明性,這也幾乎是X獨一無二的特性。
4.X的用戶接口
X的設計目標之一就是能創建許多不同形式的用戶接口。其他視窗系統提供具體的互動方法,而X只提供一般的架構,讓系統創建者建造所需的互動風格。這種特性使得開發者可以在X的基礎上建造全新的接口,並且可以在任何時刻根據自己的需要選用適當的接口。
一般來說,用戶接口可以分為兩部分。管理接口也就是視窗管理器,是命令的最高層,它負責在螢幕上建構或重建視窗,改變視窗的大小、位置,或者將視窗改變成圖示等。
套用接口確定了用戶和應用程式之間的互動風格,即用戶如何利用視窗系統的設備程式來控制應用程式並輸入資料給它。例如,如何用滑鼠來選定一個選項。
5.X獨立於作業系統
X不是內置於作業系統,它只是比用戶層次稍高一些。在系統中也是一個相對獨立的元件。這樣做有如下優點:
1. 易於安裝和改版,甚至去除。這種工作不需要重啟系統,也不會對其他應用程式造成干擾。
2.第三方很容易支持並加強它的功能。例如你的製造廠商提供的系統不夠好,你可以向別人買更好或更快的版本。
3.X不會制定作業系統,因此成為一種標準,這也是第三方發展軟體的原動力。
4.為了開發者。在Server上進行工作時,如果程式異常中斷,只會影響到視窗系統,不會造成機器的損壞或作業系統核心的破壞。