OSGi - OSGi
Rok się rozpoczął | 1999 |
---|---|
Ostatnia wersja | 8.0 grudnia 2020 r |
Organizacja | OSGi Alliance |
Domena | Jawa |
Licencja | Licencja OSGi Specification, wersja 2.0 |
Stronie internetowej | www |
OSGi Alliance , dawniej znany jako inicjatywy Open Services bramy , jest otwarte standardy organizacja założona w marcu 1999 roku, który pierwotnie określony i nadal utrzymać standardu OSGi .
Specyfikacja OSGi opisuje system modułowy i platformę usługową dla języka programowania Java , która implementuje kompletny i dynamiczny model komponentów , coś, czego nie ma w samodzielnych środowiskach Java / VM . Aplikacje lub komponenty dostarczane w postaci pakietów do wdrożenia można zdalnie instalować, uruchamiać, zatrzymywać, aktualizować i odinstalowywać bez konieczności ponownego uruchamiania ; zarządzanie pakietami / klasami Java jest szczegółowo opisane. Zarządzanie cyklem życia aplikacji jest realizowane za pośrednictwem interfejsów API, które umożliwiają zdalne pobieranie polityk zarządzania. Rejestr usług umożliwia pakietom wykrywanie dodawania nowych usług lub usuwanie usług i odpowiednie dostosowywanie.
Specyfikacje OSGi ewoluowały poza pierwotny cel bramek usługowych i są obecnie używane w aplikacjach, od telefonów komórkowych po środowisko Eclipse IDE typu open source . Inne obszary zastosowań obejmują samochody , automatyki przemysłowej , automatyki budynkowej , PDA , komputerów siatki , rozrywka , zarządzanie flotą i serwerów aplikacyjnych .
W październiku 2020 r. OSGi Alliance ogłosiło przeniesienie wysiłków normalizacyjnych do Eclipse Foundation , po czym zostanie ono zamknięte.
Proces specyfikacji
Specyfikacja OSGi jest opracowywana przez członków w otwartym procesie i udostępniana publicznie bezpłatnie na podstawie Licencji specyfikacji OSGi. OSGi Alliance ma program zgodności , który jest otwarty tylko dla członków. Od listopada 2010 roku istnieje siedem certyfikowanych wdrożeń frameworka OSGi . Oddzielna strona zawiera listę certyfikowanych i niecertyfikowanych implementacji specyfikacji OSGi , które obejmują ramy OSGi i inne specyfikacje OSGi.
Architektura
OSGi to platforma Java do tworzenia i wdrażania modułowych programów i bibliotek. Każdy pakiet jest ściśle powiązaną, dynamicznie ładowaną kolekcją klas, plików JAR i plików konfiguracyjnych, które jawnie deklarują swoje zewnętrzne zależności (jeśli istnieją).
Ramy są koncepcyjnie podzielone na następujące obszary:
- Wiązki
- Pakiety to zwykłe komponenty JAR z dodatkowymi nagłówkami manifestu.
- Usługi
- Warstwa usług łączy pakiety w dynamiczny sposób, oferując model publikuj-znajdź-powiązanie dla zwykłych starych interfejsów Java ( POJI ) lub zwykłych starych obiektów Java (POJO).
- Rejestr usług
- Application Programming Interface dla usług zarządzania.
- Koło życia
- Interfejs programowania aplikacji do zarządzania cyklem życia (instalacja, uruchomienie, zatrzymanie, aktualizować i odinstaluj) dla wiązek.
- Moduły
- Warstwa, która definiuje hermetyzację i deklarację zależności (jak pakiet może importować i eksportować kod).
- Bezpieczeństwo
- Warstwa, która obsługuje aspekty bezpieczeństwa, ograniczając funkcjonalność pakietu do wstępnie zdefiniowanych możliwości.
- Środowisko wykonawcze
- Definiuje, jakie metody i klasy są dostępne na określonej platformie. Nie ma ustalonej listy środowisk wykonawczych, ponieważ może ona ulec zmianie, ponieważ proces społeczności Java tworzy nowe wersje i wydania języka Java. Jednak następujący zestaw jest obecnie obsługiwany przez większość implementacji OSGi:
- CDC-1.0 / Foundation-1.0
- CDC-1.1 / Foundation-1.1
- OSGi / Minimum-1.0
- OSGi / Minimum-1.1
- JRE-1.1
- Od J2SE-1.2 do J2SE-1.6
Wiązki
Pakiet to grupa klas Java i dodatkowych zasobów wyposażonych w szczegółowy MANIFEST.MF
plik manifestu obejmujący całą jego zawartość, a także dodatkowe usługi potrzebne do nadania dołączonej grupie klas Java bardziej wyrafinowanych zachowań, w zakresie uznania całej agregacji za komponent .
Poniżej znajduje się przykład typowego MANIFEST.MF
pliku z nagłówkami OSGi:
Bundle-Name: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: A Hello World bundle
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Export-Package: org.wikipedia.helloworld;version="1.0.0"
Import-Package: org.osgi.framework;version="1.3.0"
Znaczenie treści w przykładzie jest następujące:
- Bundle-Name: definiuje czytelną dla człowieka nazwę dla tego pakietu, po prostu przypisuje krótką nazwę do pakietu.
- Bundle-SymbolicName: jedyny wymagany nagłówek, ten wpis określa unikalny identyfikator pakietu, oparty na konwencji odwrotnej nazwy domeny (używanej również przez pakiety Java ).
- Opis pakietu: opis funkcjonalności pakietu.
- Bundle-ManifestVersion: wskazuje specyfikację OSGi, która ma być używana do odczytu tego pakietu.
- Wersja-paczki: wyznacza numer wersji paczce.
- Aktywator pakietu: wskazuje nazwę klasy, która ma zostać wywołana po aktywacji pakietu.
- Export-Package: Wyraża, które pakiety Java zawarte w pakiecie zostaną udostępnione światu zewnętrznemu.
- Import-Package: wskazuje, które pakiety Java będą wymagane ze świata zewnętrznego, aby spełnić zależności wymagane w pakiecie.
Koło życia
Warstwa cyklu życia dodaje pakiety, które można dynamicznie instalować, uruchamiać, zatrzymywać, aktualizować i odinstalowywać. Pakiety polegają na warstwie modułu do ładowania klas, ale dodają interfejs API do zarządzania modułami w czasie wykonywania. Warstwa cyklu życia wprowadza dynamikę, która zwykle nie jest częścią aplikacji. Aby zapewnić poprawne działanie środowiska, stosowane są rozbudowane mechanizmy zależności. Operacje cyklu życia są w pełni chronione dzięki architekturze bezpieczeństwa.
Stan pakietu | Opis |
---|---|
ZAINSTALOWANE | Pakiet został pomyślnie zainstalowany. |
ZDECYDOWANY | Dostępne są wszystkie klasy Java wymagane przez pakiet. Ten stan wskazuje, że pakiet jest gotowy do uruchomienia lub został zatrzymany. |
STARTOWY | Pakiet jest uruchamiany, BundleActivator.start metoda została wywołana, ale metoda start nie została jeszcze zwrócona. Gdy pakiet ma politykę aktywacji, pakiet pozostanie w stanie STARTING do momentu aktywacji paczki zgodnie z jej polityką aktywacji.
|
AKTYWNY | Pakiet został pomyślnie aktywowany i działa; jego metoda startowa aktywatora pakietu została wywołana i zwrócona. |
ZATRZYMANIE | Pakiet jest zatrzymywany. BundleActivator.stop Metoda została nazwana ale metoda zatrzymania jeszcze nie wrócił.
|
ODINSTALOWANE | Pakiet został odinstalowany. Nie może przejść do innego stanu. |
Poniżej znajduje się przykład typowej klasy Java implementującej BundleActivator
interfejs:
package org.wikipedia;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private BundleContext context;
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Starting: Hello World");
this.context = context;
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping: Goodbye Cruel World");
this.context = null;
}
}
Usługi
Usługi standardowe
OSGi Alliance określiło wiele usług. Usługi są określane przez interfejs Java . Pakiety mogą implementować ten interfejs i rejestrować usługę w Rejestrze usług. Klienci usługi mogą znaleźć ją w rejestrze lub zareagować, gdy się pojawi lub zniknie.
Poniższa tabela przedstawia opis usług systemowych OSGi:
Usługi systemowe | Opis |
---|---|
Logowanie | Rejestrowanie informacji, ostrzeżeń, informacji debugowania lub błędów jest obsługiwany przez usługę dziennika. Odbiera wpisy dziennika, a następnie wysyła je do innych pakietów, które subskrybowały te informacje. |
Administrator konfiguracji | Ta usługa umożliwia operatorowi ustawianie i uzyskiwanie informacji o konfiguracji wdrożonych pakietów |
Dostęp do urządzenia | Ułatwia koordynację automatycznego wykrywania i dołączania istniejących urządzeń. Jest to używane w scenariuszach Plug and Play. |
Administrator użytkownika | Ta usługa wykorzystuje bazę danych z informacjami o użytkowniku (prywatnymi i publicznymi) do celów uwierzytelniania i autoryzacji. |
Złącze IO | Usługa IO Connector Service implementuje pakiet CDC / CLDC javax.microedition.io jako usługę. Ta usługa umożliwia pakietom dostarczanie nowych i alternatywnych schematów protokołów.
|
Preferencje | Oferuje alternatywny, bardziej przyjazny dla OSGi mechanizm do używania domyślnego Java Properties do przechowywania preferencji.
|
Komponent Runtime | Dynamiczny charakter usług - mogą pojawiać się i znikać w dowolnym momencie - utrudnia pisanie oprogramowania. Specyfikacja Component Runtime może uprościć obsługę tych dynamicznych aspektów poprzez dostarczenie deklaracji zależności opartych na XML. |
Administrator ds. Wdrażania | Standaryzuje dostęp do niektórych obowiązków agenta zarządzającego. |
Event Admin | Zapewnia mechanizm komunikacji między pakietami oparty na modelu publikowania i subskrybowania. |
Administrator aplikacji | Upraszcza zarządzanie środowiskiem z wieloma różnymi typami aplikacji, które są jednocześnie dostępne. |
Poniższa tabela przedstawia opis usług protokołu OSGi:
Usługi protokołów | Opis |
---|---|
Usługa HTTP | Umożliwia wysyłanie i odbieranie informacji z OSGi przy użyciu protokołu HTTP . |
Usługa urządzenia UPnP | Określa, w jaki sposób pakiety OSGi mogą być opracowywane w celu współdziałania z urządzeniami Universal Plug and Play (UPnP). |
Administrator DMT | Definiuje interfejs API do zarządzania urządzeniem przy użyciu koncepcji ze specyfikacji zarządzania urządzeniami Open Mobile Alliance (OMA). |
Poniższa tabela przedstawia opis różnych usług OSGi:
Różne usługi | Opis |
---|---|
Wire Admin | Umożliwia połączenie między usługą producenta a usługą konsumenta. |
Parser XML | Usługa XML Parser umożliwia pakietowi zlokalizowanie parsera o żądanych właściwościach i zgodności z JAXP . |
Pomiar i stan | Usługa Pomiar i stan umożliwia i upraszcza prawidłową obsługę pomiarów na platformie usługowej OSGi. |
Organizacja
OSGi Alliance zostało założone przez Ericsson , IBM , Motorolę , Sun Microsystems i inne firmy w marcu 1999 roku. Przed wprowadzeniem jako korporacja non-profit nazywano ją Connected Alliance.
Wśród jej członków jest (stan na luty 2015) ponad 35 firm z całkiem różnych obszarów biznesowych, na przykład Adobe Systems , Deutsche Telekom , Hitachi , IBM , Liferay , Makewave, NEC , NTT , Oracle , Orange SA , ProSyst , Salesforce.com , Siemens , Software AG i TIBCO Software .
Alliance ma radę dyrektorów, która zapewnia ogólne zarządzanie organizacją. Oficerowie OSGi mają różne role i obowiązki we wspieraniu sojuszu. Prace techniczne prowadzone są w ramach grup ekspertów (EG) powołanych przez radę dyrektorów, a prace nietechniczne są prowadzone w różnych grupach roboczych i komitetach. Prace techniczne prowadzone w ramach grup ekspertów obejmują opracowywanie specyfikacji, implementacje referencyjne i testy zgodności. Te grupy ekspertów opracowały pięć głównych wersji specyfikacji OSGi (stan na 2012 r.).
Istnieją dedykowane grupy ekspertów zajmujące się przedsiębiorstwami, urządzeniami mobilnymi, pojazdami i podstawowymi obszarami platform.
Enterprise Expert Group (EEG) jest najnowszym EG i zajmuje się aplikacjami po stronie przedsiębiorstwa / serwera. W listopadzie 2007 r. Grupa Ekspertów ds. Mieszkaniowych (REG) rozpoczęła prace nad specyfikacjami do zdalnego zarządzania bramami mieszkalnymi / domowymi. W październiku 2003 roku Nokia , Motorola , IBM , ProSyst i inni członkowie OSGi utworzyli Mobile Expert Group (MEG), która określi platformę usługową opartą na MIDP dla następnej generacji inteligentnych telefonów komórkowych, odpowiadając na niektóre potrzeby, którym CLDC nie może sprostać - inne niż CDC . MEG stała się częścią OSGi, podobnie jak R4.
Wersje specyfikacji
- OSGi Release 1 (R1): maj 2000
- OSGi Release 2 (R2): październik 2001
- OSGi Release 3 (R3): marzec 2003
- OSGi Release 4 (R4): październik 2005 / wrzesień 2006
- Specyfikacja podstawowa (R4 Core): październik 2005
- Specyfikacja mobilna (R4 Mobile / JSR-232): wrzesień 2006
- OSGi Release 4.1 (R4.1): Maj 2007 (AKA JSR-291)
- Wersja OSGi 4.2 (R4.2): wrzesień 2009
- Specyfikacja przedsiębiorstwa (R4.2): marzec 2010 r
- OSGi Release 4.3 (R4.3): kwiecień 2011
- Rdzeń: kwiecień 2011
- Kompendium i mieszkanie: maj 2012
- OSGi Release 5 (R5): czerwiec 2012
- Core and Enterprise: czerwiec 2012 r
- OSGi Release 6 (R6): czerwiec 2015
- Rdzeń: czerwiec 2015
- OSGi Release 7 (R7): kwiecień 2018
- Rdzeń i kompendium: kwiecień 2018 r
- OSGi Release 8 (R8): grudzień 2020 r
Powiązane normy
- MHP / OCAP
- Universal Plug and Play (UPnP)
- DPWS
- ITU-T G.hn
- LonWorks
- CORBA
- CEBus
- EHS ( KNX ) / CECED łańcuch
- Rozszerzenia zarządzania Java
Projekty wykorzystujące OSGi
- Adobe Experience Manager - korporacyjny system zarządzania treścią
- Apache Aries - implementacje Blueprint Container i rozszerzenia specyfikacji aplikacji zdefiniowanych przez OSGi Enterprise Expert Group
- Apache Sling - warstwa aplikacji oparta na OSGi dla repozytoriów treści JCR
- Atlassian Confluence i JIRA - architektura wtyczek dla tego typu wiki przedsiębiorstwa i narzędzia do śledzenia problemów wykorzystuje OSGi
- Projekt Business Intelligence and Reporting Tools (BIRT) - mechanizm raportowania typu open source
- Cytoscape - platforma oprogramowania bioinformatycznego typu open source (od wersji 3.0)
- DataNucleus - usługi danych open source i platforma trwałości w architekturach zorientowanych na usługi
- DDF - Distributed Data Framework zapewnia bezpłatną integrację danych z otwartym kodem źródłowym
- Dotcms - Open Source Web Content Management
- EasyBeans - kontener EJB 3 typu open source
- Eclipse - open source IDE i bogata platforma kliencka
- iDempiere - jest implementacją OSGi otwartego oprogramowania ERP Branch GlobalQSS Adempiere 361, pierwotnie zapoczątkowanego przez Low Heng Sin
- Eclipse Virgo - serwer oparty na mikrojądrze open source zbudowany z pakietów OSGi i obsługujący aplikacje OSGi
- GlassFish (v3) - serwer aplikacji dla Java EE
- Fuse ESB - produktywna i obsługiwana wersja ServiceMix 4.
- Zintegrowana przeglądarka genomu - graficzny interfejs użytkownika typu open source do wizualizacji, eksploracji i analizy danych genomu
- IntelliJ - Java IDE i bogata platforma kliencka z bezpłatną edycją społecznościową
- JBoss - serwer aplikacji JBoss firmy Red Hat
- JOnAS 5 - serwer aplikacji Java EE 5 typu open source
- Joram - serwer wiadomości typu open source (JMS, MQTT, AMQP itp.)
- JOSSO 2 - oparta na standardach Open Source Platforma zarządzania tożsamością i dostępem firmy Atricore
- Liferay Dxp - platforma open source i komercyjna platforma portalu dla przedsiębiorstw korzysta z OSGi od wersji 7.x.
- Lucee 5 - serwer aplikacji internetowych CFML typu open source
- NetBeans - open source IDE i bogata platforma kliencka
- Nuxeo - platforma usługowa ECM typu open source
- Open Daylight Project - projekt mający na celu przyspieszenie wdrażania sieci definiowanych programowo
- OpenEJB - kontener EJB 3.0 z obsługą Open Source OSGi, który można uruchomić zarówno w trybie samodzielnym, jak i osadzonym
- openHAB - oprogramowanie do automatyzacji domu typu open source
- OpenWorm - symulacja oprogramowania typu open source C. elegans za pośrednictwem dedykowanej platformy modułowej Geppetto
- Akana - serwer API Gateway, Portal i Analytics firmy Akana (dawniej SOA Software)
- SpringSource dm Server - serwer oparty na mikrojądrze open source zbudowany z pakietów OSGi i obsługujący aplikacje OSGi
- Weblogic - Oracle Weblogic Application Server
- WebSphere - IBM Websphere JEE Application Server
- WebMethods - SoftwareAG WebMethods
- WSO2 Carbon - Podstawowa platforma dla stosu oprogramowania pośredniego Open Source klasy korporacyjnej WSO2
Aktualne implementacje frameworka
Nazwa | Licencja |
---|---|
Apache Felix | Otwarte źródło |
Apache Karaf | Otwarte źródło |
Concierge OSGi | Otwarte źródło |
Equinox OSGi | Otwarte źródło |
Eclipse Gemini | Otwarte źródło |
Knopflerfish | Otwarte źródło |
Zobacz też
Bibliografia
Dalsza lektura
- Cummins, Holly; Ward, Tim (28 marca 2013), Enterprise OSGi in Action (wydanie 1), Manning Publications , s. 376, ISBN 978-1617290138
- Alves, Alexandre de Castro (28 lipca 2011), OSGi in Depth (1st ed.), Manning Publications , s. 325, ISBN 978-1-935182-17-7
- McAffer, Jeff; VanderLei, Paul; Archer, Simon (24 lutego 2010), OSGi and Equinox: Creating Highly Modular Java Systems (1st ed.), Addison-Wesley Professional , s. 460, ISBN 978-0-321-58571-4
- Joseph Gédéon, Walid (5 listopada 2010), OSGi i Apache Felix 3.0 Beginner's Guide (1st ed.), Packt Publishing , s. 336, ISBN 978-1-84951-138-4
- Walls, Craig (lipiec 2009), Modular Java with OSGi and Spring (1st ed.), Pragmatic Bookshelf, s. 250, ISBN 978-1-934356-40-1
- Hall, Richard S; Pauls, Karl; McCulloch, Stuart (wrzesień 2009), OSGi in Action (wydanie 1), Manning Publications , s. 375, ISBN 978-1-933988-91-7
- Alves, Alexandre de Castro (marzec 2009), OSGi Application Frameworks (1st ed.), Manning Publications , str. 325, ISBN 978-1-935182-17-7
- Bartlett, Neil (10.01.2009), OSGi In Practice (PDF) (DRAFT red.), Str. 229
- McAffer, Jeff; VanderLei, Paul; Archer, Simon (7 września 2009), Equinox and OSGi: The Power Behind Eclipse (1st ed.), Addison-Wesley Professional , s. 480, ISBN 978-0-321-58571-4
- Mak, Gary (2009), Pro SpringSource dm Server , Apress , s. 250, ISBN 978-1-4302-1640-7 , zarchiwizowane od oryginału w dniu 2010-12-05 , pobrane 2008-12-28
- Rubio, Daniel (12.02.2009), Pro Spring Dynamic Modules for OSGi Service Platforms (First ed.), Apress , s. 392 , ISBN 978-1-4302-1612-4
- OSGi Alliance (2003), Platforma usługowa OSGi, wydanie 3 , IOS Press, str. 604, ISBN 1-58603-311-5
- OSGi Service Platform, Core Specification, Release 4, Version 4.1 , OSGi Alliance., 2007, s. 228, ISBN 978-90-79350-01-8
- Platforma usługowa OSGi, podstawowa specyfikacja, wydanie 4, wersja 4.2 , OSGi Alliance., 2009, s. 332, ISBN 978-90-79350-04-9
- OSGi Service Platform, Service Compendium, Release 4, Version 4.1 , OSGi Alliance., 2007, s. 594, ISBN 978-90-79350-02-5
- OSGi Service Platform, Mobile Specification, Release 4, Version 4 , OSGi Alliance., 2007, s. 426, ISBN 978-90-79350-03-2
- Kirk Chen, Li Gong. (2001), Programming Open Service Gateways with Java Embedded Server (TM) Technology , Prentice Hall PTR, s. 480, ISBN 0-201-71102-8
- Kayode Odeyemi (2010), Tworzenie deklaratywnej usługi OSGI z Maven przy użyciu Netbeans
- BJ Hargrave (IBM) (2011), Aktualizacja techniczna OSGi 4.3: Co nowego? Fundacja Eclipse, archiwizowane z oryginałem na 2011-06-21 , pobierane 2011-06-11
Linki zewnętrzne
- Oficjalna strona internetowa
- Oredev 2008 - Architektura - OSGi teraz i jutro
- Indeks artykułów Eclipse Equinox - artykuły na temat implementacji OSGi typu open source