Einsatz von OSGi für Webanwendungen

19.11.2012

OSGi ist eine der kommenden Technologien für Webanwendungen. Was ist OSGi und wie wird es jetzt schon bei doubleSlash eingesetzt?

OSGi zur Integration von Softwareprodukte und WebanwendungenOSGi (Open Services Gateway initiative) spezifiziert eine hardwareunabhängige Softwareplattform zur Modularisierung von Anwendungen. Seinen Ursprung hat es in der Steuerung und Vernetzung von Geräten, z.B. in der Gebäudeautomation. Mittlerweile hat OSGi auch den Sprung auf Desktop- und Webanwendungen geschafft. Das macht OSGi auch für doubleSlash interessant.
Es gibt verschiedene Implementierungen des OSGi Standards. Für Desktop- und Webanwendungen sind die bekanntesten Equinox (auf dem auch Eclipse basiert) und Apache Felix (auf dem GlassFish basiert).

Wie funktioniert OSGi?

In OSGi wird Java Code in Bundles zusammengefasst. Jedes Bundle kann eine Reihe von Java Paketen importieren und exportieren. Nur Klassen aus den importierten Paketen sind innerhalb des Bundles verfügbar. Diese Einschränkung zwingt den Entwickler über die Verwendung von fremden Code Buch zu führen. Gleichzeitig bringt sie den Vorteil mit sich, dass deutlich wird welcher Code wo und von wem verwendet wird (eine Problemstellung, um die sich das Dependency Management kümmert). Andererseits lassen sich so Bundles beliebig austauschen, so lange dieselbe Schnittstelle angeboten wird. Die Modularisierung von Anwendungen wird unterstützt. Die Kommunikation zwischen den Bundles findet entweder durch direkte Nutzung der Klassen aus anderen Bundlen statt oder (noch besser, weil dynamischer) über Services. Dazu bietet die OSGi Plattform eine eigene Service Registry, an der Services registriert werden können.

Wo ist der Haken?

Der OSGi Classloader ist unheimlich strikt. Was nicht vom Bundle importiert wird, existiert für ihn nicht. Gerade bei der Einführung von OSGi in ein bestehendes Produkt treten am Anfang viele Classloader Probleme auf. Problematisch sind auch Frameworks die ihre Factory in der VM registrieren, wie beispielsweise log4j oder dom4j. Besonders im Webumfeld stellt sich die Frage, wie Ressourcen (z.B. ZK ZUL Dateien) aus anderen Bundles geladen werden können.

Warum verwendet doubleSlash dann OSGi?

OSGi ist für doubleSlash eine strategische Technologie. Im Gegensatz zu vielen Projekten müssen unsere Produkte maximal flexibel anpassbar sein. Die unterschiedlichen Anforderungen jedes Kunden müssen schnell in der Software umgesetzt werden werden können. Je mehr Kunden es gibt, desto schwerer fällt es den Überblick zu behalten, welcher Kunde welche Codebasis nutzt. OSGi hilft uns hier auf exzellenter Weise: Kundenänderungen werden in eigene Bundles gepackt und zu dem Produkt hinzu geladen. Dank OSGi ist dies sogar zur Laufzeit möglich.

Der Einsatz von OSGi im Webumfeld ist noch ein vergleichbar junges Thema. Es ist zu erwarten, dass OSGi in den kommenden Jahren deutlich an Bedeutung gewinnt. Viele Application Server bauen jetzt bereits auf der OSGi Service Plattform auf. Das ZK-Framework unterstützt seit kurzem OSGi dadurch, dass alle ZK Bibliotheken als OSGi Bundle zur Verfügung gestellt werden. Und auch Liferay strebt derzeit eine OSGi Integration an. doubleSlash ist also in guter Gesellschaft.

Und wie ist der Stand?

Mit der aktuell in Entwicklung befindlichen Version unserer Produkte haben wir mit der Integration von OSGi begonnen. Nach den ersten Sprints besteht das Produkt bereits aus siebzehn Bundles. Dabei haben wir sehr viel über die Besonderheiten des Classloaders im OSGi Umfeld gelernt. OSGi zeigt uns die Abhängigkeiten der Bundle untereinander auf und macht uns deutlich wo Modularisierung sinnvoll ist. Durch OSGi werden unsere Softwareprodukte in höchstem Maße Integrationsfähig. In gewisser Weise sind die zukünftigen Anforderungen in der Softwarearchitektur bereits mit eingebaut.

Zurück zur Übersicht

Ein Kommentar zur “Einsatz von OSGi für Webanwendungen

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*