Ajax-Entwicklung erobert Eclipse

11.07.2006 von Bernhard Steppan  
Eclipse spielt eine große Rolle als quelloffene Entwicklungsumgebung und als Rich-Client-Plattform. Mit dem Projekt Rich Ajax Platform (RAP) eignet sich das Framework auch zur Erstellung von Web-Anwendungen.

Eclipse hat als quelloffenes Framework einen interessanten Weg genommen. Version 1.0 brachte Ende 2001 vor allem eine Java-Programmierumgebung. Das Mitte 2002 herausgebrachte Release 2.0 von Eclipse wurde bereits als universelle Tool-Plattform positioniert, in die andere Anbieter ihre Werkzeuge einklinken können. Schließlich reifte die Erkenntnis, dass sich die Eclipse-Plattform mit ihren Plug-in-Mechanismen und Bibliotheken nicht nur für Entwicklungswerkzeuge, sondern auch für normale Anwendungen einsetzen lässt.

RAP-Anwendungen lassen sich mit Hilfe von W4T Eclipse visuell entwickeln.

Seinen Ausdruck fand dies Mitte 2004, als Eclipse 3.0 die Rich Client Platform (RCP) einführte. Diese sorgte dafür, dass sich Eclipse für normale Client- oder Stand-Alone-Anwendungen weit besser eignet als zuvor. Denn bis zur RCP-Einführung musste jede normale Anwendung, die Eclipse als Basis nutzen wollte, unfreiwillig auch die Tool-spezifischen Bestandteile der Plattform wie den Workspace übernehmen. Da diese Teile für normale Anwendungen meist nutzlos sind, restrukturierte die Eclipse Foundation den internen Aufbau der Gesamtplattform. Sie gliederte sie in Bereiche, die für alle Anwendungen notwendig sind (RCP), und solche, die ausschließlich für Tools erforderlich sind.

Eclipse auf dem Server?

Im Gegensatz zur Client-Entwicklung schien der Einsatz der Plattform für Server-Anwendungen bis vor kurzem noch vollkommen abwegig. Schließlich besteht ein Großteil der Eclipse-Plattform aus Bibliotheken, die ursprünglich für die Programmierung von Entwicklungswerkzeugen und anderen Rich Clients konzipiert wurden. Für die meisten Entwickler liegt es also nicht auf der Hand, die Plattform für die Server-Entwicklung und damit für Web-Anwendungen zu benutzen.

Die Verteilung einer RAP-Anwendung auf einen Web-Server durch den W4T Deployment Assistant.

Doch ein Blick auf die Technik zeigt, dass der Einsatz auf dem Server durchaus einige Vorteile bringen kann. Eclipse-Anwendungen bestehen aus Plug-ins, also aus Java-Komponenten mit einer standardisierten Schnittstelle. Diese Bausteine enthalten definierte Erweiterungspunkte (Extension Points), über die sich die Komponenten leicht durch Zusatzfunktionen erweitern lassen. Ein weiterer Vorteil des Modulsystems der Eclipse-Plattform ist, dass sich Abhängigkeiten für das Hinzufügen, Entfernen oder den Austausch von Komponenten definieren lassen. Das Laufzeitsystem von Eclipse, die OSGi-Runtime, gestattet hierbei sogar, Updates während des Betriebs der Anwendung einzuspielen.

Rich Ajax Platform

Pro

  • Kostenfrei;

  • überträgt RCP-Konzepte auf Web-Anwendungen;

  • keine Ajax-Kenntnisse erforderlich.

Kontra

  • Einarbeitungsaufwand für Web-Entwickler.

Ein so hoch entwickeltes Modularisierungskonzept ist für Client- und für Server-Anwendungen interessant. Es würde nicht nur erlauben, Server-Anwendungen analog zu Eclipse-Clients zu programmieren, sondern auch, sie auf die gleiche komfortable Weise zu aktualisieren. In der Eclipse-Entwicklergemeinde führten diese Überlegungen zu einigen neuen Projektanträgen, darunter die der Rich Server Platform und der Rich Ajax Platform. Die Rich Ajax Platform ist noch nicht veröffentlicht worden und befindet sich derzeit in einem Betatest. Sollte der Vorschlag von der Eclipse-Foundation angenommen werden, ist mit einer Version 0.5 gegen Ende dieses Jahres und mit einer finalen Version 1.0 im Lauf von 2007 zu rechnen.

Eclipse-Plattform

Die Begriffe Eclipse-Bibliotheken und Eclipse-Plattform werden immer wieder verwechselt. Die Eclipse-Plattform besteht aus Plug-in- und Update-Mechanismen sowie aus einer Reihe von Bibliotheken, die nicht von Sun stammen und daher auch nicht Teil der Java 2 Standard Edition (J2SE) sind. Es handelt sich vor allem um GUI-Bibliotheken zur Entwicklung von grafischen Oberflächen wie dem SWT und die übergeordneten Bibliothek wie JFace oder das Eclipse Modeling Framework (EMF).

Wer nur die Eclipse-Bibliotheken verwenden möchte, baut seine Anwendungen frei nach eigenen Architekturvorstellungen auf. Er setzt die Bibliotheken für die grafische Oberfläche ein, was zum Beispiel für kleine Anwendungen oder Migrationen kompletter Anwendungen zu empfehlen ist.

Wer hingegen größere Java-Anwendungen (zum Beispiel Rich Clients) mit Eclipse-Bibliotheken entwickeln möchte, sollte auch die Plug-in- und Update-Mechanismen nutzen und ist deshalb mit der Eclipse-Plattform als Entwicklungsbasis eindeutig besser beraten. Er erspart sich damit, komplexe Funktionen wie das Modularisierungskonzept selbst zu implementieren.

Parallele Welten

Vergleich zwischen der Rich Client Platform und der Rich Ajax Platform.

Die Rich Ajax Platform ist eine Initiative des Karlsruher Softwarehauses und Eclipse-Mitglieds Innoopract. Die Plattform schließt einen großen Teil der bekannten W4T-Bibliothek (WWW Widget Toolkit) von Innoopract ein. Sie erweitert die Widgets dieser Bibliothek um Ajax-Funktionen. Der Ansatz, den der Hersteller hierbei gewählt hat, ist eine vollkommene Abkehr von dem, was Java-Web-Entwickler gewohnt sind: das "duale System" aus Java Server Pages in Verbindung mit Javabeans. Innoopract hat stattdessen eine Architektur umgesetzt, die dem Aufbau der Rich Client Platform von Eclipse ähnelt. Während unter RCP das Standard Widget Toolkit (SWT) für eine systemübergreifende Schnittstelle zu den Widgets des Betriebssystems sorgt, nimmt diese Rolle unter RAP das W4T ein.

Entwickler, die mit Struts oder Java Server Faces arbeiten, müssen für die RAP-Programmierung komplett umdenken. Dem RCP-erfahrenen Entwickler bietet RAP dagegen ein vertrauteres Bild. Eine RAP-Web-Anwendung besteht wie eine RCP-Anwendung ausschließlich aus Java-Klassen. Diese verwenden Widgets und Hilfsklassen der Basistechnik W4T, die sich in ihrer Namensgebung an die Vorbilder aus SWT und JFace anlehnen. Innoopract hat diese Widgets mit Ajax-Funktionen angereichert, so dass die Anwendungen deutlich schneller reagieren, als man es von normalen Web-Anwendungen gewohnt ist. Ein weiterer Vorteil der neuen Ajax-Plattform ist, dass sich der Entwickler nicht mit der komplexen Ajax-Entwicklung beschäftigen muss, da die Ajax-Funktionalität von der W4T-Bibliothek gekapselt wird.

Wird die Rich Ajax Platform von der Eclipse Foundation angenommen, hat Innoopract vor, als Basis einen Teil der Web-Bibliothek WWW Widget Toolkit in das neue Open-Source-Projekt einzubringen. Das bedeutet, dass ein kleiner Teil der W4T-Bibliothek weiterhin kommerziell bleiben wird. Betroffen davon sind zum Beispiel die Rendering Kits, die für die korrekte Darstellung der erzeugten HTML-Seiten sorgen. Für die Open-Source-Version ist laut Innoopract geplant, lediglich Firefox und den Internet Explorer zu unterstützen.

Visuelle Web-Entwicklung

Ebenfalls nicht zur Veröffentlichung als Open Source bestimmt ist der größte Teil der speziellen Entwicklungswerkzeuge für RAP, das "W4T Eclipse" von Innoopract. W4T Eclipse besteht im Wesentlichen aus einem GUI-Builder, einer neuen Eclipse-Perspektive und einem Deployment-Werkzeug. Mit Hilfe des GUI-Builders kann der Programmierer die Oberfläche seiner RAP-Web-Anwendung visuell im Wysiwyg-Modus gestalten, Widgets von einer Komponentenpalette ziehen und das Layout in einer Voransicht ohne Compiler-Lauf überprüfen.

Google Web Toolkit versus RAP

Google stellte kürzlich eine Ajax-Bibliothek mit der Bezeichnung "Google Web Toolkit" (GWT) vor, die einige Parallelen zur Rich Ajax Platform von Innoopract aufweist. Wie bei RAP besteht die Oberfläche der Web-Anwendung vollständig aus Java-Klassen, die sich problemlos in einer IDE wie Eclipse debuggen lassen. Ansonsten sind die Unterschiede gravierend. Zum Beispiel ist eine GWT-Anwendung nach einem eigenen Programmiermodell und nicht nach dem Eclipse-Muster aufgebaut. Sie lässt sich daher auch nicht ohne Zusatzaufwand in Plug-ins zerlegen.

Entspricht die Oberfläche den Vorstellungen, lässt sie sich mit Hilfe des in Eclipse integrierten Tomcat ausführen und entweder im integrierten HTML-Viewer oder einem externen Browser darstellen. Das Erscheinungsbild der RAP-Web-Anwendung gleicht hierbei auf den ersten Blick dem einer Eclipse-Rich-Client-Anwendung. Die W4T-Klassenbibliothek hält eine Fülle von Widgets wie Tab-Controls oder Tree-Controls und entsprechende Java-Layout-Manager wie das WebGridLayout bereit, die helfen, die Oberflächen von Web-Anwendungen wie Rich Clients zu gestalten.

Für die Verteilung der Anwendung auf einem Web-Server steht der W4T Deployment Assistant des W4T Eclipse zur Verfügung. Er gestattet die Auswahl von Web-Konfigurationsdateien (web.xml, w4t.xml), der abhängigen Bibliotheken und bündelt die Bestandteile der Web-Anwendung mit Hilfe von Ant zu einer WAR-Datei. Diese kann danach auf einem Web-Server wie Apache/Tomcat in gewohnter Manier installiert und ausgeführt werden.

Für den Java-Programmierer, der mit der Rich Client Platform vertraut ist, hat die Rich Ajax Platform den Vorteil, dass er sich weitestgehend auf bekanntem Terrain bewegt und durch die W4T-Bibliothek größtenteils von der klassischen Web-Entwicklung abgeschirmt wird. Die Oberfläche seiner Ajax-Web-Anwendung besteht intern ausschließlich aus Java-Klassen. Das in der Web-Entwicklung häufig anzutreffende Gemisch aus HTML-Dateien, die mit Skripten oder Tag-Bibliotheken angereichert sind, vermeidet RAP. Daher soll auch das Debugging der Anwendung kein Problem sein.

Die Rich Ajax Platform ist - wie auch die RCP - nicht Teil des Java-Community-Prozesses (JCP). Das bedeutet, dass die Programmierschnittstellen nicht wie bei Java Server Faces von Sun überwacht werden und in Standards wie die J2EE-Spezifikation einfließen. Es ist daher sehr wichtig, dass über den Vorschlag von Innoopract bald entschieden wird, damit die Quellen schnell offen gelegt werden und Investitionssicherheit für RAP-Anwender besteht. (ue)

Fazit

Die Rich Ajax Platform befindet sich noch in einem frühen Betastadium. Erst die endgültige Version der Bibliothek wird ein Urteil darüber erlauben, ob sich die Technik gegen die starke Konkurrenz in Form von Suns Java Server Faces oder Googles neuem Web Toolkit durchsetzen kann.

Glossar