Ajax-Entwicklung erobert Eclipse

08.06.2006
Von   
Bernhard Steppan arbeitet als IT-Chefarchitekt bei DB Systel GmbH (Deutsche Bahn) in Frankfurt am Main. Er hat 100+ Artikel und zahlreiche Bücher über C++ und Java verfasst. Er betreibt mehrere Blogs, unter anderem http://steppan.net, http://artouro.org und http://tourbine.com
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.
Mit der Rich Ajax Platform (RAP) wird Eclipse auf dem Server zum Thema.
Mit der Rich Ajax Platform (RAP) wird Eclipse auf dem Server zum Thema.

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.

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.

Rich Ajax Platform

Vorteile

- Kostenfrei;

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

- keine Ajax-Kenntnisse erforderlich.

Nachteil

- Einarbeitungsaufwand für Web-Entwickler.

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 Bibliotheken, die nicht von Sun stammen und daher auch nicht Teil von J2SE sind. Es handelt sich vor allem um GUI-Bibliotheken zur Entwicklung von grafischen Oberflächen wie dem SWT und die übergeordneten Bibliotheken 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.

Google Web Toolkit versus RAP

Google stellte kürzlich eine ebenfalls im frühen Beta-Stadium befindliche 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.

Glossar

• Ajax:

Ajax bedeutet Asynchronous Javascript and XML. Darunter sind verschiedene Techniken rund um Javascript und XML zu verstehen, durch die Web-Anwendungen ähnlich schnell wie Desktop-Anwendungen auf Benutzereingaben reagieren können.

• Designmodus:

In dieser Ansicht lassen sich Menüs, Symbolleisten und Fenster wie Dialoge gestalten. Die Ansicht muss nicht unbedingt Wysiwyg-Kriterien erfüllen (siehe Testmodus).

• GUI-Builder:

Werkzeug zur Gestaltung von grafischen Oberflächen, häufig auch GUI-Designer, UI-Designer oder Interfacebuilder genannt.

• IDE:

Abkürzung für Integrated Development Environment, eine Entwicklungsumgebung, die Editor, Debugger, Compiler und Projektverwaltung integriert.

• Java-Layoutmanager:

Java-Klassen, die es erlauben, Widgets nach bestimmten Bedingungen anzuordnen. Ein Beispiel ist das GridLayout, das gestattet, Widgets auf einem unsichtbaren Gitternetz zu platzieren.

• Java Community Process:

Seit 1998 bestehendes international besetztes Gremium, das Java-Technologiespezifikationen (APIs, Bibliotheken, Referenzimplementierungen) vorschlägt und überprüft.

• OSGi-Plattform:

Von der Open Services Gateway Initiative (OSGi) initiierte Kommunikationsplattform. Bis zur Version 2.1 verwendete Eclipse proprietäre Formate für seine Plug-ins, während es seit der Version 3.0 OSGi-konforme Formate nutzt.

• SWT:

Standard Widget Toolkit, die GUI-Bibliothek des Eclipse-Projekts und Alternative zu den AWT/Swing-Bibliotheken des Java Development Kit.

• Testmodus:

Der Testmodus des GUI-Builders zeigt eine Wysiwyg-Voransicht der Programmoberfläche. Spätestens in diesem Modus sollte die Oberfläche exakt so erscheinen, wie sie im fertigen Programm aussehen wird.

• WAR:

Abkürzung für Web Archiv. Darunter versteht man ein spezielles Java-Archiv für Web-Anwendungen, das die Verteilung der Anwendungen vereinfacht. Es fasst die vielen einzelnen Dateien (Java-Klassen, Bilder etc.) einer Web-Anwendung in einer Datei zusammen.

• Widgets:

Widgets sind die Bausteine einer grafischen Oberfläche, mit denen der Benutzer das Programm steuern kann wie zum Beispiel Schaltflächen. Sie werden auch häufig Controls, Beans oder Javabeans genannt.

• Wysiwyg:

Die Abkürzung von "What you see is what you get". Gemeint ist, dass sich die Darstellung möglichst genau mit der Wirklichkeit deckt.

• W4T:

Das WWW Widget Toolkit, auch W4T genannt, ist eine GUI-Bibliothek der Firma Innoopract. Es handelt sich um eine Sammlung von Widgets und anderen Klassen zur GUI-Programmierung von Web-Anwendungen.

• W4T Eclipse:

Sammlung von Plug-ins, die die Eclipse-Workbench um Werkzeuge zur visuellen Web-Entwicklung mit W4T erweitert.

Weiterführende Links

Rich Client Platform: http://wiki.eclipse.org/index. php/Rich_Client_Platform;

Rich Server Platform: http://www.eclipse.org/ proposals/rsp/;

Rich Ajax Platform: http://www.eclipse.org/ proposals/rap/;

Google Web Toolkit: http://code.google.com/

webtoolkit/.

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.

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.

Übertragbares Modulkonzept

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. 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.

Parallele Welten

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.

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.

Abgeschirmt von Technik

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)