Vorwort Mozilla ist nicht nur ein Webbrowser, sondern auch ein plattformübergreifendes Framework zur Applikationsentwicklung mittels Standards wie Cascading Style Sheets (CSS), XUL (der XML basierten User-interface Language), eXtensible Binding Language (XBL) und dem Resource Description Framework (RDF). Gecko, Mozillas Rendering-Engine, ist zusammen mit anderen Technologien wie XPConnect und XPCom (Mozillas Komponentenmodell) Teil dieses Frameworks. Das Framework verwendet weiter Programmiersprachen wie JavaScript, C++, C, Python und die Interface Definition Language (IDL). Das Mozilla Framework wird verwendet um Netscape's Mozilla basierte Browser (Netscape 6.x und 7.x), Galeon und Camino, und Chat-Clients wie ChatZilla und JabberZilla zu erstellen. Entwickler verwenden Mozilla auch um damit Entwicklungsumgebungen, Browsererweiterungen, Spiele und verschiedenste andere AddOns und Anwendungen zu entwickeln. Dieses Buch erklärt, wie Applikationen mit Mozilla entwickelt werden und bietet schrittweise Erklärungen wie Sie Ihre eigenen Programme mit Hilfe dieses mächtigen Cross-Plattform Frameworks erstellen. Dabei enthält es verschiedene Beispiele existierender Applikationen, um alle Möglichkeiten aufzuzeigen. Hintergrund, die Geschichte von Mozilla Als die Netscape Communications Corporation gegründet wurde, planten sie, eine verbesserte Version des NCSA Mosaic Browsers - der ersten Applikation die den Zugang zum Internet für normale Benutzer ermöglichte - zu entwickeln. Da diese Applikation ein 'Mosaic-Killer' werden sollte, setzte sich schnell die Kurzversion "Mozilla" als Codename für Netscapes Browser durch. Mozilla wurde danach weit mehr als ein Übername fuer Netscapes Produkte. Am 31. März 1998 startete die Seite http://www.mozilla.org/ auf welcher fortan die Entwicklung des neuen Communicator 5.0 Browsers stattfinden sollte. Zu diesem Zeitpunkt wurde Mozilla zu einem OpenSource Projekt und entwickelte ein Eigenleben weitab seiner Wurzeln bei Netscape. Als Netscape Netscape ihren Communicator Code der OpenSource Gemeinde übergab, taten sie etwas, das zuvor keine andere Software Firma gewagt hatte. Zu dieser Zeit wurde über die Weisheit dieses Entschlusses in weiten Teilen der Software Industrie und der Presse debatiert. Verschiedene andere Firmen haben es Netscape seither gleichgetan und Ihre Produkte der OpenSource Gemeinde zugänglich gemacht. Sun Microsystems veröffentlichte zum Beispiel http://www.openoffice.org/ und http://www.netbeans.org/. Apple basiert den Kern ihres neuen Betriebssystems auf einem OpenSource Projekt namens Darwin, welches auf http://developer.apple.com/darwin/ gefunden werden kann. Ein Jahr nachdem der Mozilla Quellcode veröffentlicht worden war, sagte Mike Homer, ein Senior Executive von Netscape: "Mozilla is larger than Netscape, and that was its intention. Mozilla is essentially a collaborative project that was sponsored by a commercial entity. Some of the people that staff mozilla.org are Netscape employees, and the code that was contributed was code previously owned by Netscape. However, it's also true that the code base will take on a life of its own someday." Frei übersetzt: "Mozilla ist grösser als Netscaoe und dies war auch beabsichtigt. Mozilla ist ein Gemeinschaftsprojekt das von einer komerziellen Stelle unterstützt wird. Ein Teil der Leute die mozilla.org ausmachen sind Angestellte von Netscape und der Code den sie beisteuern, war vormals geistiges Eigentum von Netscape. Es ist jedoch absehbar, dass die Codebase über die Zeit ein eigenes Leben entwickeln wird." Seit dem Projektstart sind viele Leute, die nichts mit Netscape zu tun haben dazugestossen, obwohl viele Netscape (jetzt AOL) Mitarbeiter immernoch ihren Beitrag zur Weiterentwicklung leisten. Die Mozilla Gemeinde wächst über ihr angestammtes Zuhause mozilla.org hinaus. Weitere Quellen, deren Besuch sich lohnt, umfassen http://www.mozillazine.org/ eine Newssite und http://www.mozdev.org/ eine Seite die Hosting für Mozilla Applikationen anbietet. Verschieden Firmen, darunter IBM, Red Hat, ActiveState und Sun Microsystems haben ihren Beitrag zu Mozilla beigesteuert. Red Hat zum Beispiel, weil sie die Entwicklung einer Alternative zum ClosedSource Netscape 4.x Browser, den sie in ihrer Distribution verteilen, vorantreiben wollen. AOL spielt mit dem Gedanken Mozilla in ihren neusten CompuServe und AOL Clients einzusetzen. Da Mozilla SourceCode jeder interssierten Stelle zugänglich gemacht wird, profitiert die Gemeinschaft von einem hohen Mass an Vorschlägen, Bug Reports, Patches und neuen Entwicklern. Gemeinsam mit den Entwicklern der ersten Stunde prägen somit alle involvierten die Entwicklung des Projekts. Mozillas Status Mozilla 1.0 wurde am 5. Juni 2002 nach mehr als 5 Jahren Entwicklungszeit als OpenSource Projekt veröffentlicht. Dieses Buch ist so geschrieben, dass alle Beispiele auf jedem 1.0.x Release lauffähig sind. Nach dem 1.0 Release wurden zwei Entwicklungszweige definiert. Der stabile 1.0 Zweig wird verwendet um Bugs im 1.0 Release zu beheben. Update Releases aus diesem Zweig werden als Version 1.0.x deklariert. Jeder 1.0.x Release soll vollständig mit dem original 1.0 Release kompatibel sein (aber natürlich weniger Fehler enthalten) Der zweite Zweig ist der CVS Zweig. Neue Releases aus der Entwicklung werden mit 1.x bezeichnet und können neue Features, Änderungen der Architektur oder andere Zusätze enthalten, die das Mozilla Projekt weiter bringen. Diese neuen 1.x Releases könnten mit Applikationen die für die 1.0/1.0.x Releases erstellt wurden nicht vollständig Kompatibel sein. Dennoch hat mozilla.org verbindlich erklärt, das eingeforene API der 1.x Serie bis zum 2.0 Release kompatibel zu halten. (Einschliesslich XUL und XBL Syntax). Konsultieren Sie http://www.mozilla.org/roadmap/mozilla-1.0.html für weitere Informationen. Weil Mozilla selbst weiterhin aktiv entwickelt wird, können Applikationen die auf anderen Versionen des Frameworks beruhen von neuen Releases betroffen sein. Wir empfehlen dazu die Mozilla Roadmap zu konsultieren, die Sie unter http://www.mozilla.org/roadmap.html finden. Wir emfehlen weiter, dass Sie eine Mozilla 1.0.x Version verwenden, wenn Sie mit den Beispielen aus diesem Buch arbeiten. Ermutigen Sie jedoch auch den neusten Release der 1.x Serie zu installieren, damit Sie die Weiterentwicklung von Mozilla mitverfolgen können. Wer dieses Buch lesen sollte Dieses Buch dient vor allem Programmieren (und denen die's werden wollen) die an diesem brandneuen Mozilla Entwicklungs Framework interressiert sind. Es ist jedoch nicht notwendig dass Sie ein professioneller Programmierer sind um mozilla-basierende Applikationen zu erstellen. Wie wir in den folgenden Kapiteln aufzeigen werden, müssen Sie nur ein Grundverständnis einiger Technologien haben, welche die meisten Web-Entwickler sowieso bereits kennen: CSS, XML und Javascript. Dies ist einer der Vorteile von mozilla-basierenden Applikationen. Die Lernkurve ist nicht so steil wie bei C, C++ oder Java. Ihre Applikation wird automatisch plattformübergreifend, (obwohl es Ihnen freisteht auch plattformspezifische Applikationen zu bauen) und von jedem Benutzer der Mozilla verwendet einfach über das Internet installierbar sein. Was können Sie von einer Entwicklungsumgebung mehr erwarten? Dieses Buch geht davon aus, dass der Leser ein gewisses Verständnis von JavaScript, CSS, HTML und XML hat. Falls Sie diese Technologien bisher nicht eingesetzt haben, mag es sinnvoll sein, entsprechende Bücher während dieser Lektüre beizuziehen. Ein paar brauchbare O'Reilly & Associates Titel sind zum Beispiel JavaScript: The Definitive Guide, Cascading Style Sheets: The Definitive Guide, HTML & DHTML: The Definitive Guide, Learning XML und XML in a Nutshell, Second Edition. Konzepte und Technologien die in Mozilla neu sind, oder auf eine andere Art angewendet werden, sind in diesem Buch detailliert beschrieben. Das Buch geht weiter davon aus, dass der Leser Zugang zu einem Computer mit Mozilla 1.0 (oder einer späteren Version) und einer Textverarbeitung hat. Mozilla läuft auf fast allen Personal-Computer Systemen - es sollte daher ein Leichtes sein, eine kompatible Platform zu finden. Die gesamten Systemanforderungen eines jeden Mozilla Releases finden Sie auf mozilla.org. Plattform und Applikationen Einige Entwickler arbeiten an Mozilla und dessen Arbeitsweise und andere Entwickler verwenden Mozilla um neue Applikationen zu entwickeln. Diese beiden Ansätze reflektieren die zweiseitige Natur von Mozilla als eigenständiges Projekt und als Entwicklungsumgebung für neue Applikationen, wobei die Linie zwischen den beiden nicht immer ganz klar gezogen werden kann. Normalerweise beginnt man damit, eine neue Applikation zu entwickeln, um dann Wege zu finden wie Mozilla selbst noch besser funktionieren könnte, was wiederum die Performance der eigenen Applikation verbessert würde. In diesen Fällen arbeiten Entwickler an der Mozilla Applikation und dem Framework gleichzeitig, um diese aufeinander abzustimmen. Die Hervorhebung des Unterschieds zwischen Plattform und Applikation ist wichtig. Dieses Buch handelt vor allem von der Applikationsentwicklung und nicht von der Entwicklung von Mozilla selbst. Falls Sie lernen möchten wie man Mozilla Entwickler wird (und Mozilla Code schreibt), können wir Ihnen hier einige Startpunkte geben. Getting Your Work Into Mozilla ist ein Artikel zweier Entwickler, die Ihren Weg in das Mozilla Projekt aufgezeichnet haben und hier http://www.oreillynet.com/pub/a/mozilla/2000/09/29/keys.html verfügbar ist. Weitere Informationen finden Sie direkt auf der Mozilla Seite unter http://www.mozilla.org/get-involved.html. Aufbau dieses Buches Dieses Buch ist so aufgebaut, dass Sie Ihre erste einfache Mozilla Applikation nach dem lesen des 6. Kapitels verteilen können. Sie sollten auf jeden Fall die Kapitel 1-6 lesen und die Beispiele durcharbeiten. Die späteren Kapitel gehen darauf ein, wie man die Möglichkeiten von Mozilla voll ausschöpfen kann. Somit können Sie die Kapitel 7-12 in der Reihenfolge lesen die Ihnen beliebt. Kapitel 1 gibt eine Übersicht von Mozilla und der Vorteile des Frameworks. Konzeptionell gibt Ihnen dieses Kapitel ein gutes Verständnis davon, wie JavaScript, CSS und XUL für die Applikationsentwicklung eingesetzt werden. Kapitel 2 geht auf die technischen Aspekte der Entwicklung von Mozilla Applikationen ein. Zwei 'Hello World' Beispiele helfen Ihnen Ihr erstes, eigenes Applikationslayout zu erstellen. Kapitel 3 ist eine Einführung in die XML-basierte User-Interface Language. Es wird gezeigt, wie man XUL Dokumente erstellt und wie man XUL Tags verwendet, um ein Applikationsgerüst zu erstellen. Kapitel 4 zeigt wie Cascading Style Sheets verwendet werden um das Look&Feel Ihrer Applikation anzupassen und wie eigene CSS Dateien mit XUL Dateien zusammenarbeiten. Kapitel 5 beschreibt wie Sie mit JavaScript Funktionalität für Ihre Applikation bauen und wie eigene JS Dateien der Applikation hinzugefügt werden können, die mit den bestehenden XUL und CSS Dateien interagieren. Kapitel 6 erklärt wie eine Applikation verpackt wird, damit sie auf verschiedenen Computern installiert werden kann. Wenn Sie Ihre eigenen XUL, CSS und JS Dateien erstellt haben, können Sie diese zusammenpacken und als Mozilla Applikation verteilen nachdem Sie dieses Kapitel gelesen haben. Kapitel 7 ist das erste Kapitel für Fortgeschrittene, das Ihnen zeigt, wie sie das Applikations Framework, das in den Kapiteln 1-6 beschrieben wurde, erweitern können. Dieses Kapitel beschreibt, wie man die eXtensible Binding Language verwenden kann, um wiederverwendbare Widgets die die Organisation einer komplexen Applikation vereinfachen, zu erstellen. Kapitel 8 untersucht Mozillas plattformübergreifendes Komponentenmodell. Nach der Lektüre dieses Kapitels sollten Sie in der Lange sein existierende skriptbare Komponenten in Ihrer Applikation zu finden und einfache XPCOM Komponenten mit JavaScript oder C++ zu schreiben. Kapitel 9 erklärt wie Sie dynamische Inhalte in Ihrer Applikation verwenden können, die aus einer Datenbank, durch Benutzereingaben oder anderen Quellen aktualisiert werden. XUL Templates beruhen auf RDF. Es ist jedoch nicht nötig RDF vollständig zu verstehen um XUL Templates verwenden zu können. Kapitel 10 geht näher darauf ein, wie Mozilla Datenquellen mit dem Resource Description Framework konfiguriert. RDF wird in XUL Templates aber auch an anderen Stellen verwendet. Obwohl es eine der kompliziertesten Technologien ist, ist RDF den initialen Lernaufwand sicher wert. Kapitel 11 zeigt, wie Sie Ihre Applikation durch Lokalisierung mit verschiedenen Sprachen zugänglicher machen können. Dieses Kapitel zeigt wie Document Type Definitions und sogenannte String Bundels verwendet werden um das Interface einer Applikation und deren Inhalte zu übersetzen. Ein Beispiel dafür sind die Hilfe- Dokumente die sie vieleicht mit Ihrer Applikation verteilen. Kapitel 12, zeigt einen alternativen Installationvorgang auf der gewisse Vorteile gegenüber der direkten Installation wie sie in Kapitel 6 beschrieben wird aufweist. Wenn Sie Ihre Applikation über einen Server verteilen können Sie gewisse Features verwenden, die sonst nicht möglich wären. Die drei Anhänge liefern zusätzliche Informationen die nicht direkt mit einem der Kapitel zusammenhängen. Anhang A, erklärt wie Mozilla gestartet werden kann wenn man über den Quellcode verfügt. Anhang B, beschreibt Projekte die Sie bei Ihrer Entwicklungsarbeit unterstützen. Anhang C, dient als Referenz um Informationen zu XUL und XBL Elementen und Event Attributen nachzuschlagen. Dieses Buch ist so aufgebaut, dass der Leser nicht das ganze Buch lesen muss um zu den benötigten Informationen zu kommen, sondern einzelne Kapitel heraussuchen kann und trotzdem nützliches Wissen erhält. Ein Grafikdesigner kann zum Beispiel die Kapitel über XUL und CSS lesen um zu lernen wie man ein Applikationsinterface entwickeln kann, um dieses danach dem Programmierer zu übergeben, der die Funktionalität einbaut. Wie dieses Buch entstanden ist Dieses Buch wurde als gemeinschaftliches Projekt auf http://books.mozdev.org erstellt. Die Authoren dieses Buches erfuhren während der Arbeit mit Mozilla den Nutzen von OpenSource Methoden und wollten diese Vorteile in die Entstehung dieses Buches einfliessen lassen. Der Inhalt dieses Buches wurde unter der Open Publication License (OPL) veröffentlicht und kann auf der vorhergenannten Seite und auf http://www.oreilly.com/catalog/mozilla/ eingesehen werden. Jeder der/die gerne an der Weiterentwicklung dieses Buches mitarbeiten möchte wird ermutigt unsere Website zu besuchen; so kann sichergestellt werden, dass das Buch weiterhin von Nutzen für die Mozilla Gemeinschaft bleibt. Die verwendeten Beispiele im Buch enthalten Fragmente die extra erstellt wurden um bestimmte Aspekte von Mozilla hervorzuheben. Weiter werden verschiedene existierende Mozilla Applikationen als Beispiel verwendet. Informationen dazu finden Sie in den entsprechenden Kapiteln. Alle numerierten Beispiele können online unter http://books.mozdev.org/examples/ und http://www.oreilly.com/catalog/mozilla/ konsultiert werden. Mozilla Lizenzierung Der Mozilla Quellcode ist frei verfügbar und wurde unter verschiedenen Lizenzen veröffentlicht. Hier werden zwar keine Details der Lizenzierung besprochen, wir möchten jedoch ein paar Hinweise auf weiterführende Informationen liefern: Verschiedene Lizenzen tauchen im Zusammenhang mit dem Mozilla Quellcode auf, inbegriffen der Mozilla Public License (MPL) MPL (Mozilla Public License) Mozilla Public License (MPL), Netscape Public License (NPL), GNU General Public License (GPL), und der GNU Lesser General Public License (LGPL). Diese breite Selektion an Lizenzen wurde gewählt um den Quellcode einer möglichst breiten Benutzergruppe zugänglich zu machen. Code der in den Mozilla Quellbaum geladen wird muss mit den mozilla.org Lizenzierungsgrundsätzen kompatibel sein. Da Mozillaapplikationen überall erstellt und gespeichert werden können gibt es verschiedenste Wege wie eine Applikation lizenziert und vertrieben werden kann. Eine Option ist, die Applikation mit oder ohne Zugang zum Quellcode zu verkaufen. Weiterführende Informationen zu Mozilla's Lizenzierung und dazu wie Mozilla Applikationen lizenziert werden können, finden Sie auf der mozilla.org Lizenzseite, unter http://www.mozilla.org/MPL/. Falls Sie Fragen haben, können Sie diese auch direkt an die Lizenz-Newsgroup netscape.public.mozilla.license oder die Lizenz-Mailingliste mozilla-license@mozilla.org senden. Konventionen Folgende Konventionen werden in diesem Buch verwendet: Nichtproportionalschrift wird verwendet für: Code Beispiele und Fragmente Alles das in einem HTML Dokument verwendet werden könnte, einschliesslich Element Namen, Tags, Attributwerte, Entität-Referenzen und Ablauf-Anweisungen. Alles das in einem Programm auftauchen könnte, inklusive Schlüsselworte, Operatoren, Methodennamen, Klassennamen, Befehle und Symbole. Nichtproportionalschrift (fett) wird verwendet für: Benutzereingaben und Code Beispiele Heraushebung von Code in Beispielen Kursivschrift wird verwendet für: Neue Terminologie soweit diese definiert ist Server- und Domainnamen(http://www.mozdev.org/) URLs (http://books.mozdev.org/index.html) Schnittstellen- und Variablennamen Nichtproportionale Kursivschrift wird für ersetzbare Dinge wie Variablen oder optionale Elemente innerhalb der Syntaxlinien von Code verwendet. Besondere Aufmerksamkeit sollten Sie Notizen widmen, die anhand folgender Symbole neben dem Text platziert sind: Ein Tip, Vorschlag oder eine generelle Notiz. Enthält nützliche Informationen zum besprochenen Thema. Bezeichnet Warnungen. Hilft damit Probleme zu lösen/verhindern. Wichtige Code Fragmente, komplette Programme und Dokumente werden normalerweise in einem separaten Paragraph, wie folgt, dargestellt: <?xml version="1.0"?> <!DOCTYPE window> <window xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> </window> Kommentare und Fragen Bitte richten Sie Fragen und Kommentare betreffend der Originalversion dieses Buches an den Verleger: O'Reilly & Associates, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 1-800-998-9938 (Vereinigte Staaten, Kanda) 1-707-829-0515 (International) 1-707-829-0104 (fax) Zu diesem Buch existiert eine Webseite, welche Druckfehler, Beispiele und zusätzliche Informationen anbietet. Diese Seite erreichen Sie unter: http://www.oreilly.com/catalog/mozilla Kommentare und Technische Fragen zu diesem Buch können an folgende eMail Adresse gerichtet werden: bookquestions@oreilly.com Für zusätzliche Informationen zu diesem Buch, Konferenzen, Resource Centers und O'Reilly Network, besuchen Sie bitte die: O'Reilly web site http://www.oreilly.com/ Danksagungen Dieses Buch wurde dank der Hilfe von vielen verschiedenen Leuten ermöglicht. Laurie Petrycki und Paula Ferguson sind die Redaktoren von O'Reilly die behilflich waren das Buch zu kreieren. Ihre Begleitung und Ihr Feedback war während dem gesamten Prozess usserst hilfreich. Weiter möchten wir uns bei Ann Schirmer, Mary Brady, Betsy Waliszewski und David Chu von O'Reilly für Ihre Arbeit bei der Erstellung und der Promotion dieses Buches bedanken. Viele andere Leute halfen uns mit Ihren Ideen, Vorschlägen und Feedback. Unter anderem: Martin Kutschker, Andreas Otte, Andy Edmonds, Mike Potter, Chris Waterson, Mark Murphy, Pavol Vaskovic, Andrew Wooldridge, Doug Turner, Tao Cheng, Michael Ang, Neil Rashbrook, Rob Ginda, Steve Rudman, Kathleen Brade, Zach Lipton, Cameron Barrett,Chiko Chow, Jan Varga, Axel Hecht, David Ascher, Michael Gannon, David McNamara, Mark Hammond, Gary Frederick und Andreas Halter. Verschiedene Applikationsentwickler erlaubten uns ihre Projekte in diesem Buch als Beispiele zu verwenden. Wir bedanken uns bei Rob Ginda für die Verwendung seines IRC-Clients ChatZilla, seines JavaScript-Debuggers Venkman und seines XULKit-Entwicklungswerkzeugs, David Gillen für sein Snake-Game, Neil Rashbrook für das XULMine Spiel, Andy Edmonds und Pavol Vaskovic für Optimoz und Mouse Gestures, Henrik Lynggaard für MozillaTranslator, David Hyatt und Mike Pinkerton für den Camino Browser und Gervase Markham dafür dass wir Patch Maker referenzieren dürfen. Weiter danken wir Joshua Lerner der mit der Entwicklung der eigentlichen Pläne für dieses Buch vertraut war und auch als Reviewer geholfen hat (Joshua und Kerry Fitzpatrick liessen auch einige ihrer Mitarbeiter bei Alphanumerica an Mozilla arbeiten und finanzierten die erste Mozilla Developer Conference). Wir danken Julia Kleyman für einige der Illustrationen die in diesem Buch verwendet werden, inklusive dem xFly-Logo (nicht zu vergessen, die FruityGum skin). Danke auch an Eoin Campbell für seinen Support der Mozilla Entwickler, und dafür dass er schon sehr früh erkannt hat dass man Mozilla zur Applikationsentwicklung verwenden kann. Wir möchten auch den Leuten danken die uns unterstützten während dieses Buch geschrieben wurde, eingeschlossen Kim Steckler, Rachel Oeschger, Marjana Molan, Lia Molan King und Priscilla, Dylan und Devon Collins.