Freie Software auf Basis von Java und XML

Apache baut seine Content-Plattform aus

18.01.2002
MÜNCHEN (ws) - Innerhalb der Apache Software Foundation (ASF) entstehen laufend neue Projekte, die vor allem Tools für das Bearbeiten, Speichern und dynamische Erzeugen von Content hervorbringen. Das Portfolio reicht mittlerweile von Basiswerkzeugen für XML und Java bis zu Frameworks für XMLPublishing und Content-Management.

Der Apache Web-Server gilt neben Linux als die Erfolgsgeschichte der Open-Source-Bewegung. Er ist unangefochtener Marktführer und erreichte laut Netcraft(http://www.netcraft.com) im Dezember 2001 weltweit einen Anteil von 63 Prozent. Der Apache-Server leistet indes längst schon viel mehr, als nur HTML-Seiten auszuliefern: Zahlreiche Module, die sich seine Plugin-Architektur zunutze machen, erweitern ihn zu einer eigenen Anwendungsplattform. Der Funktionsumfang von solchen Add-ons reicht von der Emulierung der "Microsoft Frontpage Server Extensions" (mod_frontpage) über Authentifizierung an diversen Verzeichnistypen und MP3-Streaming bis hin zu einer Vielzahl von Sprachinterpretern (eine Übersicht findet sich unter http://modules.apache.org).

Front gegen MicrosoftDabei erfreuen sich für die dynamische Generierung von Web-Seiten bei vielen Web-Mastern besonders PHP und Perl großer Beliebtheit. Der Apache-Server inklusive seiner zahlreichen Zusatzmodule gilt in Kombination mit anderer freier Software sogar als einer der größten Gegenspieler zu Microsofts Internet-Ambitionen. "Lamp"-Systeme (Lamp = Linux + Apache + MySQL + PHP/Perl/Python) finden immer stärkere Verbreitung und bilden mittlerweile auch die Grundlage von sehr großen Sites.

Für die ASF spielt die Weiterentwicklung des HTTP-Servers nach wie vor eine zentrale Rolle. Sie erfolgt im Rahmen eines eigenen Projekts, das kurz vor der Freigabe der Version 2.0 steht. Dieses Update wurde von Grund auf neu geschrieben und bringt eine Reihe neuer Funktionen mit sich. Als Vorteile der neuen Architektur nennen die Entwickler die leichtere Portierbarkeit auf Nicht-Unix-Systeme, bessere Unterstützung von Windows und eine einfachere Konfiguration. Eine Übersicht über die Funktionen findet sich unter http://httpd.apache.org/docs-2.0/new_features_2_0.html.

Neben dem Web-Server, mit dem das ganze Apache-Projekt begann, gewinnen zwei weitere Initiativen innerhalb der ASF zunehmend an Bedeutung. Es handelt sich dabei um "Jakarta" (http://jakarta.apache.org), ein Schirmprojekt für eine Reihe von Java-Aktivitäten, und das "XML Project" (http://xml.apache.org).

Ausgangspunkt für Jakarta war eine Codespende von Sun Microsystems. Die Unix-Company übergab ihre Referenzimplementierung für Java Servlets an die ASF. Daraus entstand inzwischen "Tomcat", eine Engine für Servlets und Java Server Pages (JSPs). Sie liegt aktuell in der Version 4 vor und setzt die Spezifikationen für Servlets 2.3 und JSP 1.2 um. Unter den Referenzimplementierungen für Java 2 Enterprise Edition (J2EE) nimmt Tomcat eine Sonderstellung ein. Während Sun für solche Beispielrealisierungen sonst nur Demonstrationscharakter vorsieht, wurde die Apache-Engine in puncto Stabilität und Geschwindigkeit für Produktionsumgebungen ausgelegt. Nicht zuletzt deswegen avancierte Tomcat zum meistgenutzten J2EE-Server und wird von vielen Tools-Herstellern als Bestandteil ihrer Entwicklungswerkzeuge ausgeliefert.

Die relative Eigenständigkeit von Tomcat gegenüber Apaches Web-Server kommt übrigens nicht nur dadurch zum Ausdruck, dass er über einen eigenen HTTP-Stack verfügt und für kleinere Installationen als Web-Server fungieren kann. Als Nachfolger von "Jserv" erweitert Tomcat zudem nicht bloß den ASFeigenen HTTP-Server um Servlet- und JSP-Unterstützung, sondern auch jene von Microsoft und Iplanet.

Kein Wildwuchs bei ProjektenÄhnlich wie der Web-Server, der als Gravitationszentrum für andere Open-Source-Projekte fungiert, entwickelte sich Tomcat ebenfalls zur Basis weiterer freier Projekte. Während aber die meisten Apache-Module außerhalb der ASF entstanden, siedeln sich immer mehr Java-Projekte unter dem Dach von Jakarta an. Dabei herrscht offensichtlich kein Wildwuchs, der zu einem Sammelsurium beliebiger Java-Software führt. Zwar kann die ASF als Dachorganisation für Open-Source-Projekte keine Softwarestrategie nach dem Muster eines kommerziellen Herstellers verfolgen. Dennoch ist sie zu einer strategischen Ausrichtung in der Lage, ohne die unabhängigen Entwickler zu einer bestimmten Arbeitsteilung überreden zu müssen. Aufgrund ihrer Anziehungskraft auf freie Teams drängen viele von ihnen unter das Dach der ASF, die dann ihrerseits die zu ihr passenden Projekte auswählen kann. Tatsächlich entstanden viele der Open-Source-Vorhaben zuerst in eigener Regie und stießen dann später zur ASF. Dazu zählen in jüngster Zeit etwa die Suchmaschine "Lucene" und die XML-Datenbank "Xindice", die zuvor unter der Bezeichnung "dbXML" entwickelt wurde.

Koordination in zwei RichtungenIn der Praxis macht sich die koordinierende Tätigkeit der ASF dadurch bemerkbar, dass sich die entstehenden Programme auf zwei Arten ergänzen: Einerseits bauen die Apache-Tools vertikal aufeinander auf, zum anderen erweitern die komplexeren Programme das Apache-Portfolio immer mehr zu einer vollständigen Content-Plattform. Das Jakarta-Projekt gliedert dementsprechend seine Software hierarchisch in drei Kategorien: erstens Bibliotheken, Tools und APIs, zweitens Frameworks und Engines sowie drittens Server-Anwendungen. Das XML-Projekt teilt seine Aktivitäten nicht explizit nach diesem Muster ein, faktisch unterliegen sie aber einer ähnlichen Ordnung. Als Basis-Tools gelten dort weniger Codebibliotheken und APIs, sondern die Parser "Xerces" und "Crimson" sowie der XSLT-Prozessor "Xalan". Sie finden in den meisten komplexeren Anwendungen des XML-Projekts Verwendung.

Jakarta weist im Vergleich zur XML-Abteilung eine größere Zahl an Projekten auf und bringt entsprechend auch mehr Basiswerkzeuge hervor. Die Tools der unteren Ebene zeigen noch keine so starke Ausrichtung auf die Verarbeitung von Content wie die Anwendungen. Viele davon entstanden als Nebenprodukte der Softwareentwicklung und fanden mittlerweile auch Verbreitung außerhalb der ASF. Dazu zählen etwa Testwerkzeuge wie "Jmeter", "Watchdog" oder "Cactus".

Wesentliche Bausteine für die Verbreitung von Textdaten repräsentieren die beiden Bibliotheken für reguläre Ausdrücke, "ORO" und "Regexp". Sie erweitern Java um die Möglichkeit, Texte nach dem Muster von Perl oder awk zu durchsuchen oder zu verändern. Allerdings werden diese Packages in Zukunft wahrscheinlich an Bedeutung verlieren, da Sun die Unterstützung für reguläre Ausdrücke mit dem JDK 1.4 zum Bestandteil der Standard-APIs macht.

Obwohl einfach unter Tools einsortiert, kommt dem Projekt "Taglibs" eine besondere Bedeutung zu. Es handelt sich dabei um den Versuch, ein offenes Repository für JSP-Custom-Taglibs zu etablieren. Diese bieten die Möglichkeit, eigene XML-Tags zu definieren, die in JSP-Anwendungen als Stellvertreter für Java-Funktionen genutzt werden. Auf diese Weise lässt sich vermeiden, dass große Codeblöcke in HTML-Seiten eingefügt werden müssen. Für die Verbreitung von JSP könnte dieses Projekt vielleicht eine ähnliche Aufgabe erfüllen wie das Cpan-Archiv (http://www.cpan.org) für Perl. Im Unterschied zur quelloffenen Scriptsprache verfügt Java allerdings dank der reichen Standard-APIs von Haus aus über einen viel größeren Funktionsumfang und bedarf daher nicht so dringend frei verfügbarer Bausteine. Dennoch zeigen Projekte wie Taglibs und das ganze Jakarta-Vorhaben, dass sich die Haltung der Open-Source-Gemeinde gegenüber Sun und Java geändert hat. Aufgrund der anfangs restriktiven Politik Suns sahen viele freie Teams in Java vor allem eine proprietäre Software. Nachdem die Unix-Company auch andere Unternehmen und Open-Source-Vertreter über den Java Community Process (JCP) an der Weiterentwicklung der Technologie teilhaben lässt, scheint sich zumindest bei Apache das Misstrauen gelegt zu haben.

Während die Projekte der unteren und mittleren Ebene primär Software entwickeln, die sich an Programmierer richtet und daher auch innerhalb der ASF reichlich genutzt wird, sind die als Server-Anwendungen deklarierten Programme für Anwender gedacht. Dort finden sich schon länger der Mail-Server "James", die Portalsoftware "Jetspeed" und "Alexandria", ein Tool für das Management von Quellcode und Dokumentationen.

Im Rahmen einer Content-Plattform, die Apache mittlerweile darstellt, kommt dem Content-Management eine zentrale Bedeutung zu. Um ein derartiges System handelt es sich bei "Slide", einem relativ jungen Projekt, das erst vor kurzem die Version 1.0 fertig stellte. Obwohl unter Applikationen aufgelistet, bezeichnen die Entwickler ihre Software als Framework. Dieses bietet sowohl in Richtung Autorenwerkzeuge als auch gegenüber Dokumentspeichern eine einheitliche Schnittstelle. Client-seitig setzt Slide auf einen Standard der Internet Engineering Task Force (IETF): Web-based Distributed Authoring and Versioning (WebDAV), eine Erweiterung für HTTP. Dieses Protokoll unterstützen mittlerweile zahlreiche Editoren, unter anderem auch Microsofts "Office".

CM-typische Features vorhandenAn Bedeutung gewinnt es zudem mit Windows XP, das dafür einen eigenen Netz-Redirector enthält, so dass auch alte Applikationen ohne WebDAV-Unterstützung auf Web-Ordner zugreifen können. Server-seitig implementiert Slide selbst den IETF-Standard als Servlet und greift nicht auf das entsprechende Apache-Modul zurück. In Richtung Dokumentspeicher plant das Team Adapter für unterschiedliche Produkte, etwa für Dokumenten-Management-Systeme oder Quellcode-Repositories. Die Anbindung von Dateisystemen und relationalen Datenbanken (via JDBC) ist bereits realisiert. Wie für CM-Systeme üblich, beherrscht Slide User-Authentifizierung, Versionierung, das Sperren ausgecheckter Dokumente, Indexierung und Durchsuchen der Textspeicher.

Während Slide als Subprojekt von Jakarta organisiert ist, findet sich das ebenfalls Java-basierende Publishing-Framework Cocoon in der XML-Abteilung. Dies zeigt, dass die Grenzziehung zwischen den zwei Überprojekten ziemlich schwer fällt, vor allem deshalb, weil fast alle XML-Produkte der ASF in Java geschrieben werden und diese Tomcat standardmäßig als Servlet-Engine vorsehen. Darüber hinaus nutzen die meisten Java-Projekte ihrerseits XML und greifen dazu auf die Parser und XSLT-Prozessoren Xerces und Xalan zurück.

Höhere Performance bei CocoonDas Cocoon-Team gab vor kurzem die Version 2 seiner Software frei, bei der es sich ebenfalls um eine weitgehende Neuentwicklung handelt. Gegenüber dem Vorgänger soll sie sich besonders durch deutlich höhere Ausführungsgeschwindigkeit auszeichnen. Cocoon erlaubt für XML-Dokumente unterschiedlichste Ausgabeformate und Endgeräte. Eine zentrale Rolle für die Umwandlung der XML-Daten spielt XSLT. Allerdings erlaubt die Technologie der Extensible Server Pages (XSP), dass Dokumente mehrere Prozesse durchlaufen, darunter auch selbst geschriebene Java-Prozeduren, bis das gewünschte Zielformat erreicht wird. Zur Umwandlung von XSL-FO-formatierten Daten nach Adobes PDF enthält Cocoon die Software eines weiteren Apache-Projekts, nämlich FOP. Diese Rendering-Engine unterstützte als eine der ersten den vollen Umfang der im Oktober 2001 verabschiedeten W3C-Empfehlung XSL-FO.

Auch wenn viele Angebote aus dem ASF-Portfolio besonders Programmierer ansprechen, so repräsentieren die High-Level-Applikationen für Anwender mittlerweile eine fast lückenlose Content-Plattform. Im Zentrum stehen dabei der funktionsreiche Web-Server und Tomcat als Erweiterung um Servlet- und JSP-Fähigkeiten. Darauf bauen ein Content-Management-Framework (Slide), eine Volltextsuchmaschine ("Lucene"), eine Portalsoftware (Jetspeed) sowie ein XML-Publishing-Produkt (Cocoon) auf. Mit dem Beitritt von dbXML zur ASF unter der Bezeichnung Xindice erhält die Open-Source-Plattform noch zusätzlich einen in Java geschriebenen XML-Speicher für das Backend.

Ausgewählte Apache-ProjekteHTTPD-Projekt:Entwickelt den Apache Web-Server und Plugin-Module.

Jakarta-Projekte:Ant: Build-Tool für Java.

BCEL ("Byte Code Engineering Library", früher "Javaclass"): dient der Analyse und Manipulation von (binären) Java-Klassen.

Common: Repository für wiederverwendbare Codekomponenten, die für mehrere Jakarta-Projekte nützlich sind.

ECS ("Element Construction Set"): Java-API, um Elemente für diverse Markup-Sprachen zu erzeugen. Direkte Unterstützung für HTML 4 und XML.

Jmeter: Java-Desktop-Anwendung für Belastungstests und Geschwindigkeitsmessungen.

Log4j: Java-Bibliothek für Log-Funktionen.

ORO: Sammlung von Java-Klassen, die reguläre Ausdrücke nach dem Vorbild von Perl 5 und AWK erlauben.

Regexp: Weiteres Regex-Paket für Java.

Taglibs: Eine offene Sammlung von Custom Tag Libraries für JSP, die die Entwicklung von Web-Applikationen vereinfachen soll.

Watchdog: Kompatibilitätstests für Servlet- und JSP-Container.

Avalon: Ein Set aus Frameworks, unter anderem "Excalibur" (gemeinsame Utilities für die Framework-Sammlung), "Phoenix" (Server-Framework) und "Logkit" (Logging-Tools).

Cactus: Einfaches Framework für das Testen Server-seitigem Java-Code.

Lucene: Volltextsuchmaschine in Java.

Struts: Framework zum Erstellen von Web-Applikationen mit Servlets und Java Server Pages.

Turbine: Framework zum Erstellen von Web-Applikationen mit Velocity oder Java Server Pages. Enthält auch Subprojekte wie "Torque", ein objektrelationales Datenbank-Tool.

Velocity: Allzweck-Template-Engine, eignet sich besonders für die Generierung von dynamischem Content.

Alexandria: Management-System für CVS, Javadoc, Quellcode und Dokumentationen.

James: Mail- und News-Server in Java, basiert auf dem Avalon-Framework.

Jetspeed: Benutzerkonfigurierbares Portalsystem auf Basis von Turbine.

Slide: WebDAV-fähiges Content-Management-System.

Tomcat 3: Offizielle Referenzimplementierung der Spezifikation Servlet 2.2 and Java Server Pages 1.1.

Tomcat 4: Offizielle Referenzimplementierung der Spezifikation Servlet 2.3 and Java Server Pages 1.2.

XML-Projekte:

Xerces: XML-Parser in Java und C++ (mit Perl- und COM-Hülle).

Crimson: XML-Parser, geht auf Suns "Project X Parser" zurück.

Xalan: XSLT-Prozessor in Java and C++.

Cocoon: XML-Publishing-Tool in Java.

Axkit: Cocoon-Funktionalität auf Basis von Perl.

FOP: Renderer für XSL Formatting Objects in Java.

Xang:Zur Entwicklung von dynamischen Web-Seiten mit Javascript.

Soap: Java-Implementierung des Simple Object Access Protocol, basiert auf Codespende von IBM.

Batik: Java-Toolkit für Scalable Vector Graphics (SVG).

Abb.1: Marktanteile der großen Web-Server

Quelle: Netcraft

Abb.2: Das Slide-Framework

Aufbau einer Content-Management-Plattform. Quelle: B.C. Holmes