OSGi és barátai Modul alapú programozás Java környezetben avagy Hová tűnt a sok kereszthivatkozás? Biczók László
Miért pont a Blues?
Gyökerek 19. század afrikai gyökerek Déli államok - ültetvények Blues a sikertörténet Rabszolgák, ex-rabszolgák, leszármazottaik, stb. Spirituálék, balladák Vallási ujjongások (ring shout) Kántálások (chant) Munkadalok Kiáltások (field holler) Magány, szolgasors, kilátástalanság, önsajnálat Blues melankólia, szomorúság
Gyermekkor Mississippi Delta New Orleanshoz közel Jazz és Blues egymásra hatása Blues a sikertörténet A Blues nem terjedt messzire az 1930-40-es évekig Viszont utána...
A trónkövetelő Blues a sikertörténet Városi környezetbe kerülve gyorsan terjedt Megjelenik az elektromos gitár A blues szerteágazik Delta blues Chicago blues Texas blues Jazz blues Kansas City blues A blues átkel a tengeren British blues, stb.
A könnyűzene egyik alapja Rock and roll Rock Pop Heavy metal Stb. A blues ott van mindenhol Blues a sikertörténet
Mi a siker oka? Szubjektív vélemény Blues a sikertörténet Jól áttekinthető ( átérezhető ) struktúra 12 ütemes blues 3 alap akkord az alap skála 1., 4. és 5. hangjaira (dó, fá, szó) épülő akkordok (pl. E, A, H) Pentaton hangsor Mindhárom akkordhoz illeszkedik Dúr és moll formában is
Blues a sikertörténet Peter Green's Fleetwood Mac 1968 I Loved Another Women Moll blues
Blues Modul alapú programozás? Mi köze a két dolognak egymáshoz? A Blues sikerének okai tanulságosak lehetnek a szoftverfejlesztés terén is Jól áttekinthető struktúra Egységes folyamatkezelés
A probléma felvetése Mi is a gond a szoftverfejlesztéssel? Komplex kapcsolatok kódon belül Meglévő kód újrahasznosítása nehézkes, függőségek miatt bonyolult Módosítások mellékhatásait nehéz átlátni Tesztelés bonyolult
Megoldás keresése Struktúrált programozás, objektum orientált programozás, stb. Vagy: Önálló modulok, mint funkcionális egységek OSGi Neat
Megoldás keresése Miért jó a modul alapú programozás? A funkciók tesztelése modulonként végezhető Modulon belüli változtatások kevéssé érintenek más modulokat Modulok közötti interfészek csökkentik a keresztbehivatkozások számát Modulok verziózhatók...
OSGi Dinamikus modul rendszer Java-hoz OSGi szövetség (www.osgi.org) OSGi szabvány komponens alapú Közös problémák megoldására Integráció Verziózás Életciklus
OSGi
OSGi - architektúra
OSGi Bundle jar, OSGi információ manifest-ben Services Bundle-k dinamikus összekapcsolása (publish-find-bind) Service registry Service management API Life-cycle Bundle életciklus management (install, start, stop, update, uninstall) Modules Bundle export/import szabályok (függőségek), láthatóság, verziózás
Security Execution environment Az egyes környezeteken elérhető osztályokat, metódusokat, konfigurációkat definiálja OSGi/Minimum-1.0 OSGI/Minimum-1.1 JRE-1.1 J2SE 1.2 J2SE 1.6 Stb. OSGi
Manifest.MF a jar-ban Identifikáció: OSGi - Bundle Bundle-SymbolicName: org.eclipse.equinox.registry Bundle-Version: 3.2.100.v20060918 Bundle-Name: Eclipse Extension Registry Bundle-Vendor: Eclipse.org ClassPath: Bundle-ClassPath:., someotherjar.jar Életciklus: Bundle-Activator: org.eclipse.core.internal.registry.osgi.activator Függőségek: Import-Package: javax.xml.parsers, org.xml.sax, org.osgi.framework;version=1.3 Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.2.0,4.0.0)" Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3 Kiajánlás (export) Export-Package: org.eclipse.equinox.registry
OSGi - Modulok Indíthatók, leállíthatók (Bundle-Activator) A futó bundle-k szolgáltatásai kiajánlásra kerülnek
OSGi Class loading Minden Bundle egy JVM-en belül fut Minden Bundle-nek saját class loader-e van A többi Bundle-tól függetlenül tölthet be jar-okat Különböző Bundle-k akár jar-ok különböző verzióit is használhatják Kód újrafelhasználást segíti
OSGi - életciklus
OSGi Standard Services Logging Fogadja a log-okat és továbbítja azoknak a bundle-oknak, amik feliratkoztak log információkért Configuration Admin - Az operátorok ezen keresztül konfigurálhatják a bundle-kat Device Access - Plug and Play automatikus device felismerés és kapcsolás User Admin - Authentikáció, jogosultságkezelés IO Connector - Új protokoll sémákat kezelhetnek a bundle-k ezen keresztül Preferences - Properties helyett Component Runtime - a bundle függőségek XML alapú leírása Deployment Admin - Szabványos hozzáférés a deployment agent-hez Event Admin - Publish-subscribe inter bundle kommunikáció Application Admin - Egyszerűsíti az egyidejűleg elérhető alkalmazások kezelését
OSGi Hol használják Eclipse Equinox Open source OSGi implementáció (www.eclipse.org/equinox) Knopflerfish Open source OSGi implementáció (www.knopflerfish.org) Oracle Weblogic 10.3 IBM WebSphere 6.1 JbossOSGi (1.0.0.Beta8)...
Modul alapú programozás - Neat IQSYS fejlesztés - még az OSGi előtt Telco környezetben ~300.000 tr/nap Alap koncepció Funkcionális modulok Modul kommunikáció üzenet alapon Alkalmazás logika szkriptekben Alkalmazásszerver környezetben és önálló Java alkalmazásként is működjön
Modul alapú programozás - Neat Java Plugin Framework (jpf.sourceforge.net) Open source Bundle management framework Eclipse 2.x plugin koncepció alapján készült Hierarchikus plugin struktúra Minden plugin saját class loader-rel rendelkezik plugin.xml Java osztály export/import Verzió kezelés Class-path
Modul alapú programozás - Neat App1 App2 App3 WebService I/F HTTPS I/F Proxy Scripts Provisioning Acl Logging Msg Broker Gui Timer Browser DB DB I/F Notification NE1 I/F NE2 I/F NEx I/F SMTP NE1 NE2 NEx
Mikor találkozunk vele? Derek and the Dominos 1970 Modul alapú programozás Layla And Other Assorted Love Songs Eric Clapton, Bobby Whitlock - Anyday Előadó: Susan Tedeschi & Derek Trucks Band, Crossroads Guitar Festival 2007
Biczok.Laszlo@iqpp.hu