Einführung in die Rich Ajax Platform (RAP)

Werkzeuge  –  Kommentare

Die Rich Client Platform (RCP) ist die Laufzeit-Technik für zahlreiche, in Java geschriebene Business-Anwendungen. Mit der Rich Ajax Platform (RAP) lassen sich diese zusätzlich im Web veröffentlichen – und das auf Basis des gleichen Codes.

Die Rich Ajax Platform (RAP) ermöglicht die Entwicklung von Webanwendungen mit Eclipse-Techniken. Die Plattform stellt eine Teilmenge der von RCP bekannten APIs zur Verfügung. Aus Sicht des Programmierers unterscheidet sich die Entwicklung mit RAP daher nicht von der mit RCP, allerdings wird die Anwendung im Browser des Benutzers dargestellt und nicht auf seinem Desktop. Aus RCP bekannte User-Interface-Konzepte wie Views und Editoren stehen zur Verfügung, ebenso erleichtern die APIs des JFace-Toolkits die UI-Programmierung. Für die Anbindung von Modelldaten an das UI lässt sich das Databinding von Eclipse benutzen, und länger dauernde Tasks lassen sich in Jobs verpacken, die Hintergrund-Threads abarbeiten. Durch asynchrone Updates kann man aus Jobs heraus schließlich das UI im Browser aktualisieren.

Mehr Infos

RAP

Das RAP-Projekt entstand 2006 auf Grundlage eines kommerziellen Frameworks. Es steht unter der Eclipse Public License und ist damit auch für kommerzielle Projekte frei nutzbar. Wie RCP ist RAP Teil des übergeordneten Eclipse-Runtime-Projekts (Eclipse RT), das Laufzeit-Techniken beherbergt (u.a.) die OSGi-Referenzimplementierung Equinox und den Servlet-Container Jetty. Das aktuelle RAP 1.3 ist zusammen mit Eclipse Helios im Juni 2010 erschienen.

Auf der Serverseite nutzt RAP Server-Side Equinox, ein Unterprojekt von Eclipse Equinox, das eine OSGi-Laufzeitumgebung mit klassischer Servlet-Technik integriert. RAP-Anwendungen lassen sich dadurch auf herkömmlichen Servlet-Containern wie Tomcat verteilen. Der Benutzer benötigt nur einen gängigen Webbrowser (Firefox 2+, IE 6+, Safari, Chrome, Opera). Da das UI ausschließlich mit JavaScript gerendert wird, sind keinerlei Browsererweiterungen nötig.

Die Abbildung 1 zeigt das RAP-UI von Toast, einer Applikation aus dem Eclipse-Examples-Projekt, die am Beispiel eines Flottenmanagementsystems den Einsatz von Eclipse-Runtime-Techniken veranschaulicht. Weitere Online-Beispiele findet man auf der RAP-Projektseite verlinkt.

An diesem Beispiel einer RAP-Applikation ("Toast") sind die UI-Konzepte der Eclipse Workbench deutlich erkennbar (Abb. 1).

Eine Stärke von Eclipse-Anwendungen ist das Modularisierungskonzept von OSGi. Es bietet eine dynamische Laufzeitumgebung für Module, sogenannte Bundles. Diese sind versionierbar, und jedes Bundle definiert seine Abhängigkeiten von anderen Bundles und seine Export-Schnittstelle in einem Manifest. Über OSGi-Services können Module untereinander kommunizieren und andere Module erweitern. Diese Eigenschaften ermöglichen den Aufbau lose gekoppelter Systeme, bei denen sich nach Bedarf Anwendungsteile hinzufügen, weglassen oder austauschen lassen.

Die OSGi-Implementierung Equinox bildet die Basis für praktisch jedes Eclipse-Projekt. RAP stellt hierbei keine Ausnahme dar, sowohl die Plattform selbst als auch die darauf aufsetzenden Applikationen sind modular aufgebaut. Bei RAP greifen alle Benutzer auf eine einzige Equinox-Instanz auf dem Server zu, die mehrere Applikationen bereitstellen kann. Ein angenehmer Nebeneffekt dieses Anwendungsmodells ist die kurze Startzeit. Da die OSGi-Umgebung bereits hochgefahren ist, startet eine RAP-Anwendung deutlich schneller als ihr RCP-Pendant.

Das Standard Widget Toolkit (SWT) bildet die Basisschicht für das UI jeder RCP-Applikation. Darauf bauen höhere Schichten wie JFace und die Eclipse Workbench auf. RAPs Grundidee ist es, SWT gegen eine Implementierung auszutauschen, die die Widgets auf dem Browser des Anwenders darstellen kann. Diese Implementierung heißt RWT (RAP Widget Toolkit) und bietet eine mit wenigen Ausnahmen deckungsgleiche API.

RWT besteht aus einem Server- und einem Client-Teil, der im Browser läuft. Der Client ist ausschließlich in JavaScript geschrieben und kommuniziert mit dem Server über Ajax-Requests. Der Server ist kompatibel zur Servlet-Spezifikation 2.3 und neuer. Damit sind RAP-Anwendungen auf allen gängigen Servlet-Containern lauffähig, und herkömmliche Werkzeuge und Infrastruktur etwa für Lasttests oder zur Lastverteilung lassen sich dadurch einfach auf RAP anwenden.

Das RAP-Anwendungsmodell ist mit einem Terminalserver vergleichbar. Die gesamte Anwendungslogik bleibt auf dem Server. Für jeden Benutzer unterhält er eine Applikationsinstanz, auf die man vom Browser aus zugreift. Der Client schickt für jede relevante Benutzerinteraktion einen Ajax-Request ab, der vom Server verarbeitet und mit den nötigen UI-Änderungen beantwortet wird. Die Antwort ist so optimiert, dass sie nur Informationen über tatsächlich geänderte UI-Teile enthält.

Trotz der häufigen Synchronisierung von Client und Server lässt sich die Oberfläche flüssig bedienen. In der Regel sind die Datenmengen, die ein solcher Ajax-Request/-Response übermittelt, so gering, dass sie in einem einzigen TCP-Paket Platz finden.