OSGi Service Platform
Az OSGi Service Platform röviden OSGi (Open Services Gateway initiative, majd OSGi Alliance) keretrendszer Java programnyelven írt programokhoz készült dinamikus modulrendszer. Lehetővé teszi alkalmazások vagy komponensek távoli telepítését, elindítását, leállítását, frissítését és eltávolítását a számítógép újraindítása nélkül. A keretrendszer az alkalmazásokat csomagokba (bundle) szervezi; biztosítja a futtatási környezetet, modularizált osztálybetöltési házirendeket, a kötegek manipulálására szolgáló életciklus-menedzsment eszközöket, és a kötegek együttműködését segítő szolgáltatás-nyilvántartást.
OSGi Service Platform | |
Fejlesztő | OSGi Alliance |
Legfrissebb stabil kiadás | 6.0 (2014. június[1]) |
Programozási nyelv | Java |
Operációs rendszer | Java |
Platform | platformfüggetlen |
Kategória | Sztenderdekért felelős szervezet |
Licenc | OSGi Specification License, Version 1.0 |
Az OSGi Service Platform weboldala |
Az OSGi specifikációt eredetileg a beágyazott hálózati eszközökre összpontosítva alkották meg, de ma már ezen túllépve mobiltelefonoktól a nyílt forráskódú Eclipse fejlesztőkörnyezetig számos alkalmazási területen felbukkan.
Támogató szervezet
szerkesztésAz OSGi Alliance (régebbi, ma már nem használatos nevén Open Services Gateway initiative) egy nonprofit konzorcium. Ők specifikálták és tartják karban máig az OSGi szabványt.[2]
Az OSGi Alliance 1999 márciusában alakult, alapító tagjai között volt az Ericsson, az IBM, a Motorola és a Sun Microsystems. 2012 júniusára a tagok soraiban foglal helyet többek között az Adobe Systems, a Deutsche Telekom, a Siemens, az Oracle és a Red Hat.
A szervezet élén az igazgatótanács áll. A szakmai munka a tagok által delegált szakértői csoportokban folyik, témáik:
- a központi platform
- üzleti felhasználás
- lakókörnyezeti felhasználás
- járműbeli felhasználás
- mobil felhasználás
Specifikációs folyamat
szerkesztésAz OSGi specifikációt a konzorcium tagjai nyílt folyamat során fejlesztik, és térítésmentesen teszik közzé az OSGi Specifikációs Licenc alatt.[3] Az OSGi Alliance megfelelőségi tanúsítványokat kibocsátó programja csak a tagok számára elérhető. 2012 júniusában hét tanúsítvánnyal rendelkező OSGi keretrendszer létezik.[4]
Az Architektúra
szerkesztésBármely keretrendszer, amely megvalósítja az OSGi sztenderdet egy környezetet nyújt az alkalmazások modulokba ill. kisebb csomagokba szervezéséhez. Minden csomag szorosan kapcsolt, dinamikusan betölthető .class fájlok, .jar fájlok és konfigurációs fájlok gyűjteménye, amely explicit módon deklarálja a külső függőségeit (amennyiben van neki).
A keretrendszer koncepcionálisan a következő területekre van felosztva:
- Bundles (csomagok)
- A csomagok közönséges JAR komponensek extra manifest fejlécekkel.
- Services (szolgáltatások)
- A szolgáltatás réteg dinamikusan kapcsolódik a csomagokhoz felkínálva a publish-find-bind modellt a Plain Old Java Interfaces (POJI)k vagy Plain Old Java Objects (POJO)k számára.
- Service Registry (szolgáltatás jegyzék)
- API a menedzsment szolgáltatásokhoz (Szolgáltatás regisztráció, Szolgáltatás követés és Szolgáltatás referencia).
- Life-cycle (életciklus)
- API a csomagok életciklusának kezeléshez (telepítés, elindítás, leállítás, frissítés és eltávolítás).
- Modules (Modulok)
- Az a réteg, amely definiálja az egységbezárást és a függőség deklarációkat (hogyan tud egy csomag importálni és exportálni kódot)
- Security (biztonság)
- Az a réteg, amely kezeli a biztonsági vonatkozásokat a csomagok funkcionalitásának limitálásával az előre definiált képességekhez.
- Execution Environment (Végrehajtási környezet)
- Definiálja, hogy mely metódusok és osztályok érhetők el egy adott platformon. A végrehajtó környezeteknek nincs fix listája, habár ez annak megfelelően változik, ahogy a Java Community Process kiadja az Java új verzióit és kiadásait. Ugyanakkor a következő felsorolást a legtöbb OSGi megvalósítás támogatja jelenleg:
- CDC-1.0/Foundation-1.0
- CDC-1.1/Foundation-1.1
- OSGi/Minimum-1.0
- OSGi/Minimum-1.1
- JRE-1.1
- A J2SE-1.2-től egészen a J2SE-1.6-ig
Csomagok (bundle)
szerkesztésEgy csomag a Java osztályok és kiegészítő erőforrások csoportja. Az erőforrások el vannak látva részletes manifest MANIFEST.MF
fájllal a teljes tartalmukról, továbbá a kiegészítő szolgáltatásoknak meg kell adni az ide tartozó Java osztályok csoportjának még kifinomultabb viselkedését, az egész összetett komponensre vonatkozólag.
Az alábbi egy tipikus példája a MANIFEST.MF
fájlnak OSGi fejlécekkel:
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"
A tartalmak jelentése a példában a következő:[5]
- Bundle-Name: a csomag ember által is olvasható nevét definiálja, egy rövid nevet célszerű a csomaghoz rendelni.
- Bundle-SymbolicName: Ez az egyedüli kötelező fejléc elem. Ez a bejegyzés egy egyedi azonosítót határoz meg a csomag számára a fordított domain név konvenció sorrendje szerint (java packages szintén ezt használják)
- Bundle-Description: A csomag funkcionalitásának leírása
- Bundle-ManifestVersion: Jelzi az OSGi specifikáció számára, hogy használja olvasásra ezt a csomagot
- Bundle-Version: Egy verziószámot jelöl a csomag számára
- Bundle-Activator: Annak az osztálynak a nevét jelöli, amely meg lesz hívva, amikor a csomag aktiválva lesz.
- Export-Package: Azt fejezi ki, hogy milyen Java csomagok vannak az adott csomagban, amelyek elérhetők lesznek a külvilág számára.
- Import-Package: Azt jelöli ki, hogy mely Java csomagok szükségesek a külvilág felől, hogy eleget tehessenek a függőségeknek, amelyek szükségesek a csomaghoz.
Életciklus
szerkesztéspackage org.wikipedia;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private BundleContext context;
public void start(BundleContext context) throws Exception {
System.out.println("Starting: Hello World");
this.context = context;
}
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping: Goodbye Cruel World");
this.context = null;
}
}
Szolgáltatások
szerkesztésSztenderd szolgáltatások
szerkesztésA szervezet
szerkesztésA közösség
szerkesztésSpecifikáció verziói
szerkesztés- OSGi Release 1 (R1): 2000. május
- OSGi Release 2 (R2): 2001. október
- OSGi Release 3 (R3): 2003. március
- OSGi Release 4 (R4): 2005. október / 2006. szeptember
- Core Specification (R4 Core): 2005. október
- Mobile Specification (R4 Mobile / JSR-232): 2006. szeptember
- OSGi Release 4.1 (R4.1): 2007. május (AKA JSR-291)
- OSGi Release 4.2 (R4.2): 2009. szeptember
- Enterprise Specification (R4.2): 2010. március
- OSGi Release 4.3 (R4.3): 2011. április
- Core: 2011. április
- Compendium és Residential: 2012. május
- OSGi Release 5 (R5): 2012. június
- Core és Enterprise: 2012. június
Újdonságok a 4-es kiadásban
szerkesztésÚjdonságok a 4.1-es kiadásban
szerkesztésAz OSGi R4.1 egy kisebb javításokat tartalmazó kiadás volt, melynek célja inicializáció és betöltő csomag egyes kérdéseinek tisztázása volt, annak érdekében, hogy javítsák a harmadik fél által fejlesztett szoftver komponensek használatát. Semmilyen új szolgáltatással vagy fő funkcionalitással nem bővült.
Újdonságok a 4.2-es kiadásban
szerkesztésÚjdonságok a 4.3-es kiadásban
szerkesztésKapcsolódó RFCk és Java specifikációk
szerkesztés- RFC-2608 (Service Location Protocol)
- Sun JINI (Java Intelligent Network Infrastructure)
- Sun JCP JSR-8 (Open Services Gateway Specification)
- Sun JCP JSR-232 (Mobile Operational Management)
- Sun JCP JSR-246 (Device Management API)
- Sun JCP JSR-249 (Mobile Service Architecture for CDC)
- Sun JCP JSR-277 (Java Module System)
- Sun JCP JSR-291 (Dynamic Component Support for Java SE - AKA OSGi 4.1)
- Sun JCP JSR-294 (Improved Modularity Support in the Java Programming Language)
Kapcsolódó sztenderdek
szerkesztésOSGi-t használó projektek
szerkesztésJelenlegi keretrendszer megvalósítások
szerkesztésName | License |
---|---|
Apache Felix | Nyílt forráskódú |
Concierge OSGi | Nyílt forráskódú |
Equinox OSGi | Nyílt forráskódú |
Hitachi SuperJ | kereskedelmi |
Knopflerfish | Nyílt forráskódú |
ProSyst mBS | kereskedelmi |
Eclipse Gemini | Nyílt forráskódú |
Jegyzetek
szerkesztés- ↑ OSGi Alliance | Specifications / HomePage. osgi.org, 2014. [2015. október 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. november 24.)
- ↑ OSGi Alliance - About. [2012. június 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. június 7.)
- ↑ OSGi Specification License. [2012. április 22-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. június 7.)
- ↑ Certified Products. OSGi Alliance. [2010. október 28-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. november 1.)
- ↑ Creating OSGi bundles by Costin Leau
Kapcsolódó szócikk
szerkesztésTovábbi olvasnivalók
szerkesztés- Alves, Alexandre de Castro (July 28, 2011), OSGi in Depth (1st ed.), Manning Publications, pp. 325, ISBN 1-935182-17-X
- McAffer, Jeff; VanderLei, Paul & Archer, Simon (February 24, 2010), OSGi and Equinox: Creating Highly Modular Java Systems (1st ed.), Addison-Wesley Professional, pp. 460, ISBN 0-321-58571-2, <http://www.informit.com/store/product.aspx?isbn=0321612353>
- Joseph Gédéon, Walid (November 5, 2010), OSGi and Apache Felix 3.0 Beginner's Guide (1st ed.), Packt Publishing, pp. 336, ISBN 1-84951-138-1, <https://www.packtpub.com/osgi-and-apache-felix-30-beginners-guide/book>
- Walls, Craig (July 2009), Modular Java with OSGi and Spring (1st ed.), Pragmatic Bookshelf, pp. 250, ISBN 978-1-934356-40-1, <http://pragprog.com/titles/cwosg/modular-java>. Hozzáférés ideje: 2012-06-07 Archiválva 2011. május 30-i dátummal a Wayback Machine-ben
- Hall, Richard S (September 2009), OSGi in Action (1st ed.), Manning Publications, pp. 375, ISBN 1-933988-91-6
- Alves, Alexandre de Castro (March 2009), OSGi Application Frameworks (1st ed.), Manning Publications, pp. 325, ISBN 978-1-935182-17-7
- Bartlett, Neil (2009-01-10), OSGi In Practice (DRAFT ed.), pp. 229, <http://s3.amazonaws.com/neilbartlett.name/osgibook_preview_20090110.pdf> Archiválva 2012. február 16-i dátummal a Wayback Machine-ben
- McAffer, Jeff; VanderLei, Paul & Archer, Simon (September 7, 2009), Equinox and OSGi: The Power Behind Eclipse (1st ed.), Addison-Wesley Professional, pp. 480, ISBN 0-321-58571-2, <http://www.informit.com/store/product.aspx?isbn=0321609425>
- Mak, Gary (2009), Pro SpringSource dm Server, Apress, pp. 250, ISBN 1-4302-1640-9, <http://www.apress.com/book/view/9781430216407>. Hozzáférés ideje: 2012-06-07 Archiválva 2010. december 5-i dátummal a Wayback Machine-ben
- Rubio, Daniel (2009-02-12), Pro Spring Dynamic Modules for OSGi Service Platforms (First ed.), Apress, pp. 392, ISBN 1-4302-1612-3, <http://www.apress.com/book/view/1430216123>. Hozzáférés ideje: 2012-06-07 Archiválva 2012. február 18-i dátummal a Wayback Machine-ben
- The OSGi Alliance (2003), OSGi Service Platform, Release 3, IOS Press, pp. 604, ISBN 1-58603-311-5
- OSGi Service Platform, Core Specification, Release 4, Version 4.1, OSGi Alliance., 2007, pp. 228, ISBN 978-90-79350-01-8
- OSGi Service Platform, Core Specification, Release 4, Version 4.2, OSGi Alliance., 2009, pp. 332, ISBN 978-90-79350-04-9
- OSGi Service Platform, Service Compendium, Release 4, Version 4.1, OSGi Alliance., 2007, pp. 594, ISBN 978-90-79350-02-5
- OSGi Service Platform, Mobile Specification, Release 4, Version 4, OSGi Alliance., 2007, pp. 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, pp. 480, ISBN 0-201-71102-8
- Kayode Odeyemi (2010), Building an OSGI Declarative Service with Maven using Netbeans, <http://sinati.com/blog/2010/glassfish/building-osgi-declarative-service-maven-using-netbeans>
- BJ Hargrave (IBM) (2011), OSGi 4.3 Technical Update: What's new?, The Eclipse Foundation, <http://www.eclipsecon.org/2011/sessions/?page=sessions&id=2279>. Hozzáférés ideje: 2012-06-07
További információk
szerkesztés- Hivatalos weboldal
- Oredev 2008 - Architecture - OSGi Now and Tomorrow
- OSGi Training
- Information on Java software components in the form of Enterprise JavaBeans and OSGi bundles
- OSGi Core Concepts Overview
Útmutatás és információ csere
szerkesztés- Frequently Asked Questions Archiválva 2013. január 22-i dátummal a Wayback Machine-ben
- OSGi Developer Mail List Archiválva 2007. október 17-i dátummal a Wayback Machine-ben
- OSGi Open Forum and Discussion Central
- Eclipse Equinox Article Index - Articles on an open source OSGi implementation
- OSGi Users' Forums Archiválva 2008. augusztus 28-i dátummal a Wayback Machine-ben - Belgium, Brazil, China, France, Germany, Japan, Korea, Spain, Sweden, UK and soon : Italy
Fordítás
szerkesztésEz a szócikk részben vagy egészben az OSGi című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.