Mozilla als Platform Das Mozilla Projekt startete im März 1998 mit Mozilla als Platform dem Ziel, den Nachfolger von Netscape's Communicator 4.x Browser zu entwickeln. Heute wird Mozilla von den Entwicklern verwendet um Applikationen zu entwickeln, die sowohl lokal als auch über das Internet funktionieren. Der Unterschied zwischen der eigentlichen Aufgabe, einen Browser zu erstellen und der Verwendung von Mozilla als Entwicklungsframework, ist nicht so abwegig wie es auf den ersten Blick erscheinen mag. Ein Webbrowser erinnert normalerweise nicht an ein Applikationsframework, obwohl er grundsätzlich eines ist. Browser ermöglichen es Benutzern, Applikationen wie Yahoo! Mail, für den Empfang und Versand von Mail, Amazon für Ihre Bücherbestellungen oder eBays online Auktionen zu benutzen. Mozilla erweiterte die Idee der Applikationsnutzung dadurch, dass einige Technologien wie CSS und JavaScript direkt verwendet werden. Dieses Kapitel gibt eine Übersicht der Web-Technologien und wie sie in Mozilla weiterverwendet wurden. Dies erklärt wie aus Mozilla eine Plattform für plattformübergreifende Applikationen entstand. Visualisierung des Mozilla Front Ends
Am Anfang gab es 3 verschiedene Front Ends: Mac, Windows und Unix. Jedes hatte ein Entwicklerteam, das sich darum kümmern musste. Hinzufügen eines Features (auch nur ein Button) hatte zur Folge dass 3 Ingenieure mindestens einen Tag (eher eine Woche) Zeit investieren mussten, um das Feature komplett zu integrieren. Dies musste ändern.
Dieses Zitat stammt von der mozilla.org Seite und beschreibt wie für die Netscape 4.x Browser verschieden Teams von Entwicklern nötig waren, um den Code zu unterhalten, obwohl der Browser auf allen unterstützten Platformen nahezu identisch aussah. Für eine Firma die Applikationen für eine breite Auswahl von Systemen anbieten wollte, war die Verwendung von plattformspezifischen Code eine grosse Zeitverschwendung. Zur Lösung dieses Problems wurde XPFE, Mozilla's plattformübergreifendes Frontend entwickelt, mit dem ein Interface für eine Vielzahl von Betriebssystemen definiert werden kann. Portabilität Wahrscheinlich einer der wichtigsten Vorteile für Entwickler, gegenüber herkömmlicher Toolkits, ist, dass Mozillas Applikationen plattformübergreifend sind. Dies bedeuted, dass diese Programme sowohl unter Windows, als auch unter Unix und MacOS ausführbar sind. Dies wird ermöglicht, indem Mozilla als Interpretations-Schicht zwischen der Appliktion und dem Betriebssystem fungiert. Daher kann man davon ausgehen, dass, wenn Mozilla unter einem bestimmten Betreibssystem läuft, auch andere, auf Mozilla basierende Applikationen ausführbar sind. Auf der anderen Seite sind nicht alle Mozilla Applikationen plattformübergreifend, da es auch möglich ist plattformspezifischen Code zu verwenden, der nur auf einem bestimmten System ausführbar ist. Camino Camino (ein sehr schneller Browser für MacOS X) ist ein Beispiel dafür. Die Anzahl der Mozilla Portierungen Mozilla Portierungen Portierungen auf andere Betriebssysteme gibt Ihnen einen Anhaltspunkt der Vielfalt der Anwendungen. Mozilla läuft unter Windows, Macintosh (MacOS und MacOS-X) und Linux, wie auch unter den meisten anderen Unices, wie Solaris, FreeBSD, HP-UX und Irix. Weitere Portierungen für BeOS, OS/2, OpenVMS, Amiga und andere Betriebssysteme sind in Arbeit. Weitere Informationen über diese Projekte finden Sie unter http://www.mozilla.org/ports/. In diesem Zusammenhang ist das Front-End mehr als das Look&Feel einer Applikation, da es ebenfalls Funktionalität und Strukturen der Applikation enthält. Netscape 6.x und 7.x verwendet XPFE um die Erstellung von Themes zu ermöglichen, wobei die Browser Suite selbst auch mit XPFE gemacht ist. Diese neue Technologie entstand als Technik um Zeit zu sparen und entwickelte sich zu einer der mächtigsten Inovationen von Mozilla. Mike Cornall fasst die Entwicklung von XPFE in einem Bericht auf LinuxToday wie folgt zusammen: "The application platform capabilities of Mozilla came about through a happy coincidence of open source development, good design, and far-sighted developers who were paying attention." (Die Fähigkeiten von Mozilla als Applikationsplattform entstanden durch glückliche Zufälle aus der OpenSource Entwicklung: gutes Design und weitsichtige Entwickler die sich Gedanken machten.) Mozilla Entwickler wollten einen effizienteren Prozess entwickeln der sowohl Zeit als auch Aufwand einsparen würde. Diese Technologie hatte den unerwarteten Vorteil, die Eintrittsschwelle in die Applikationsentwicklung, beträchtlich herabzusetzen. Um diese glücklichen Umstände besser verstehen zu können ist es nötig, XPFE etwas genauer anzuschauen. XPFE Framework XPFE baut auf existierende Web Standards. Unter anderem Cascading Style Sheets, JavaScript, und XML (die XML Komponente ist XUL, die XML basierte User-Interface Language. In seiner einfachsten Form kann XPFE als Verbindung dieser Technologien angesehen werden. Zusammen betrachtet machen diese Komponenten das XPFE Framework aus: Figure 1-1.
XPFE Framework
Um zu verstehen wie XPFE funktioniert, schauen wir uns am besten kurz an, wie die einzelnen Komponenten interagieren. JavaScript bildet die Funktionalität der Applikation, Cascading Style Sheets sorgen für das Look&Feel und XUL ist für die Applikationsstruktur zuständig. Anstatt, wie C oder C++, plattformspezifischen Code zur für Applikationen zu verwenden, setzt XPFE auf verbreitete Web Standards, die 'by-design' plattformunabhängig sind. Da das XPFE Framework plattformunabhängig ist, sind es auch die damit erstellten Applikationen und da einige der verwendeten Technologien bereits verwendet werden um Webseiten zu erstellen, können Leute die bereits Vorkentnisse mit Webseiten haben, leicht erlernen wie man Applikationen mit XPFE erstellt.
Der Unterschied zwischen XPFE und DHTML In vielen Aspekten ist XPFE DHTML (Dynamic HTML) sehr ähnlich. DHTML ist eine Kombination aus HTML, JavaScript und CSS die es dem Entwickler erlaubt eine Applikation in einer Anzeige des Browsers auszuführen. XPFE erweitert diesen Gedanken und erlaubt es, Applikationen zu erstellen die machtvoller und flexibler sind und, die auch ausserhalb des Browsers existieren können. Figure 1-2 zeigt die Ähnlichkeiten zwischen XPFE und DHTML. Beide verwenden JavaScript für die Funktionalität, CSS um Design und Layout zu definieren und eine einfache Markup-Sprache um den Inhalt zu beschreiben. Der einzige Unterschied zwischen den beiden ist, dass die eine Sprache HTML ist und die andere XUL.
Vergleich von DHTML und XPFE
Obwohl HTML für verschiedenste Zwecke eingesetzt wird, wurde es einst entwickelt um Dokumente im Internet untereinander zu verbinden. Spätere Weiterentwicklungen des HTML Standards haben die Funktionalität zwar erweitert, können jedoch leider immernoch keine Basis zur Applikationsentwicklung bieten. XUL ist eine Sprache die spezifisch dafür konzipiert wurde, User-Interfaces zu erstellen. Deshalb liegt es auf der Hand, dass XPFE besser zur Applikationentwicklung geeignet ist als DHTML. Da XUL in seiner Struktur HTML sehr ähnlich ist, helfen Vorkenntnisse von der Entwicklung von HTML Seiten enorm, um zu lernen wie man mit Mozilla Applikationen entwickelt. Selbst wenn sie HTML noch nie verwendet haben, bietet XUL durch die Verwendung eines einfachen Sets an Tags, eine komfortable Möglichkeit sich schnell einzuarbeiten. Sobald Sie sich an die Verwendung von XUL gewöhnt haben, sind Sie bereit XPFE zu verwenden um eigene Applikationen zu entwickeln.
Komponenten einer Mozilla Applikation Nebst diesen Basistechnologien existieren noch weitere Komponenten die in XPFE verwendet werden. Im Folgenden gehen wir auf die Punkte ein, die aus Mozilla dieses mächtige Applikationsentwicklungsframework machen. Beim zweiten Mozilla Developer Meeting führte Rob Ginda, der Author von ChatZilla, eine Diskussion über Mozilla als Plattform. Dort führte er folgende Komponenten einer Mozilla Applikation auf: XML-basierte User-Interface Language (XUL) Wird verwendet um die Struktur und den Inhalt einer Applikation zu definieren. Cascading Style Sheets (CSS) Werden verwendet um das Look&Feel einer Applikation zu bestimmen. JavaScript Wird verwendet um die Funktionalität der Applikation zu erstellen. Dabei ist zu beachten, dass auch andere ScriptSprachen wie Python, Perl oder Ruby an Stelle von JavaScript verwendet werden können. Cross-Platform Installation (XPInstall) Wird verwendet um eine Applikation so zu verpacken dass sie auf jeder Plattform installierbar ist. eXtensible Binding Language (XBL) Wird verwendet um wiederverwendbare Widgets aus einer Kombination von XUL und JavaScript zu erstellen. XPCOM/XPConnect Dient als Interface um JavaScript, beziehungsweise jeder anderen ScriptSprache, Zugriff auf C und C++ Libraries zu ermöglichen. XUL Templates Werden verwendet um Daten aus einer Kombination von RDF und XUL in die Applikation zu laden. Resource Description Framework (RDF) Format um Daten zu speichern/übermitteln. Wird meist als kompliziertester Teil des XPFE angesehen. Document Type Definition (DTD) Wird verwendet um Applikationen zu lokalisieren/internationalisieren; meist wird dafür L10N und I18N als Kurzform verwendet. Einige dieser Technologien sind im Begriff als Standards anerkannt zu werden. AOL übermittelte 2001 im Namen von mozilla.org XBL an das W3. Obwohl das W3C noch keine Kommentare dazu abgegeben hat, wird dies als erster Schritt zur Standartisierung angesehen. Die CSS Working Group des W3C hat nun die Möglichkeit den XBL Vorschlag zu evaluieren und kann daraus eine offizielle Recommendation erstellen. Jede der obgenannten Technologien ist wichtig und über viele könnte man ganze Bücher schreiben. Man sollte jedoch unterscheiden, zwischen solchen die für eine Mozilla Applikation unabdingbar sind, und solchen die optional sind. Es ist zum Beispiel möglich eine Applikation zu schreiben die keine DTDs verwendet (obwohl eine Applikation die nicht lokalisierbar ist für weltweite Benutzer wenig nützlich ist). Eine Applikation ohne XUL zu erstellen wäre andererseits praktisch unmöglich, da das Programm ansonsten keine Benutzerschnittstelle hätte.
Einrichten des Systems Bevor wir unser erstes Beispiel einer Mozilla Applikation anschauen, sollten Sie sicherstellen, dass sie Mozilla auf ihrem System installieren können, und auch über alle anderen Werkzeuge verfügen um eigene Applikationen zu entwickeln. Jeder Entwickler benötigt primär zwei Werkzeuge: Mozilla und einen Texteditor. Falls Sie mozilla noch nicht installiert haben, können Sie die Software von mozilla.org herunterladen. Sie können dabei zwischen zwei Arten der Distribution wählen. Entweder Sie laden ein bereits kompiliertes Packet für Ihre Plattform herunter, oder gleich den gesamten Sourcecode. Beides wird mit den Beispielen in diesem Buch funktionieren. Anhang A liefert weitere Informationen über die Ihnen zur Verfügung stehenden Optionen. Weiter benötigen Sie einen Texteditor. Jeder Editor der Text als 'plaintext' (ohne Formatierungen) speichern kann ist dafür geeignet. HTML Editoren funktionieren auch. Falls Sie normalerweise HomeSite, BBEdit, oder einen anderen Editor der HTML erzeugen kann, verwenden, können Sie das auch weiterhin machen, solange der Editor Dateien im Textformat speichern kann. Obwohl es für die Entwicklung weitere Werkzeuge wie Debugger und spezialisierte Editoren (ein paar davon werden in Anhang B näher beschrieben) gibt, reichen für den Anfang Mozilla und ein Texteditor völlig aus. Wenn Sie diese beiden Werkzeuge einmal installiert haben, sind sie bereit mit den Beispielen in diesem Buch zu arbeiten. Mozilla Applikationen Die bekanntesten Mozilla Applikationen sind wohl die, die Netscape mit Ihrer Browsersuite ausliefert - inklusive des Browsers, Mail und Newsgroup Clients, einem HTML Editor und einem InstantMessenger Chat Program. Dies sind jedoch nur ein paar der Applikationen die mit Mozilla erstellt wurden. Mozilla.org hostet die Entwicklung verschiedener Applikationen - aber Mozilla Applikationen können überall entwickelt und gehostet werden. Andere Orte an denen Mozilla Applikationen gefunden werden können umfassen http://www.mozdev.org/ (mit mehr als 70 Applikationen zur Zeit als dieses Buch geschrieben wurde) und andere Firmen-Webseiten welche Mozilla als Teil ihrer Produkte verwenden. Unseren ersten Blick auf Mozilla Applikationen richtet sich auf drei verschiedene Chat Clients. Bild 1-3 zeigt ein Beispiel von ChatZilla, einem Programm welches erlaubt mit anderen Benutzern via Internet Relay Chat (IRC) Server (wie irc.mozilla.org, wo Mozilla Entwickler sich im #mozilla Channel treffen) zu kommunizieren. ChatZilla kann separat oder als Teil von Mozilla installiert werden. Falls ChatZilla bei Ihnen bereits installiert ist, können Sie das Programm via Window > IRC Chat starten. Die zwei anderen Chat Clients sind AOL's InstantMessenger, der mit Netscape7 geliefert wird, und JabberZilla, ein plattformübergreifender Jabber Client.
ChatZilla, ein IRC Chat Client der mit Mozilla erstellt wurde
Browser und Chat Clients sind nur einige der Möglichkeiten. In den folgenden Kapiteln werden Sie lernen, wie Sie Mozilla Technologien verwenden können um Ihre eigenen Applikationen zu entwickeln. Sie werden lernen wie man XUL, CSS, JavaScript und andere Technologien und Konzepte einsetzt um einen eigenen Browser, Chat Client, Blog Editor, Word Processor, Adventure Game, Music Player, FTP Client, Rezept Organisator, Ferienplaner, Kalender, oder jede andere Applikation zu entwickeln. Lasst hundert Browser blühn Da Mozilla verwendet werden kann um Applikationen jeglicher Art zu erstellen, gibt es keinen Grund, nicht auch verschiedene Browser zu bauen. Verschiedene solche Projekte existieren bereits, unabhängig der Arbeit die für den Standard Mozilla Browser gemacht wird. Diese Auswahl ist ein grosser Vorteil, da die Mozilla Community nicht einen einzigen Browser entwickeln muss der alle Bedürfnisse abdeckt. Ein paar dieser Projekte arbeiten an einer Verbesserung des Mozilla Browser Interfaces. Eine der ersten Mozilla Applikationen, Aphrodite (http://aphrodite.mozdev.org), hat ein von der Mozilla Community erstelltes Interface. Auch das Firebird Projekt (http://www.mozilla.org/projects/firebird/) kümmert sich um das Interface und versucht Mängel an der Standardversion wett zu machen. In vieler Art sind diese Projekte dem erstellen von Themes sehr ähnlich, gehen aber noch einen Schritt weiter und verwenden XUL, CSS und JavaScript um das Layout des Browser Interfaces und nicht nur den Look anzupassen. Weitere Projekte entwickeln alternative Browser, welche aber anstatt Mozilla, plattformspezifische Interface Toolkits verwenden. Diese Projekte erstellen schlanke Browser die nur Gecko, Mozillas Layout engine, benutzen. Weil diese Projekte plattformspezifischen Code verwenden, sind sie auch nur auf bestimmten Plattformen lauffähig. Einige Beispiele sind Camino (http://www.mozilla.org/projects/camino/) für Mac OS X, Galeon (http://galeon.sourceforge.net) für Unix, und K-Meleon (http://kmeleon.sourceforge.net) für Windows. Diese Projekte sind nur einige der Beispiele der verschiedenen verfügbaren Browser. Andere umfassen Dino!, Beonex, SkipStone und BrowserG!. Falls Sie interessiert sind mehr über diese Browser zu erfahren, finden Sie unter http://www.mozdev.org/categories/browsers.html Links zu den Projekten. Falls Ihnen eine weitere Browserart einfällt die bisher noch nicht entwickelt wird, bauen Sie Ihre eigene mit Mozilla. Applikationen als Webseiten Mozilla macht keinen Unterschied zwischen Webseiten und Programmen welche mit XPFE entwickelt wurden. Dies ist nicht weiter verwunderlich, da Mozilla Applikationen und Webseiten konzenptionell sehr ähnlich sind (beide verwenden Markup Languages mit einer Kombination von Stylesheets, JavaScript und anderen Technologien). Die selbe Engine die verwendet wird um im Browser Webseiten anzuzeigen, wird also auch für Mozilla Applikationen verwendet. Dieses Konzept wird meist nicht deutlich, da Applikationen in eigenen Fenstern und nicht im Browser laufen. Gecko, der Name von Mozillas Rendering Engine, macht keinen Unterschied zwischen Mozilla Applikationen und Webseiten, deshalb müssen Applikationsentwickler Gecko mitteilen, dass etwas anderes gemacht werden muss wenn eine Applikation gerendered wird. Als Beispiel davon wie Gecko Applikationen rendered, können Sie den Mozilla Browser selbst im Browser laden (siehe Bild 1-4). Um dies zu tun, laden Sie Mozilla und schreiben chrome://navigator/content in die Locationbar (die Stelle des Browsers an der normalerweise die URL einer Webseite angegeben wird). Auf gewisse Weise ist der Browser selbst also eine Webseite.
Der Mozilla Browser der sich selbst rendered
Es ist komplett in Ordnung eine Applikation innerhalb des Browsers zu laden. Die meisten Entwickler benötigen jedoch die Browserinfrastruktur nicht für ihre eigene Applikation und lassen sie deshalb weg. Im nächsten Kapitel zeigen wir Ihnen, wie Sie eine eigene XUL Datei erstellen und diese im Browserfenster ausgeben lassen. Danach zeigen wir Ihnen wie Sie die Applikation selbstständig laufen lassen können, was Ihnen als Basis für Ihre eigene Applikation dienen wird.