Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Java komponens modellek avagy hány JSR kell egy használható komponens modell bevezetéséhez? Srágli Attila.

Hasonló előadás


Az előadások a következő témára: "Java komponens modellek avagy hány JSR kell egy használható komponens modell bevezetéséhez? Srágli Attila."— Előadás másolata:

1 Java komponens modellek avagy hány JSR kell egy használható komponens modell bevezetéséhez? Srágli Attila

2 Java komponens modellekSrágli Attila Áttekintés Fogalmak Miért kell nekünk komponens modell? A múlt Komponens modellek Komponens modell implementációk Összehasonlítás A jelen A jövő?

3 Java komponens modellekSrágli Attila Fogalmak – komponens Ahány ház, annyi definíció. A kedvenceim: „A component is a unit of composition with contractually specified interfaces and fully context dependencies that can be deployed independently and is subject to third-party composition” Clemens Szyperski: Component Software: Beyond Object-Oriented Programming, „the smallest architecturally relevant building block, a piece of encapsulated application functionality” Markus Völter

4 Java komponens modellekSrágli Attila Fogalmak – komponens Egy komponens tehát explicit módon deklarálja: az általa nyújtott szolgáltatásokat Java megfelelője: implementált interfészek az általa igényelt szolgáltatásokat Java megfelelője: ?? a kapcsolódási pontokat (portok) az igényelt szolgáltatások egyedei számára (referencia neve, kardinalitás) Java megfelelője: ??

5 Java komponens modellekSrágli Attila Fogalmak – komponens modell Definiálja a komponensek struktúráját (Hogyan néz ki egy komponens?): interfészek konfiguráció kompozíció (Hogyan építkezünk belőlük?) viselkedését (Hogyan működnek?): életciklus-kezelés kommunikáció... valamilyen formalizmust használva.

6 Java komponens modellekSrágli Attila Fogalmak – komponens framework A komponens modell implementációja Kezeli a komponensek függőségeit életciklusát (telepítés, indítás, leállítás, frissítés, eltávolítás) nem-funkcionális követelményeit (QoS, perzisztencia, naplózás, kommunikáció, biztonság, tranzakciók stb.) -> fw. szolgáltatások.

7 Java komponens modellekSrágli Attila Fogalmak – Dependency Injection (DI) Tervezési minta Egyéb elnevezése: Inversion of Control (IoC) Adott objektum (szolgáltatás) létrehozását kiveszi a szolgáltatás igénylője (kliens) hatásköréből. A szolgáltatást a komponens konténer hozza létre, majd az arra mutató referenciát megfelelő módon (konstruktor, egyedváltozó, metódus vagy byte-kód beszúrással) átadja a kliensnek.

8 Java komponens modellekSrágli Attila Fogalmak – Dependency Lookup Tervezési minta Egyéb elnevezései: Service Locator, Object Factory, Component Broker, Component Registry Adott objektum (szolgáltatás) létrehozását kiveszi a szolgáltatás igénylője (kliens) hatásköréből. A szolgáltatást a komponens konténer hozza létre és tárolja (registry), a kliens a konténer API-n keresztül érheti el az arra mutató referenciát (lookup).

9 Java komponens modellekSrágli Attila Miért kell nekünk komponens modell? Mert lehetővé teszi a komponens alapú szoftverfejlesztést a komponens formátum szabványosítását, szabványos szolgáltatások kialakítását (COTS) a Java nyelv és VM hiányosságainak pótlását: kód-hordozhatóság (magasabb szintű absztrakció, konténerek között) verziókezelés (JAR-hell) alkalmazás-felügyelet …

10 Java komponens modellekSrágli Attila A múlt Kezdetben nem definiáltak komponens modellt Később: Java Beans, EJB 1.x, 2.x, … Problémák: túl specifikusak hiányzó verziókezelés nem alkalmazhatók széles körben (beágyazott eszközök – nagyvállalati felhasználás)

11 Java komponens modellekSrágli Attila Komponens modellek – DI framework-ök Struktúra: POJO/POJI modell (szolgáltatás = osztály [+ interfész]) Konfiguráció: Java annotációk és/vagy konfigurációs file stb. Kompozíció: Dependency Injection Életciklus-kezelés: nincs vagy eltérő implementációk

12 Java komponens modellekSrágli Attila Komponens modellek – DI framework-ök

13 Java komponens modellekSrágli Attila Komponens modellek - OSGi Struktúra: POJO/POJI modell (szolgáltatás = osztály [+ interfész]) Konfiguráció: MANIFEST.INF, XML (pl. Declarative Services, Spring-DM, Extension Registry), opcionálisan Java annotációk (pl. Spring- DM) Kompozíció: Dependency Lookup (BundleContext) Dependency Injection: konstruktor, setter (Spring-DM), egyedváltozó, metódus (iPOJO) Életciklus-kezelés: szabványos (JSR 291) állapotok: installed, resolved, starting, active, stopping, uninstalled

14 Java komponens modellekSrágli Attila Komponens modellek - OSGi

15 Java komponens modellekSrágli Attila Komponens modellek – Java Module System Struktúra : POJO/POJI modell (szolgáltatás = osztály [+ interfész]) Konfiguráció : MANIFEST.INF, opcionálisan Java annotációk Kompozíció : Dependency Lookup Életciklus-kezelés : szabványos (JSR 277) állapotok: new, preparing, validating, resolved, ready, error

16 Java komponens modellekSrágli Attila Komponens modellek - SCA Célja elsősorban a technológia-függetlenség és az interoperabilitás. Struktúra: POJO/POJI modell (szolgáltatás = osztály [+ interfész]) Konfiguráció: Java annotációk és XML Kompozíció: Dependency Injection (vagy más, a szabvány említi, de nem definiálja) Életciklus-kezelés: a szabvány nem definiálja, implementáció-specifikus

17 Java komponens modellekSrágli Attila Komponens modellek - SCA

18 Java komponens modellekSrágli Attila Spring - programozási modell POJO-k: public class Service { … } public class ServiceConsumer { private Service service; public void setService(Service service) { this.service = service; } … } XML konfiguráció: vagy public class Service { … } public class ServiceConsumer private Service service; … }

19 Java komponens modellekSrágli Attila OSGi - programozási modell package com.acme.service; public class Service { … } public class ServiceActivator implements BundleActivator { public void start(BundleContext context) { Service service = new Service(); context.registerService(Service.class.getName(), service, null); } public void stop(BundleContext context) { … } package com.acme.client; public class ConsumerActivator implements BundleActivator { public void start(BundleContext context) { Service service = (Service) context.getService(Service.class.getName()); … } public void stop(BundleContext context) { … } Service bundle - MANIFEST.INF Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Service Plug-in Bundle-SymbolicName: Service Bundle-Version: Bundle-Activator: com.acme.service.ServiceActivator Export-Package: com.acme.service … ServiceConsumer bundle - MANIFEST.INF Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ServiceConsumer Plug-in Bundle-SymbolicName: ServiceConsumer Bundle-Version: Bundle-Activator: com.acme.client.ConsumerActivator Import-Package: com.acme.service …

20 Java komponens modellekSrágli Attila SCA – programozási modell package public interface AccountService{ public AccountReport getAccountReport(String customerID); } package services.account; public class AccountServiceImpl implements AccountService private String currency = private AccountDataService accountDataService; public AccountReport getAccountReport(String customerID) { … }

21 Java komponens modellekSrágli Attila SCA – programozási modell XML konfiguráció: USD

22 Java komponens modellekSrágli Attila Összehasonlítás Szempontok, melyek szerint differenciálni lehet: Hordozhatóság Dinamikus modulkezelés (betöltés, eltávolítás, frissítés) Framework szolgáltatások Verziókezelés Elterjedtség, szabvány … javaslatok?

23 Java komponens modellekSrágli Attila Hordozhatóság OSGi: beágyazott eszközök (otthon-automatizálás, járműipar, navigációs eszközök stb.), ME (JSR 232), SE (JSR 291), EE (pl. BEA) DI framework-ök SE, EE Java Module System (JSR 277) tervezés alatt, leginkább SE SCA EE több implementáció (SpringSource, IBM, Oracle stb.)

24 Java komponens modellekSrágli Attila Dinamikus modulkezelés Spring, Guice, JSR 277: statikus, a framework/alkalmazás indításakor vagy alkalmazás által kezelt módon OSGi: teljesen dinamikus (futás közben is), a framework alapszolgáltatása SCA: implementáció-specifikus

25 Java komponens modellekSrágli Attila Framework szolgáltatások DI framework-ök: egyedi megoldások OSGi: szabványban rögzítve (JSR 232, JSR 291) Java Module System: a szabvány nem tartalmazza, más JSR-ek (pl. JSR 294) specifikálják majd SCA: nem része a szabványnak, implementáció- specifikus

26 Java komponens modellekSrágli Attila Verziókezelés Spring, Guice: nincs OSGi, Java Module System: szabványos, modul szintű SCA: nincs specifikálva, más absztrakciós szint (fw-implementáció)

27 Java komponens modellekSrágli Attila Elterjedtség, szabvány Spring: nagy felhasználói bázis (SE/EE) első verzió: 2002 kvázi szabvány (EE) Guice: terjedőben (SE/EE) első verzió: 2007 OSGi: viszonylag nagy felhasználói bázis (beágyazott/ME, SE, EE) első implementáció: 2000 szabványosított: JSR 232 (ME), JSR 291 (SE) Java Module System: csak szabványtervezet (JSR 277, early draft) nincs publikus implementáció SCA: több implementáció (leginkább EE) OSOA szabvány, 2005 (v0.9, az első publikus specifikáció), 2007 (v1.0)

28 Java komponens modellekSrágli Attila A jelen Nagyon hasonló megoldások Spring, OSGi gyors térhódítása együttműködés: Spring Dynamic Modules Guice terjedése együttműködés: Guice-OSGi, Spring Java Module System szabványosítás alatt, publikus implementáció nincs együttműködés: OSGi (javaslat) Egyre több SCA implementáció Szabványháború (JSR 291, JSR 277)

29 Java komponens modellekSrágli Attila A jövő? A komponens-alapú alkalmazások egyértelmű terjedése Szabványosítás (JCP?) vagy kvázi- szabványok? Java 7: JSR 277 vagy OSGi ? Együttműködő implementációk (pl. SCA) vagy Universal Middleware?

30 Java komponens modellekSrágli Attila Hivatkozások Google Guice (http://code.google.com/p/google-guice/)http://code.google.com/p/google-guice/ Guice-OSGi (http://wiki.ops4j.org/confluence/display/ops4j/Guice- OSGi)http://wiki.ops4j.org/confluence/display/ops4j/Guice- OSGi Java Module System (http://www.jcp.org/en/jsr/detail?id=277)http://www.jcp.org/en/jsr/detail?id=277 OSGi (http://www.osgi.org/)http://www.osgi.org/ Service Component Architecture (SCA) (http://www.osoa.org/display/Main/Service+Component+Architecture +Home)http://www.osoa.org/display/Main/Service+Component+Architecture +Home Spring (http://www.springframework.org/)http://www.springframework.org/ Spring Dynamic Modules (http://www.springframework.org/osgi/)http://www.springframework.org/osgi/

31 Java komponens modellekSrágli Attila Köszönöm a figyelmet!


Letölteni ppt "Java komponens modellek avagy hány JSR kell egy használható komponens modell bevezetéséhez? Srágli Attila."

Hasonló előadás


Google Hirdetések