19 lutego 2007

Coraz bardziej urzeczony OSGi - nowe artykuły na JavaLobby

Pojawiły się kolejne mini-artykuły dotyczące OSGi z serii Getting started with OSGi. Coraz bardziej urzekają mnie powody stworzenia OSGi oraz możliwości płynące z wykorzystania platformy w modularnych aplikacjach. Po kilku dniach lektury dokumentacji i przeglądania różnych serwisów internetowych dotykających tematu OSGi, pokuszę się na przybliżenie (i możliwe zainteresowanie) tą technologią.

OSGi jest platformą komponentów nazywanych pakietami OSGi (ang. OSGi bundle - tłumaczenie zapożyczone ze Słownika informatycznego angielsko-polskiego IDG.pl). Idea polega na stworzeniu platformy, w której pakiety podlegają pewnym transformacjom, w sensie rozwoju. Wyróżnione są stadia (stany) rozwojowe w cyklu życiowym komponentu (org.osgi.framework.Bundle):
  • UNINSTALLED
  • INSTALLED
  • RESOLVED
  • STARTING
  • STOPPING
  • ACTIVE
Wydaje się, że takich podobnie funkcjonujących szkieletów jest kilka (PicoContainer, HiveMind, Spring Framework, Apache XBean, NanoContainer, Plexus, jądra serwerów aplikacyjnych, Apache Maven 2 z mechanizmem wtyczek, czy wręcz EJB 3.0 i JSF 1.2). Możnaby tak wymieniać, ale przy OSGi na uwagę zasługują następujące fakty:
Poza stadiami wyróżnia się również sposób zarządzania zależnościami (brzmi jakby znajomo z Apache Maven 2, nieprawdaż?). Innymi słowy, podobnie jak w Maven 2 czy w kontenerach IoC - Spring Framework, na przykład - możemy deklarować zależności, które są rozwiązywane przez platformę OSGi. Co więcej, jak przeczytałem w Getting Started with OSGi: Registering a Service, w przeciwieństwie do wymienionych rozwiązań, OSGi pozwala na, tzw. dynamiczne IoC, tj. zależności (pakiety OSGi) można dynamicznie podmieniać (ang. hot-swap). Raz uaktywniony pakiet można dostarczyć pakietom zależnym, a po chwili podmienić jego implementację (!)

Z mojej perspektywy wydaje się, że rozwiązania modularne promowane przez otwarte projekty są bardziej znane niż implementacje OSGi. Kto słyszał o OSGi? Może jakieś wzmianki, ale korzystać z tego? Nie sądzę.

Dostępnych, darmowych implementacji OSGi R4 jest kilka:
Seria mini-artykułów, a właściwie mini-przepisów, Getting started with OSGi przyjemnie wprowadza w temat. Może kogoś jeszcze zainteresuje?!