2011-01-02 10 views
48

Właśnie zacząłem słyszeć używany termin OSGi (podczas czytania samouczków dotyczących wspólnych kontenerów Java EE, takich jak GlassFish i Spring), jednak nie byłem w stanie znaleźć prostego, prostego, łatwego do zrozumienia wyjaśnienie, czym jest OSGi, który zrozumie początkujący przedsiębiorca, taki jak ja.Co to jest OSGi i jakie są przykłady jego użycia?

Czy ktoś może przedstawić takie niepoprawne wyjaśnienie? Może z przykładami, a nawet fragmentami kodu?

Dzięki!

Odpowiedz

60

Mówiąc prosto, OSGi to dynamiczny system modułowy dla Javy. Określa sposoby instalowania, odinstalowywania, aktualizacji, uruchamiania i zatrzymywania modułów. Moduły te nazywane są pakietami, ale w najprostszej formie są to pliki JAR Java ze specjalnym Manifestem. Moduły można instalować, odinstalowywać itd. Bez zatrzymywania lub restartowania maszyny wirtualnej Java.

System OSGi zarządza opisanym cyklem życia i zależnościami między pakietami w bezpieczny sposób. Pakiet musi określać, które pakiety Java eksportuje i które importuje. Instrukcje importu i eksportu można opisywać informacjami o wersji, dzięki czemu można nawet mieć więcej niż jedną wersję tego samego pakietu w tej samej maszynie wirtualnej Java.

OSGi Alliance jest organizacją, która określa ramy OSGi i wiele usług towarzyszących, np. do zarządzania danymi konfiguracyjnymi, dostępem do urządzenia itp.

To tylko bardzo podstawowy przegląd. OSGi to znacznie więcej. Proszę spojrzeć na https://www.osgi.org/developer/architecture/ (wstęp do architektury OSGi) i https://www.osgi.org/developer/where-to-start/ (wiele linków i dalsze odczyty zalecane przez OSGi Alliance).

+0

WoW !! To najlepsza odpowiedź na to pytanie. Dzięki – Walker

+0

Najprostsze wyjaśnienie, które zobaczyłem dla OSGI, powinno znajdować się na pierwszej stronie osgi.org, aby ludzie mogli dostać się w 2 minuty, co zwykle zajmuje jeden dzień. To frustrujące, gdy projekty zawierają strony i strony marketingowe oraz pliki PDF na oficjalnej stronie, a my rozumiemy, że potrzebujemy tylko miłego podsumowania. Dzięki za to ! – xask

28

Kosztem niektórych głosów oddanych ;-), chciałbym odpowiedzieć na to w moich własnych słowach (tak, że mogę uzyskać poprawione na moim zrozumienie).

Budujemy aplikacje jako zestaw modułów, przy czym każdy moduł jest funkcjonalnie spójny sam w sobie i luźno powiązany z innymi modułami. Ma to wiele zalet, jak być może już wiesz. Nadgodziny, moduł modułowy poprawił się z funkcji na klasy do pakietów na jednostkę wdrożenia (np. Jar w Javie i montaż w .Net). Ale wszystko to tylko w czasie programowania, gdy aplikacja (która jest zbiorem modułów) jest wdrożona, serwer nadal widzi to jako jedną gigantyczną aplikację monolityczną, tj. Logiczne granice nie są zachowywane podczas działania. OSGi sprawia, że ​​te granice wyraźne podczas rozwoju, jak również wykonywania pominąwszy other benefits outlined here

I sugerują, że to doskonały bezpłatną książkę, aby uzyskać początek OSGi in Practice

Jeśli pracujesz na platformie Java, również sprawdzić ten Prezentacja Why Have The OSGi Specifications Been Based On Java™ Technology?

+0

Podziękowania dla Akr i Pangaei za poświęcenie czasu, aby to wyjaśnić. Myślę, że zaczynam "rozumieć". Wygląda na to, że OSGi jest potężną strukturą do tworzenia JARów PnP - tak?!? Jeszcze jedno - czy ktoś może mi podać konkretne przykłady pakietów ("usług") i co mogą zrobić? Dziękuję wszystkim! – Zac

+0

@Zac Możesz znaleźć informacje o OSGi, jak korzystać z pakietów oraz jak tworzyć lub korzystać z usług, na przykład w [ten samouczek] (http://www.javaworld.com/javaworld/jw-03-2008/jw- 03-osgi1.html? Page = 1). W mojej opinii jest całkiem niezły. – Piotr