Einführung in die Rich Ajax Platform (RAP)
Seite 2: Einstieg
Erste Schritte
Um die Entwicklung von RAP-Applikationen zu erleichtern, stellt das RAP-Projekt Tool-Unterstützung für die Eclipse-IDE bereit. Man findet es auf den RAP-Downloadseiten. Unter den Eclipse-Downloads gibt es zudem eine vollständige Eclipse-IDE mit vorinstalliertem RAP-Tooling ("Eclipse for RCP and RAP Developers"). Nach der Installation ist die RAP-Runtime als Zielplattform einzustellen, gegen die die IDE alle Projekte kompiliert. Auf Wunsch übernimmt das RAP-Tooling diese Aufgabe.
Als Einstieg empfiehlt es sich, ein neues Plug-in-Projekt zu erzeugen und im letzten Schritt der Projekterstellung eines der mitgelieferten Templates auszuwählen. Die so entstandene Beispielanwendung lässt sich mit dem integrierten RAP-Launcher direkt aus der IDE starten. Die Anwendungsentwicklung unterscheidet sich nicht von der mit RCP. Die Abbildung 2 illustriert die Erstellung einer View in RAP mit identischem Code wie in RCP. Zunächst wird eine Unterklasse von ViewPart implementiert, die den Inhalt der View steuert, darauf folgt die Registrierung der Klasse per Extension.
Das RAP-Tooling enthält zudem den "RAP Developer Guide", der neben Artikeln zu Themen wie Deployment, Theming, Custom Widgets und Internationalisierung die komplette Referenzdokumentation enthält. Durch die Kompatibilität zu RCP ist ist das meiste Informationsmaterial zu RCP auch auf RAP anwendbar. Eine Auswahl grundlegender Artikel zu den Basistechniken findet sich auf der RAP-Projektseite unter "Documentation".
Feinabstimmung
Obwohl sich Weboberflächen optisch stark von klassischen Desktop-UIs unterscheiden, liegen doch beiden ähnliche Konzepte zugrunde. Letztlich setzen sich die Oberflächen aus Widgets zusammen. Allerdings liegt es nahe, das Aussehen der Widgets in RAP an das Webumfeld anzupassen. Das geschieht über CSS. Ein Theme definiert die Default-Eigenschaften der Widgets, etwa Farben, Schriftarten und Ränder. Auch Farbverläufe, abgerundete Ecken und Animationen unterstützt RAP.
Die Anpassung an das Webumfeld kann weit über bloßes Theming hinausgehen. Mit einer zusätzlichen API lässt sich das gesamte Layout der Anwendung umgestalten. Damit können Entwickler UI-Bestandteile wie Menü und Toolbar an geeigneten Stellen platzieren. Sie können zudem für die Anordung und Erscheinungsform der Inhalte, die RCP mit TabFolder organisiert, im Web eine passende Darstellung wählen, beispielsweise um ein Firmenlogo in den Kopfbereich der Webanwendung zu platzieren. Zwei Default-Implementierungen dieser API liefert RAP aus, eigene sind zusätzlich möglich.
Aus einer Quelle
Mit RAP kann man identischen UI-Code für Desktop und Webclients verwenden. Dafür hat sich der Begriff Single Sourcing eingebürgert. Mit der Verfügbarkeit einer SWT API lässt sich theoretisch jeglicher darauf aufbauende Anwendungscode in RAP nutzen. In der Praxis gibt es jedoch kleine Abweichungen zwischen der RAP- und der RCP-Version, denn RWT kann den Umfang von SWT nicht vollständig abdecken. Einige Funktionen, wie MouseMoveListener oder FileDialog, sind durch die unvermeidbare Netzwerk-Latenz beziehungsweise die abweichende Laufzeitumgebung nicht sinnvoll realisierbar.
Ein weiterer Grund für Abweichungen ist eine für RCP-Anwendungen gängige Annahme, dass es pro Anwendungsinstanz nur einen einzigen Benutzer gibt. Das trifft auf RAP nicht zu. Auf einem RAP-Server wird in einer einzigen OSGi-Instanz für jeden Benutzer eine eigene Applikation gestartet. Deshalb sind benutzerspezifische Daten (klassisches Beispiel: der Warenkorb) nicht in Singletons zu speichern. RAP bietet jedoch eine Option, solche Singletons in Session-spezifische Singletons umzuformen.
Dank der geeigneten Strategie lässt sich letztlich mit gemeinsamer Codebasis entwickeln und der plattformspezifische Code in gesonderte Artefakte auslagern. Erst beim Deployment sind diese mit dem plattformunabhängigen Code zusammenzulegen, mit dem Resultat einer auf der jeweiligen Plattform lauffähigen Anwendung. Ein Single Sourcing Guide, der Best Practices zur Entwicklung solcher Anwendungen aufzeigt, findet man auf den Seiten des Unternehmens EclipseSource.