X Window System

Das X Window System (auch: X Version 11, X11, X) ist eine Sammlung von Protokollen und Computerprogrammen zur Ansteuerung grafischer Bildschirme im Allgemeinen und zur Anzeige einer grafischen Benutzungsoberfläche vor allem unter Unix-Systemen.
Geschichte von X
X wurde 1984 im Projekt Athena in Zusammenarbeit des MIT, der Digital Equipment Corp. und IBM entwickelt. Die erste Version wurde im Juni 1984 freigegeben, im September 1987 folgte die Version X11.
Als 1988 der Erfolg immer größer wurde, wurde das nicht-kommerzielle X-Konsortium gegründet, welches die weitere Entwicklung übernahm. Es veröffentlichte verschiedene Versionen, die letzte große, X11R6 1994. Danach übernahm The Open Group die Entwicklung und Standardisierung. Seit 2004 wird es unter Führung von X.Org weitestgehend standardisiert.
Zu großer Verbreitung auf PCs brachte es die freie Software XFree86, die nun teilweise, aufgrund einer lizenzrechtlichen Inkompatibilität mit der GPL, und der Auflösung des Entwicklerteams von XFree86, durch eine Weiterentwicklung von X.Org abgelöst wurde.
Funktion
X ist netzwerktransparent und baut auf dem Client-Server-Modell auf. Zu beachten ist hierbei, dass der X-Server auf dem lokalen Arbeitsplatzrechner läuft, während der X-Client auf einem entfernten Rechner ausgeführt werden kann. Was zunächst seltsam klingt, stellt sich bei genauerer Betrachtung als logisch heraus:
- Der X-Server läuft auf dem Rechner am Arbeitsplatz und stellt seine (grafischen) Dienste den X-Clients zur Verfügung. Er enthält den Grafikkartentreiber, Treiber für Tastatur und Maus, und kommuniziert mit dem X client über das Netzwerk
- Der X-Client wird hingegen durch das Anwendungsprogramm dargestellt, welches lokal auf dem selben Rechner oder auch auf irgendeinem entfernten Rechner laufen kann (sofern eine Netzwerkverbindung zwischen beiden besteht). Der X-Client benutzt die Dienste des X-Servers um eine grafische Darstellung zu erreichen und empfängt von ihm die diversen Ereignisse (events) wie Tastenanschläge, Mausbewegungen, Klicks usw.
X-Terminal
Das in der Großrechner-Welt bekannte, textbasierte Terminal-System (dort meist proprietäre wie IBM 5250 und 3270; unter Unix die bekannten seriellen Terminals wie z. B. VT100) erlebt seine grafische Weiterentwicklung zum X-Terminal; ein Rechner auf dem nichts anderes als ein X-Server läuft. X ist ein rastergrafikbasiertes Fenstersystem und stellt Funktionalität bereit zum Zeichnen und Bewegen der Fenster, zur ereignisorientierten Handhabung eines Zeigergeräts wie einer Maus, zur Interprozesskommunikation und teilweise Verwaltungsfunktionen für Druck und Sound. Es ist ein absolutes Low-Level System - zum Zeichnen werden lediglich Primitives wie Linien, Muster, etc. bereitgestellt. Das eigentliche Aussehen und Verhalten des Fenstersystems wird deshalb nicht von X bestimmt, sondern von dem Windowmanager, der wie eine normale Anwendung einfach als Client des X Servers läuft. Für das Aussehen der Applikationen sind diese selbst verantwortlich. Dies bedeutet, dass außer den bereits genannten Komponenten X-Server und Window Manager meist auch noch mindestens eine Oberflächenbibliothek mit im Spiel ist, die das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z. B. Menüs, Buttons übernimmt.
Stärken
Das X-System wurde von Anfang an für den effizienten Netzwerkbetrieb konzipiert. Die Kommunikation zwischen Client und Server läuft über ein standardisiertes Protokoll ab, das nur relativ geringe Transferraten benötigt. Der Quellcode des X-Systems ist zwar objektorientiert, aber dennoch in C geschrieben, so dass eine Übersetzung auf nahezu jedem Unix-Rechner möglich ist. Das X-System ist im Gegensatz zu MS-Windows kein Teil des Betriebssystems: Ein Absturz von X hat deshalb i. allg. keinen Einfluss auf die Integrität des Rechners. Weiterhin hat der Windowmanager (die "Bedienoberfläche") im Prinzip denselben Status wie ein X-Client: Man kann im laufenden Betrieb einen Windowmanager durch einen anderen ersetzen. Bereits mit sehr kleinen Windowmanagern (z. B. twm, ca. 140 kBytes) kann komfortabel gearbeitet werden.
Durch den durchdachten, hierarchischen Aufbau des Systems ist beispielsweise möglich:
- An einem X-Server mehrere Bildschirm-Arbeitsplätze betreiben.
- Für Entwicklungs- und Testzwecke einen X-Server in einem Fenster eines anderen X-Servers laufen lassen.
- Programme an einem Rechner mit völlig anderer Hard- und Software als dem Bedienrechner ausführen.
Die Weiterentwicklung von X läuft im Vergleich zur Hardware auf großen Zeitskalen, mit nur geringen Veränderungen ab. Kompatibilitätsprobleme treten daher nicht auf, wenn nur Standardbibliotheken verwendet werden.
Schwächen
Dies alles führt dazu, dass X ein sehr flexibles aber oft auch sehr uneinheitliches System ist. Es kann durchaus vorkommen, dass jedes der Programme, die man selbst benutzt, unterschiedlich aussieht und sich geringfügig unterschiedlich verhält. Dies ist auch ein oft angesprochener Kritikpunkt an X. Ein möglicher Lösungsansatz ist die Erstellung einer Desktopoberfläche mit einheitlichen Oberflächenbibliotheken. Die heute bekanntesten Systeme dieser Art sind KDE und GNOME, historisch von Bedeutung ist auch CDE. Ein alternativer Lösungsansatz wäre es, auf X vollständig zu verzichten und es durch ein auf höherem Niveau angelegtes System zu ersetzen, das von Beginn an eine einheitliche Behandlung von Oberflächenelementen beinhaltet. Ein solcher Versuch ist das Fresco-Projekt aber auch das Y-Window-System.
Ansätze zur Verbesserung
Ein weiteres Problem beim Einsatz des X Window-Systems über Rechnergrenzen hinweg ist seine sehr häufig langsame und dem Anwender "zäh" vorkommende Performanz bei Verbindungen über schmale Bandbreiten mit hoher Latenzzeit (Modem, ISDN).
Mögliche Ansätze, diesen Problemen zu begegnen sind
- Kompression der Übertragungsdaten,
- Anlegen eines Cache für schon übertragene Daten und
- Reduzierung der roundtrips zwischen X-Client und X-Server
Viele "roundtrips" sind unnötig und werden teilweise von ineffizienter Programmierung von X-Applikationsprogrammen verursacht. Ein effizienter Cache erspart die wiederholte Übertragungen derselben Datenblöcke (z. B. Icons in Programm-Menüleisten). Die starke Kompression reduziert den Datenverkehr weiter.
Verschiedene Projekte versuchen, diese Ansätze zu implementieren. Neben dem (inzwischen aufgegebenen) LBX-Projekt hat in jüngerer Zeit das NX-Projekt der italienischen Firma NoMachine einen hohen Bekanntheitsgrad erreicht. Andere Projekte versuchen, die Schwächen von X11 durch ein komplettes Redesign zu umgehen, haben dabei aber mit Akzeptanzproblemen zu kämpfen.