Arbeitsweise, Aufbau und Struktur


[ Seminar Linux, WWW, Java und Internet ] ... [ Thema GNOME ] ... [ Programmierung ]

Übersicht


Was ist CORBA?

GNOME ist immer noch eine große Baustelle, auf der an vielen Stellen mehr oder weniger eifrig gearbeitet wird. So ist es nicht weiter verwunderlich, daß man auf widersprüchliche oder veraltete Informationen trifft. Aus diesem Grund ist es kaum möglich einen verlässlichen Bericht über den Projektstatus zu erstellen. Trotzdem will ich versuchen, im Folgenden die Architektur und die Ziele von GNOME zu beschreiben.

Von Anfang an war klar, daß Entwickler sich nicht auf eine bestimmte Programmiersprache festlegen müssen sollten. Ausserdem sollte GNOME nicht nur eine Desktop-Umgebung bieten, sondern ein flexibles Objekt-Modell.

Bisher war es üblich Funktionen und Oberflächenkomponenten in Bibliotheken unterzubringen. Nun sollten Komponenten anderer Applikationen wiederverwendbar sein, anstatt Programme auf Basis eines Widget-Sets immer wieder neu schreiben zu müssen.

Der Vorteil ist, daß jede Anwendung den Vorrat wiederverwendbarer Komponenten erweitert, und Entwickler nur noch solche schreiben müssen, deren Funktion fehlt. Natürlich ist diese Idee nicht neu: bei Windows heisst das Ganze DCOM/OLE, bei IBM OpenDoc und auch die NextStep-Architektur baut darauf auf. Das Problem ist, daß bei kommerziellen System nicht alle Anwender bereit sind, die benötigten Komponenten und Applikationen zu erwerben. Deshalb rechnen sich die Entwickler eines auf freier Software basierenden Systems wesentlich größere Chancen aus.

CORBA (Common Object Request Broker Architecture) ist ein anerkannter Standard und bildet die Basis des Objektmodells von GNOME. Aktuell ist die Version 2.2, die Version 3.0 befindet sich kurz vor der Verabschiedung. CORBA erlaubt es Applikationen miteinander zu kommunizieren, egal wo sie sich befinden oder wer sie geschrieben hat. Dazu existiert eine Client-Server-Architektur, in der der Object Request Broker (ORB) die vermittelnde Rolle spielt. Die Schnittstellen der Komponenten sind durch eine system- und sprachunabhängige Interface Definition Language (IDL) definiert. Eine Anwendung kann aus mehreren Komponenten bestehen, die verteilt auf verschiedenen Rechnern und Betriebssystemen sind und sogar in unterschiedlichen Programmiersprachen geschrieben sein können.

Der Object Request Broker (ORB) ermöglicht die Kommunikation zwischen verteilten Objekten und liefert Auskünfte über Ort und Verfügbarkeit des gewünschten Objekts zurück. Ein Client kann so unter Benutzung eines ORB eine Methode auf einem Server-Objekt aufrufen, das sich auf der selben Maschine, oder auch im Netzwerk befinden kann. Der ORB fängt diesen Aufruf ab, muss das Objekt finden, das den Aufruf ausführen kann, die Parameter übergeben, die Methode aufrufen und schließlich die Ergebnisse zurückgeben. Der Client muss sich also nicht darum kümmern, wo sich das Objekt befindet, in welcher Programmiersprache es geschrieben ist, noch welches das Host-Betriebsystem ist.


CORBA in GNOME

Wie ist das Komponentenmodell von CORBA in GNOME realisiert? Am Anfang standen die Entwickler vor der Frage welche CORBA-Implementation denn nun gewählt werden sollte. Zuerst war geplant ILU von Xerox zu verwenden, aber die Software war nicht frei verfügbar, und die Entwickler konnten Xerox auch nicht davon überzeugen ihre Lizenzpolitik bezüglich ILU zu ändern. Also wurde auf MICO gesetzt, welches unter der GPL steht, aber leider nur C++ unterstützte. Als sich dann nach kurzer Zeit herausstellte, daß MICO aufgrund des großen Speicherverbrauchs und der nicht gerade atemberaubenden Geschwindigkeit indiskutabel geworden war, fingen die GNOME Leute mit der Eigenentwicklung ORBit an.

Gnorba, das GNOME CORBA Framework, ermöglicht es den Applikationen auf einfache Weise ORBit zu verwenden. Dazu wird der ORBit Main Loop in den GTK+ Main Loop integriert, ausserdem sorgt Gnorba für die nötige Sicherheit bei ankommenden CORBA-Requests. Um Applikationen den Zugriff auf ein bestimmtes CORBA Objekt zu ermöglichen, hinterlegen die GNOME CORBA Server Informationen im GNOME Object Activation Directory (GOAD). Jeder Eintrag enhält einen einzigartigen Identifier (GOAD ID), eine Liste von Interfaces des Objekts, eine für Menschen lesbare Beschreibung der Objekt-Implementation und Informationen darüber, wie man eine neue Instanz erzeugt.

ORBit, der GNOME Object Request Broker, soll multilingual werden, unterstützt aber zur Zeit nur C. Das liegt daran, daß es ein relativ neues Projekt ist. ORBit unterstützt GIOP/IIOP, das CORBA Protokoll für die Kommunikation von ORBs untereinander. Hauptziel von ORBit ist Geschwindigkeit und geringer Speicherbedarf. Der Gründer des ORBit-Projektes behauptet, die Performance eines CORBA-Calls sehr nah an die eines Standard Library Calls zu bekommen, ohne die CORBA-Spezifikation zu verletzen, wenn der aufgerufene Service lokal vorhanden ist.

Bonobo ist eine Sammlung von Interfaces und Libraries mit denen man wiederverwendbare Graphische Komponenten erzeugen kann.

Das Document Object Model (DOM) soll das Standard-Interface werden mit dem man Elemente von Dokumenten ansprechen kann. Die Idee dahinter ist, daß Dokumente Objekte enthalten, die benutzt und manipuliert werden können. Zur Zeit ist DOM nur ein Skelett im CVS.


Weitere Elemente

Das Gimp Tool Kit (GTK+) ist ursprünglich als Teil des Gimp Projektes geschrieben worden, hat sich aber inzwischen als hervorragendes und vielseitiges Widget Set bewiesen und wird in vielen neuen Programmen verwendet. Es ist das Interface zwischen GNOME Applikationen und dem User (ähnlich wie Motif in CDE und Qt in KDE). GTK unterstützt viele Programmiersprachen (C, C++, Objective C, Python, Perl 5, Scheme, etc) und Themes, die anscheinend heute in jedem Betriebssystem Pflichtprogramm sind.

Drag and Drop wird zur Zeit durch das XDE Drag and Drop Protocol (Motif) gewährleistet, und soll in Zukunft durch das X Windows Drag-And-Drop Protocol (XDND) ausgetauscht werden.

Session Management ist eine Erweiterung des X Window Systems, die es Applikationen erlaubt ihren Status zu speichern und wiederherzustellen. So können Benutzer ihren Desktop genauso wiedervorfinden, wie sie ihn verlassen haben.

Guile ist die GNU Implementierung von Scheme, einem verbreiteten Lisp Dialekt, und soll die Skript-Sprache des GNOME Projektes werden. Damit wird es in Zukunft möglich sein, ohne großen Aufwand Applikationen zu entwickeln.


[ Seminar Linux, WWW, Java und Internet ] ... [ Thema GNOME ] ... [ Programmierung ]