OSGi

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 26 oktober 2015; kontroller kräver 5 redigeringar .
OSGi
Organisations typ organisation för ramverk , fri programvara och standarder [d]
Bas
Stiftelsedatum maj 2000 [1] [2]
Hemsida osgi.org
 Mediafiler på Wikimedia Commons

OSGi Alliance , tidigare känt som Open Services Gateway-initiativet (open services access initiative) är en öppen standardorganisation (Open Standards Development Organization - SDO). Under de senaste åren har hon utvecklat en Java -baserad OSGi -tjänsteplattform  (även känd som The Dynamic Module System for Java) som kan hanteras på distans. Huvuddelen av denna utveckling är ett ramverk (ramverk), som definierar applikationens livscykelmodell och tjänsteregistret.

OSGi (Open Services Gateway Initiative) är en specifikation för ett dynamiskt modulärt system och tjänsteplattform för Java - applikationer, utvecklad av OSGi Alliance-konsortiet. Specifikationerna ger en modell för att bygga en applikation från komponenter kopplade samman via tjänster [3] . Summan av kardemumman är möjligheten att dynamiskt installera om komponenterna och komponenterna i applikationen utan att behöva stoppa och starta om den.

Utbudet av applikationer för denna specifikation är ganska brett: det utvecklades ursprungligen för att skapa inbyggda system (särskilt för BMW- bilar är Siemens också aktivt involverad i utvecklingen av specifikationen ), men nu multifunktionella fristående stationära applikationer (till exempel, Eclipse SDK) och företagssystem byggs baserade på OSGi .

Baserat på detta ramverk har ett stort antal OSGi-tjänster skapats:

  • Logga
  • Konfigurationshantering
  • Inställningar
  • Http -tjänst (startar servlets)
  • XML -tolkning (XML-databehandling)
  • Enhetsåtkomst (åtkomst till enheter)
  • paketadministratör
  • Tillstånd Admin
  • startnivå
  • Användaradministratör
  • IO-kontakt
  • Wire Admin
  • jini
  • UPnP -exportör
  • Applikationsspårning
  • Signerade buntar
  • Deklarativa tjänster
  • Energihantering
  • Enhetshantering (enhetshantering)
  • Säkerhetspolicyer
  • Diagnostik/övervakning och ramlager

Versioner av OSGi-standarden

Det finns fyra implementeringar av öppen källkod av OSGi-standarden:

Baserat på Equinox är utvecklingsmiljön Eclipse 3.0+ byggd, som påstår sig vara industristandarden för komponentsammansättning av program.

Relaterade RFC:er och Java-standarder

Livscykel

Livscykelprocessen lägger till paket som dynamiskt kan installeras, startas, stoppas, uppgraderas och tas bort. Bunter förlitar sig på modulnivå för klassladdning, men lägger till ett API för att hantera moduler under körning. Livscykellagret representerar dynamik som normalt inte är en del av applikationen. Omfattande beroendemekanismer används för att säkerställa att miljön fungerar korrekt. Livscykeloperationer är helt skyddade av säkerhetsarkitekturen.

Paketstatus Beskrivning
INSTALLERAD Paketet har installerats
LÖST Alla Java-klasser som krävs för paketet är tillgängliga. Detta tillstånd indikerar att paketet är redo att köras eller stoppas.
STARTANDE Paketet startar, metoden BundleActivator.start kallas , men startmetoden har ännu inte returnerats. När ett paket har en aktiveringspolicy förblir paketet i START-läget tills paketet aktiveras i enlighet med dess aktiveringspolicy.
AKTIVA Paketet har framgångsrikt aktiverats och lanserats; Dess Bundle Activator startmetod anropades och returnerades.
STOPPAR Paketet har stoppats. Metoden BundleActivator.stop kallas , men stoppmetoden har inte returnerat något resultat än.
OINSTALLERAD Paketet har tagits bort. Den kan inte flytta till en annan stat.

Följande är ett exempel på en typisk Java-klass som implementerar BundleActivator- gränssnittet :

paket org.wikipedia ; import org.osgi.framework.BundleActivator ; import org.osgi.framework.BundleContext ; public class Activator implementerar BundleActivator { private BundleContext context ; @Override public void start ( BundleContext context ) kastar Exception { System . ut . println ( "Start: Hello World" ); detta . sammanhang = sammanhang ; } @Override public void stop ( BundleContext context ) kastar Exception { System . ut . println ( "Stopping: Goodbye Cruel World" ); detta . sammanhang = null ; } }

Se även

Anteckningar

  1. https://www.osgi.org/developer/specifications/
  2. https://osgi.org/download/r1/r1.osgi-spec.pdf
  3. Mashnin, 2010 .

Litteratur

  • Mashnin T. S. Modern Java-teknik i praktiken. - BHV-Petersburg, 2010. - S. 196–200. - ISBN 978-5-9775-0561-1 .

Länkar