Enterprise OSGi: The Big Picture

User Interface

Unser Beispielprojekt verwaltet Kunden und Konten. Dazu brauchen wir ein hübsches User Interface. Eine schmucke Webanwendung soll es sein. Nach Wunsch des Marketings auch iPhone- und iPad-fähig – was denn sonst?

Machen wir uns also auf die Suche nach einem geeigneten Framework. Der Wikipedia-Eintrag für Java-Webframeworks [2] zählt nur die wichtigsten auf, und das sind schon 33 Stück. Unser User Interface soll natürlich auch modular sein, und zwar mit OSGi. Damit schrumpft die Auswahl schon mal gewaltig zusammen. Damit bleiben von den 33 Frameworks nur Eclipse RAP [10], Apache Sling [11] und Vaadin [12] übrig. Um Vaadin OSGi-fähig zu machen, braucht es noch etwas Handarbeit, die jedoch Kai Tödter bereits geleistet hat [13]. Hinzu kommt noch das Webframework Virgo Snaps [14], das aus dem Eclipse-Virgo-Projekt stammt.

Apache Sling lassen wir gleich mal außen vor, da es kein reines Webframework ist, sondern immer auch ein Content Repository (JCR) benötigt. Das brauchen wir für unsere Enterprise-Anwendung nicht. Betrachten wir also die anderen Frameworks. Sowohl bei Eclipse RAP als auch bei Vaadin wird in Java entwickelt. Zur Laufzeit werden in beiden Fällen HTML und JavaScript generiert. Das User Interface kann einfach und problemlos mittels OSGi auf verschiedenen Bundles verteilt werden – ein großer Vorteil. Im Nachteil ist man jedoch, wenn UI-Komponenten benötigt werden, die nicht im Standard enthalten sind. Eine eigene Komponente besteht nämlich aus Java-Code für den Server mit dem API der Komponente sowie HTML, CSS und JavaScript, die vom Server zur Laufzeit erzeugt werden. Da muss man sich erst gar nicht um HTML und JavaScript kümmern – und dann erwischt es einen ganz dicke.

Sofern man jedoch mit den vorhandenen UI-Komponenten auskommt, passen beide Frameworks wunderbar in die OSGi-Welt. RAP bietet weniger Komponenten, ist aber besser in OSGi integriert. Vaadin sieht besser aus und bietet viele Add-ons. Allerdings läuft Vaadin nur holprig im OSGi-Container, da die meisten Add-ons nicht OSGi-fähig sind und Vaadin eine zentrale Konfigurationsdatei aller Widgets benötigt (Tipps dazu siehe [15]).

Als Letztes kommen wir zu Virgo Snaps [14], einem Webframework für OSGi auf Basis von Spring Web MVC und Java Server Pages (JSPs). Aber Vorsicht: Eine Webanwendung mit Virgo Snaps besteht nicht aus OSGi Bundles, sondern aus Web Application Bundles, OSGi-fähigen WAR-Archiven. Diese laufen jedoch nicht in einem normalen OSGi-Container, sondern benötigen eine besondere Runtime, zum Beispiel den Eclipse Virgo Server. Auch kommt man um JSPs nicht herum. Wer mit diesen Einschränkungen leben kann, erhält ein leichtgewichtiges Webframework, das gut mit Spring harmoniert.

Eventuell kann auch ganz auf ein Java-Webframework verzichtet werden. So könnten wir das UI mit HTML und JavaScript realisieren (beispielsweise mit ExtJs [16] oder JQuery UI [17]) und als statische Ressourcen einbinden. In diesem Fall würden wir auf Java-Seite nur das REST API für das User Interface zur Verfügung stellen.

Vaadin im Beispielprojekt

Das User Interface unseres Beispielprojekts wird in Abbildung 1 gezeigt. Es basiert auf Vaadin mit dem Add-on für OSGi.

Abb. 1: User Interface des Beispielprojekts

Über das User Interface können Kunden und Konten verwaltet werden. Die Verwaltung der Kunden verbirgt sich hinter dem ersten Tab, hinter dem zweiten die Verwaltung der Konten.

Hinter jedem Tab steckt ein OSGi Bundle. Unser User Interface besteht also aus einem Bundle mit dem UI der Kunden und einem Bundle mit dem UI der Konten. Die Bundles für Kunden und Konten veröffentlichen jeweils einen OSGi Service, der das Interface View implementiert. Zum vollständigen User Interface verknüpft werden die Views vom Bundle ui.main. Dort wird jede View als Tab eines Tab Controls dargestellt. Um das Aussehen der Anwendung (zur Laufzeit) nach Belieben zu verändern, ist das Theme in ein eigenes Bundle ui.theme ausgelagert.

Das User Interface unseres Beispielprojekts ist modular aufgebaut. Sowohl die Funktionalität als auch das Aussehen können mittels OSGi zur Laufzeit verändert werden. Dank Vaadin haben wir also eine gute Basis für das UI unserer Enterprise-Anwendung geschaffen.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.