Wie lassen sich OSGi-Bundles am besten gruppieren, um eine kohärente Anwendung zu erstellen?

Der "OSGi-Weg" besteht darin, separate Bündel zu entwickeln, die diskrete, zusammenhängende Teile der Funktionalität enthalten. Manchmal enthalten diese Bundles Dienstprogrammklassen, manchmal hängen sie von Dienstprogrammklassen ab und richten ihre eigenen OSGi-Dienste ein.

Andererseits ist es unwahrscheinlich, dass Benutzer Bundles ausgesetzt sind. Sie interessieren sich mehr für dieAnwendung, eine Software, die eine Aufgabe ausführt oder deren Problem löst. Normalerweise verwendet eine Anwendung mehrere Bundles (z. B. über Import-Package importiert), um ihre Aufgaben auszuführen.

Wie lässt sich diese Beziehung in der OSGi-Welt am besten formalisieren? Eine Beispielanforderung wäre so einfach wie das Anzeigen der aktuellen Versionsnummerder Anwendung (nicht die Bündel) an den Benutzer. Wie würde diese Versionsnummer entdeckt werden?

Eclipse hat ein Konzept namens "Features", dies ist jedoch kein OSGi-Standard.

Peter Kriens hatgeschrieben über OSGi-Anwendungen und sein Artikel macht Sinn. Ich habe davon abgesehen, dass eine Anwendung einem Bundle zugeordnet werden kann. Es ist nur so, dass das Bundle in irgendeiner Weise andere Bundles verwendet. Wenn man aber mit Import-Package ein Anwendungspaket erstellen will, sehe ich aus entwicklungspolitischer Sicht keine Möglichkeit.

Ein Weg könnte sein, ein 'Anwendungspaket' zu haben, das Require-Bundle verwendet und eine eigene Version hat, aber Require-Bundle ist in der OSGi-Welt verpönt.

Mit Import-Package können Sie jedoch alle erforderlichen Pakete mit den erforderlichen Versionen importierenvon Bedeutung Wartungsaufwand für den Entwickler, soweit ich dies nicht für machbar halte. Bei jeder kleinsten Änderung, auch an einem Implementierungspaket, muss die Paketversion aktualisiert und anschließend die Abhängigkeit von der Paketversion im Anwendungspaket aktualisiert werden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage