Einführung in die Rich Ajax Platform (RAP)
Seite 3: Feinheiten
Individualisierung erwünscht
Manchmal ist es nötig, das SWT-Widget-Set für eigene Bedürfnisse zu erweitern. Mit Composite Widgets lassen sich Custom Widgets einfach aus vorhandenen Widgets zusammensetzen. Beispielsweise kann man aus einem Text- und einem Image-Label ein wiederverwendbares Widget erstellen, das ein Bild und einen Text in einer bestimmten Anordnung anzeigt.
Darüber hinaus können Entwickler mit "nativen" Custom Widgets direkt auf die Techniken der zugrunde liegenden Plattform zugreifen. Im Fall von RAP lassen sich so Browsertechniken wie JavaScript oder Flash in wiederverwendbare Widgets einbinden. Das Custom-Widget-Tutorial im "RAP Developer Guide" zeigt, wie man Google Maps in ein Widget integriert. Im RAP Incubator gibt es zudem einige fertige Custom Widgets, darunter eine File-Upload-Komponente und eine Integration von Googles Visualisierungs-Widgets.
Für Mash-ups aus populären Web-2.0-Services bietet das SWT-Browser-Widget eine einfache Alternative zum Schreiben von Custom Widgets. Es ermöglicht das Einbinden beliebiger Webinhalte in die Oberfläche einer Anwendung. RAP stellt diese Inhalte in einem IFRAME dar. Die BrowserFunction API ermöglicht sogar eine Kommunikation zwischen dem im Browser-Widget laufenden JavaScript und dem Java-Code der RAP-Anwendung.
Variable Verteilung
Für das Deployment einer RAP-Anwendung stehen grundsätzlich zwei Wege zur Auswahl. Im einfachen, auch "standalone" genannten Fall wird eine Instanz des Equinox-OSGi-Frameworks gestartet. Ein Bundle, das eine Servlet-Engine enthält (zum Beispiel Jetty), stellt hierbei einen OSGi-HttpService zur Verfügung, über den die RAP-Anwendung mit der Außenwelt kommuniziert. Beim Starten einer Applikation aus der Entwicklungsumgebung heraus kommt diese Art des Deployments zum Tragen. Auch auf Virgo, dem ehemaligen Spring dm Server, können RAP-Applikationen nach diesem Modell installiert werden.
Eine RAP-Applikation lässt sich aber auch als WAR-Archiv verpacken und in einen Servlet-Container wie Tomcat deployen, wodurch man RAP in bestehende "Java EE"-Infrastruktur integrieren kann. Diese als "Embedded" bezeichnete Variante bettet das OSGi-Framework und alle Bundles der Anwendung in ein WAR-Archiv ein. Hierbei stellt die sogenannte Servlet-Bridge die Dienste des Servlet-Containers über den HttpService bereit. Außerdem ist sie dafür zuständig, die im WAR enthaltenen OSGi-Bundles zu installieren sowie das OSGi-Framework zu starten und zu beenden. Die Servlet-Bridge ist Bestandteil des Server-Side-Equinox-Projekts.
Um Anwender bei diesem Deployment zu unterstützen, ist im Rahmen eines von Googles "Summer of Code" geförderten Projekts eine Tooling-Erweiterung für den komfortablen WAR-Export aus der IDE entstanden. Sie ermöglicht, eine Liste von Funktionen oder Plug-ins zusammenzustellen, zu validieren und als WAR-Archiv zu exportieren. Details sind im Blog-Eintrag von Holger Staudacher beschrieben. Geplant ist, dieses Tooling in den kommenden Eclipse-Release aufzunehmen.
Anschluss an das Eclipse-Ökosystem
Durch OSGi als Unterbau lässt sich RAP mit anderen Eclipse-Projekten kombinieren. Beispiele sind die Verknüpfung der Reporting-Engine BIRT (Business Intelligence and Reporting Tools) zur Generierung von Charts und Reports oder die Verwendung der EMF-Runtime (Eclipse Modeling Framework). Mit Equinox Security steht eine Anbindung an den Standard-Sicherheitsmechanismus von Java (JAAS) zur Verfügung. Zudem bringen andere Eclipse-Projekte mittlerweile Unterstützung für RAP mit. EMF erzeugt seit Eclipse Helios wahlweise RCP- oder RAP-Editoren für beliebige EMF-Modelle. Riena, ein Applikationsframework, das auf die Bedürfnisse von Enterprise-Anwendungen zugeschnitten ist, wird in der kommenden Version ebenfalls vollständig auf RAP laufen.
Auch im Kontext der nächsten Generation der Eclipse-Applikationsplattform (e4) tut sich bei RAP etwas. Zu den Hauptzielen der e4-Entwicklung gehört die Vereinfachung der Anwendungsentwicklung mit RCP. Ein einheitlicher Event-Bus ersetzt die schier unzählbaren Listener-Interfaces. Die unterschiedlichen Bauteile der Workbench-Oberfläche (Views, Editoren, Menüs und Werkzeugleisten) fasst ein einheitliches Modell zusammen. Dependency Injection ersetzt an vielen Stellen die Notwendigkeit, bestimmte Interfaces zu implementieren. Auch hebt e4 einige Einschränkungen der bestehenden Plattform auf. So soll der Kern der Eclipse-Workbench unabhängig von SWT werden, was das Single Sourcing weiter vereinfacht. Zudem steht die Multi-User-Fähigkeit der Workbench auf dem Plan.
Während des Entwicklungszyklus der letzten Version hat sich RAP durch die Nachrüstung bislang fehlender APIs kontinuierlich auf e4 hinzubewegt. Den aktuellen Stand der Entwicklung bei e4 auf RAP zeigt die Online-Version der e4 Contacts Demo. Weitere e4-Details behandelt der Artikel "Gemeinschaftswerk".