Zurück zur Übersicht

XUL - extensible User Interface Language

Teresa Hillebrenner

Die extensible User-Interface Language oder XML User Interface Language ("Zuul" ausgesprochen) ist eine in der XML- Syntax gehaltene Beschreibungssprache zur Programmierung graphischer Benutzerschnittstellen. Ursprunglich stammt XUL aus dem Mozilla-Projekt, d.h. die Sprache wurde entwickelt, um die GUI der Mozilla- Anwendungen (Netscape 7, Firefox, Mozilla Application Suite, Mozilla Browser und Mailer, etc) zu spezifizieren. Die erste Version ist vom Dezember 1998. Inzwischen wird XUL auch von verschiedener anderer Software (z.B. bei Amazon oder in Benutzerprogrammen bei Sixt) genutzt. XUL ist weitgehend plattformunabhängig ist, d.h. kann auf Windows, Mac, Linux und anderen UNIX-Varianten eingesetzt werden und wird von allen Browsern unterstützt, die auf der Gecko Engine basieren. Die Gecko Rendering Engine übersetzt die XUL-Datei und stellt die Benutzeroberfläche auf dem Bildschirm dar. Zur Erstellung von XUL- Dateien ist keine Entwicklungsumgebung notwendig. Es genugt ein einfacher Text- Editor.

Die Grundelemente einer XUL-GUI unterscheiden sich nicht von denen der bekannten GUI- Bibliotheken. Man arbeitet mit Fenstern, Buttons, Menüleisten, Tabs, Textareas, etc. Durch XUL wird jedoch die oft angetroffene Unterscheidung zwischen Desktopanwendung und Internetbrowser aufgehoben oder zumindest etwas relativiert. Man kann Oberflächen für verschiedenartigste Anwendungen erstellen und manipulieren. Im Gegensatz zu GUI- Bibliotheken, wird in XUL die Hierarchie der Komponenten, wie Fenster, Menüs, jedoch direkt als Datenstruktur angelegt, also nicht erst zur Laufzeit aufgebaut und ist somit immer "sichtbar". Bei der Entwicklung von XUL wurden einige Konzepte von HTML übernommen, was auch erklärt, dass sich XUL- und HTML-Elemente teilweise entsprechen. Dies ist zum Beispiel beim image- Element der Fall. Da jedoch XUL im Gegensatz zu HTML nicht zur Erstellung von Webseiten sondern von Benutzerschnittstellen entwickelt wurde, findet man zusätzlich viele weitere Elemente, wie z.B. das key- und das command- Element. Analog zu XML muss eine XUL-Datei folgenden Anforderungen entsprechen, damit sie gültig ist: alle Events und Attribute müssen in Kleinbuchstaben geschrieben werden, alle Strings müssen in doppelten Anführungszeichen stehen, alle geöffneten Tags müssen explizit geschlossen werden und jedem Attribut muss ein explizierter Wert zugewiesen werden. Eine weitere Parallele zu HTML stellt die Verwendung von cascading stylesheets zur Formatierung von XUL- Dokumenten dar. Diese werden jedoch über eine processing instruction der Form "?xml-stylesheet href="chrome.//......" type =text/css"?" geladen. Jedoch können, wie auch in HTML, die Stil-Eigenschaften über das style- Attribut gesetzt werden.

Auch hinsichtlich der Dynamik wurden bereits existierende Standards (JavaScript und das Document Object Model, XSLT, XPath) hinzugezogen. Die Techniken, die in XUL verwendet werden, ähneln denen von DHTML, so dass für in HTML geübte Benutzer das Erlernen von XUL nicht allzuschwer sein dürfte. Man kann allgemein sagen, dass bei der Entwicklung von XUL grossen Wert auf die Kompatibilitat zu web- Standards gelegt wurde. Auch können innerhalb von XUL- Dateien Elemente anderer XML Applikationen wie beispielsweise SVG und XHTML verwendet werden.

Zur Erweiterung einer durch XUL beschriebenen GUI existieren zwei unterschiedliche Möglichkeiten, die Overlay- bzw. Template- Technik genannt werden. Unter einem Overlay versteht man eine eigene Datei, die ein neues GUI- Element spezifiziert und dem man eine Information daruber mitgibt, an welcher Stelle einer anderen XUL- Datei es eingefügt werden soll. Die damit einhergehende Modularisierung, ermöglicht das Einfügen von GUI- Elementen an beliebigen Stellen der Oberfläche. In Templates hingegen werden Elemente bzw. Muster spezifiziert, die unter bestimmten Bedingungen verwendet werden sollen. Beispielsweise kann das Laden von Bookmarks in einem Webbrowser durch Templates realisiert werden. Neben der reinen Erweiterung der durch XUL beschriebenen GUI kann auch XUL selber um neue Elemente erweitert werden. Dies geschieht mit Hilfe von XBL (extensible Bindings Language), durch die neue Elementtypen definiert werden können uns somit die GUI erweitert werden kann.

Als Vorteile der Sprache XUL sind zusammenfassend also die XML- Basierung und somit die Trennung von Inhalt und Darstellung, die Plattformunabhängigkeit, die Modularitat und die leichte Erlernbarkeit zu nennen. Nachteilig ist, dass das Mozilla- XUL- Toolkit auf andere Betriebssysteme portiert werden muss, was zusätzlichen Aufwand und Zeit bedeutet. Des weiteren verlängern die Verarbeitung von XUL- Dateien und die Berechnung des Layouts die Verarbeitungs- und Darstellungsgeschwindigkeit.

Zentrales Element einer XUL- Datei ist das Document Object. Analog zu HTML beschreibt dies das XUL- Dokument selber und nicht schon ein Element der GUI, wie beispielsweise das Fenster. Eine GUI, die durch XUL definiert ist, ist also ein DOM- Object. Das Object "document" stellt verschiedene Methoden bereit, mit denen Anfragen und Veränderungen durchgeführt werden können. Die Basis des Layouts von XUL- Dokumenten ist die "Box". D.h. jedes XUL- Element stellt zunächst eine rechteckige Box dar, die selbst wiederum "Boxes" enthalten kann. Die Grösse dieser Box richtet sich nach dem zur Verfügung stehenden Platz, eine Box ist jedoch mindestens so gross, wie die Boxen, die sie enthält. Weiterhin besitzt jedes XUL- Element ein "Attribut" Property, das ein Array mit allen Attributen des Elements enthalt. Ein interessantes Attribut ist das debug- Attribut. Dieses wird von vielen XUL- Elementen unterstützt und kann fur den Ersteller der GUI durchaus hilfreich sein. Ist das Attribut auf true gesetzt, werden unterschiedliche Levels der Elementes und seiner "child"- Elemente markiert (die geschieht durch Einfarbung oder unterschiedliche Darstellung der Ränder von "Boxen"), so dass ein schnelles Auffinden von Fehlern bzw. eine gute Unterscheidung von flexiblen, nichtflexiblen oder horizontal und vertikal ausgerichteten Boxen möglich ist. Ist ein Element flexibel bedeutet dies, dass es sich an den ihm zur Verfügung stehenden Platz anpasst.

Der Name oder besser die Aussprache von XUL kommt aus dem Film Ghostbusters, in der ein sumerischer Geist namens Zuul den Charakter der Dana Barrett in Besitz nimmt und sagt: "There is no Dana, only Zuul". Aufgrund der ungewohnten Verwendung von XML zur Definition von Interfaces anstelle von Dokumenten, übernahmen die Entwickler von XUL den Ausspruch aus Ghostbusters und veränderten ihn zu "There is no data, only XUL".

Derzeit laufen verschiedene Projekte, die die Nutzung von XUL erleichtern und verbessern sollen. So wurde das opensource projekt jXUL zur Umwandlung von XUL- Dokumenten in JavaSwing ins Leben gerufen. Ebenso wird an der Entwicklung des XUL Runtime Environemt (XRE) gearbeitet, das XUL aus dem Mozilla-Code herauslösen soll und dem User die Nutzung ohne den Mozilla-Ballast ermöglichen soll.

Als konkurrierende Anwendung von XUL ist XAML (extensible Application Markup Language) eine deklarative GUI- Beschreibung zu nennen, die in Windows vista zur Anwendung kommt.

Detailliertere Informationen zu XUL, sowie eine vollständige Auflistung der XUL- Elemente sind unter www.xulplanet.com zu erhalten.

Quellen:

eXtensible User Interface Language von Heribert Schütz auf www.javaspektrum.de

xulplanet

Internet-Glossar von Torsten Horn

Multi-Platform User Interfaces von Jens Pottebaum

XUL-Tutorial I , Beitrag von Karsten Düsterloh

think php

mozilla developer center