Hlavní menu
Nástroje |
UvodDoKomponent.IPOJO HistoryHide minor edits - Show changes to markup 26 May 2017, 12:51
by
- Changed lines 6-8 from:
to:
![]() Příklad iPOJO komponenty Added lines 21-23:
![]() Instance iPOJO a její kontejner Deleted lines 39-41:
![]() Instance iPOJO a její kontejner Deleted lines 42-44:
![]() Příklad iPOJO komponenty 22 May 2017, 09:37
by
- Changed line 234 from:
![]() to:
![]() Changed line 241 from:
![]() to:
![]() 22 May 2017, 09:34
by - 22 May 2017, 09:29
by
- Deleted lines 43-55:
KompoziceZajímavou vlastností iPOJO je možnost vytváření kompozic, tj. aplikací agregujících několik bundlů a schopných určit rozsah viditelnosti (propagace) jejich služeb. Prakticky řečeno lze nastavit, které služby budou dostupné jen uvnitř kompozice a které budou uveřejněny i pro bundly vnější vzhledem ke kompozici (více zde). V příkladu na obrázku je služba Dictionary Service dostupná pouze uvnitř kompozice, zatímco služba komponenty Checker je propagována vně kompozice. ![]() Příklad kompozice Kompozice je možné definovat pouze v XML deskriptoru (element Dále je pak možné skládat kompozice kompozic a dalších bundlů a tím dosáhnout hierarchické struktury celé agragace, na jejíž každé úrovni je možné omezit propagování služeb za její hranici. Příklad na obrázku ilustruje takovou situaci. ![]() Příklad hierarchické kompozice Deleted lines 49-51:
Možnosti customizaceMožností vlastních úprav komponentového modelu iPOJO je definování vlastních handler (včetně vlastních anotací) Added lines 231-277:
KompoziceZajímavou vlastností iPOJO je možnost vytváření kompozic, tj. aplikací agregujících několik bundlů a schopných určit rozsah viditelnosti (propagace) jejich služeb. Prakticky řečeno lze nastavit, které služby budou dostupné jen uvnitř kompozice a které budou uveřejněny i pro bundly vnější vzhledem ke kompozici (více zde). V příkladu na obrázku je služba Dictionary Service dostupná pouze uvnitř kompozice, zatímco služba komponenty Checker je propagována vně kompozice. ![]() Příklad kompozice Kompozice je možné definovat pouze v XML deskriptoru (element Dále je pak možné skládat kompozice kompozic a dalších bundlů a tím dosáhnout hierarchické struktury celé agragace, na jejíž každé úrovni je možné omezit propagování služeb za její hranici. Příklad na obrázku ilustruje takovou situaci. ![]() Příklad hierarchické kompozice Možnosti customizaceMožností vlastních úprav komponentového modelu iPOJO je definování vlastních handlerů (včetně vlastních anotací). Podrobné informace o tomto tématu naleznete zde. Handler komunikuje s kontejnerem komponenty, POJO, ostatními komponentami, službami, bundly, OSGi frameworkem, atd. Prvním krokem k vytvoření vlastního handleru je implementace Java třídy rozšiřující abstraktní třídu ![]() Životní cyklus handleru Metody abstraktní třídy
Metody abstraktní třídy
Handler je pak možné používat přidáním v XML deskriptoru (viz odkaz výše) nebo pomocí definování anotace. Anotaci je možné definovat vytvořením Java souboru s následující hlavičkou: Zde je podle potřeby možné definovat atributy anitace formou atributů Java třídy. Poté lze handler snadno používat v komponentových typech použitím jeho anotace (popř. s atributy). Pro funkčnost je samozřejmě nutné nasadit bundle s handlerem před spuštěním aplikace, která ho používá. Návody na zpracování konfigurace handleru a instance, interakce s iPOJO frameworkem a další pokročilé techniky včetně 2 ilustračních příkladů, viz odkaz výše. 19 May 2017, 16:44
by
- Changed lines 10-14 from:
Komponenta - Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb, poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type (také označovaná jako factory) jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Instance komponenty je analogií k instanci třídy v objektovém programování. Instance jejich životní cyklus
Instance mají ke komponentám (component type / factory) týž vztah, jako běžná Java instance ke třídám. Tam kde životní cyklus komponent odpovídá OSGi, iPOJO instance mají velmi jednoduchý životní cyklus, který obsahuje pouze 2 stavy: INVALID a VALID. Po svém vytvoření může instance být validní pouze tehdy, pokud všechny její připojené handlery jsou validní. V nejzákladnějším případě to znamená, že všechny instancí požadované služby jsou dostupné. Například, instance požadující službu (a tím pádem používající dependency handler) nemůže být validní, pokud požadovaná služba není dostupná. Instance začíná a končí ve stavu INVALID (viz obr. níže). Vytvoření instance lze vynutit okamžitě po přechodu komponenty do VALID stavu (jiný než VALID stav instance!) atributem to:
KomponentaKomponenta je centrálním konceptem iPOJO. Komponentu jako samostatně nasaditelnou jednotku (ve smyslu definice z hlavní stránky této wiki) v iPOJO představuje bundle, stejně jako v OSGi. Tím vzniká menší konflikt v terminologii, jelikož iPOJO notace (v anotacích, XML, atd.) označuje slovem Component Java třídy, poskytující a požadující služby z jiných bundlů. Tyto třídy se pak také označují za komponentové typy (component types) nebo továrny (factories). BundleBundle je svazek komponentových typů (ideálně tématicky spřízněných) nasazovaný zároveň. Z programátorského pohledu je to vlastně Java projekt, který specifikuje imporotované (požadované) a exportované (poskytované) balíky. To určuje pouze jejich viditelnost pro ostatní bundly, ne přímo poskytování služeb. Balíky pak obsahují jednotlivé factory/komponentové typy (třídy), z nichž se tvoří instance (objekty). Ty pak poskytují/požadují služby (implementovaná rozhraní/metody, resp. objekty tříd typované na tyto rozhraní) a jejich vlastnosti (properties; proměnné). Komponentový typV jádru iPOJO modelu komponentový typ popisuje závislosti služeb, poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponentového typu (třídy). Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentový typ v iPOJO reprezentuje třída označená jako component type (také označovaná jako factory) jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponentové typy a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Instance komponentového typu je analogií k instanci třídy v objektovém programování. Instance jejich životní cyklusInstance mají ke komponentovým typům (component type / factory) týž vztah, jako běžná Java instance ke třídám. Narozdíl od životního cyklu komponent (bundlů; stejný jako v OSGi) iPOJO instance mají velmi jednoduchý životní cyklus, který obsahuje pouze 2 stavy: INVALID a VALID. Po svém vytvoření může instance být validní pouze tehdy, pokud všechny její připojené handlery jsou validní. V nejzákladnějším případě to znamená, že všechny instancí požadované služby jsou dostupné. Například, instance požadující službu (a tím pádem používající dependency handler) nemůže být validní, pokud požadovaná služba není dostupná. Instance začíná a končí ve stavu INVALID (viz obr. níže). Changed lines 23-24 from:
Životní cyklus instance iPOJO komponenty to:
Životní cyklus instance Pro úspěšné spuštění instance je ovšem nutné aby všechny bundly poskytující jí služby byly ve stavu Resolved. Do něj framework převede všechny automaticky všechny takové instalované bundly. Problém nastává, pokud takový bundle závisí na dalším (a zřetězením případně dále), který není nainstalován, nebo nemůže být převeden do stavu Resolved. Tento případ končí výjimkou Vytvoření instance lze vynutit okamžitě po přechodu komponenty (bundlu) do stavu ACTIVE atributem Changed lines 32-39 from:
Rozhraní (kontrakt) - Rozhraní je reprezentováno poskytovanými a požadovanými službami (metodami nebo promněnými, popř.: konstantami), které se v iPOJO specifikují stejnými způsoby zápisu jako komponenta samotná. Služba je vlastně jakékoli rozhraní, které POJO reprezentující komponentu implementuje. Framework automaticky hledá všechny taková rozhraní a nadtřídy každé komponenty při instalaci bundlu. Bundle - Bundle je svazek kompnent (ideálně tématicky spřízněných) nasazovaný zároveň. Z programátorského pohledu je to vlastně Java projekt, který specifikuje imporotované (požadované) a exportované (poskytované) balíky. To určuje pouze jejich viditelnost pro ostatní bundly, ne přímo poskytování služeb. Balíky pak obsahují jednotlivé factory/komponentové typy (třídy), z nichž se tvoří instance komponent (objekty). Ty pak poskytují/požadují služby (implementovaná rozhraní/metody, resp. objekty tříd typované na tyto rozhraní) a jejich vlastnosti (properties; proměnné). Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) model servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. PostRegistration, PostUnregistration callbacky při (od)registrování služby, nebo přechod instance na stav Valid a Invalid). Framework - Komponentový framework je pak celé iPOJO, resp. iPOJO spojené s patřičnou implementací OSGi (viz technické detaily níže). Princip fungování závisí na 2 hlavních částech - kontejner a handler. Kontejner obklopuje obsah (implementace POJO objektů) a spravuje všechny jeho mimofunkční požadavky jako propojení s ostatními instancemi nebo zdroji, životní cyklus, atd. Kontejner je popsán v component type třídě (opět anotacemi, XML nebo API). Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. Při běhu aplikace pak iPOJO runtime kombinuje funkční (implementace instancí) a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace, odhaluje a "vstřikuje" (inject) požadované služby spojením metadat komponenty a konfigurace instance. Následně uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. to:
Rozhraní (kontrakt)Rozhraní je reprezentováno poskytovanými a požadovanými službami (metodami nebo promněnými, popř.: konstantami), které se v iPOJO specifikují stejnými způsoby zápisu jako komponentové typy (anotace, XML, fluentAPI). Služba je vlastně jakékoli rozhraní, které POJO reprezentující komponentový typ implementuje. Komponentový typ tak může poskytovat více služeb. Framework automaticky hledá všechny taková rozhraní a nadtřídy každého komponentového typu při instalaci bundlu. Added lines 44-65:
KompoziceZajímavou vlastností iPOJO je možnost vytváření kompozic, tj. aplikací agregujících několik bundlů a schopných určit rozsah viditelnosti (propagace) jejich služeb. Prakticky řečeno lze nastavit, které služby budou dostupné jen uvnitř kompozice a které budou uveřejněny i pro bundly vnější vzhledem ke kompozici (více zde). V příkladu na obrázku je služba Dictionary Service dostupná pouze uvnitř kompozice, zatímco služba komponenty Checker je propagována vně kompozice. ![]() Příklad kompozice Kompozice je možné definovat pouze v XML deskriptoru (element Dále je pak možné skládat kompozice kompozic a dalších bundlů a tím dosáhnout hierarchické struktury celé agragace, na jejíž každé úrovni je možné omezit propagování služeb za její hranici. Příklad na obrázku ilustruje takovou situaci. ![]() Příklad hierarchické kompozice ModelKomponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) model servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. PostRegistration, PostUnregistration callbacky při (od)registrování služby, nebo přechod instance na stav Valid a Invalid). FrameworkKomponentový framework je pak celé iPOJO, resp. iPOJO spojené s patřičnou implementací OSGi (viz technické detaily níže). Princip fungování závisí na 2 hlavních částech - kontejner a handler. Kontejner obklopuje obsah (implementace POJO objektů) a spravuje všechny jeho mimofunkční požadavky jako propojení s ostatními instancemi nebo zdroji, životní cyklus, atd. Kontejner je popsán v component type třídě (opět anotacemi, XML nebo API). Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponentového typu je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám (viz zde). Při běhu aplikace pak iPOJO runtime kombinuje funkční (implementace instancí) a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace, odhaluje a "vstřikuje" (inject) požadované služby spojením metadat komponenty a konfigurace instance. Následně uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. Možnosti customizaceMožností vlastních úprav komponentového modelu iPOJO je definování vlastních handler (včetně vlastních anotací) Changed lines 111-112 from:
to:
Changed line 114 from:
to:
Changed line 117 from:
to:
Changed lines 197-199 from:
KomponentyKomponentu (factory) stačí označit anotací to:
Komponentový typKomponentový typ (factory) stačí označit anotací Changed lines 204-205 from:
Možné je též specifikovat vlastnosti služeb anotacemi to:
Možné je též specifikovat vlastnosti služeb anotacemi Deleted line 247:
Changed lines 254-255 from:
to:
Changed line 297 from:
to:
19 May 2017, 15:00
by
- Changed lines 25-26 from:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) model servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. PostRegistration?, PostUnregistration? callbacky při (od)registrování služby, nebo přechod instance na stav Valid a Invalid). to:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) model servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. PostRegistration, PostUnregistration callbacky při (od)registrování služby, nebo přechod instance na stav Valid a Invalid). 19 May 2017, 12:47
by
- Changed lines 245-246 from:
Oba příklady jsou vypracovány s maximální možnou podobností (až na několik drobných změn) jako jejich protějšky z kapitoly o OSGi pro snadné porovnání obou implementací. Kroky převodu implementačních principů z OSGi na iPOJO v příkladech použité jsou z většiny popsané v kapitole Rozdíly v implementaci oproti OSGi (viz výše). to:
Oba příklady jsou vypracovány s maximální možnou podobností (až na několik drobných změn) jako jejich protějšky z kapitoly o OSGi pro snadné porovnání obou implementací. Kroky převodu implementačních principů z OSGi na iPOJO v příkladech použité jsou z většiny popsané v kapitole Rozdíly v implementaci oproti OSGi (viz výše). Oba příklady využívají anotace a Maven. 18 May 2017, 17:46
by
- Changed lines 13-14 from:
Instance mají ke komponentám (component type / factory) týž vztah, jako běžná Java instance ke třídám. Tam kde životní cyklus komponent odpovídá OSGi, iPOJO instance mají velmi jednoduchý životní cyklus, který obsahuje pouze 2 stavy: INVALID a VALID. Pon svém vytvoření může instance být validní pouze tehdy, pokud všechny její připojené handlery jsou validní. V nejzákladnějším případě to znamená, že všechny instancí požadované služby jsou dostupné. Například, instance požadující službu (a tím pádem používající dependency handler) nemůže být validní, pokud požadovaná služba není dostupná. Instance začíná a končí ve stavu INVALID (viz obr. níže). Vytvoření instance lze vynutit okamžitě po přechodu komponenty do VALID stavu (jiný než VALID stav instance!) atributem to:
Instance mají ke komponentám (component type / factory) týž vztah, jako běžná Java instance ke třídám. Tam kde životní cyklus komponent odpovídá OSGi, iPOJO instance mají velmi jednoduchý životní cyklus, který obsahuje pouze 2 stavy: INVALID a VALID. Po svém vytvoření může instance být validní pouze tehdy, pokud všechny její připojené handlery jsou validní. V nejzákladnějším případě to znamená, že všechny instancí požadované služby jsou dostupné. Například, instance požadující službu (a tím pádem používající dependency handler) nemůže být validní, pokud požadovaná služba není dostupná. Instance začíná a končí ve stavu INVALID (viz obr. níže). Vytvoření instance lze vynutit okamžitě po přechodu komponenty do VALID stavu (jiný než VALID stav instance!) atributem 18 May 2017, 17:26
by
- Changed lines 151-152 from:
Atributy bundlů jako jméno, symbolické jméno, verze a další vedených v OSGi v manifestu je možné nahradit obdobnými atributy (elementy) v Mavenu (pom.xml). Obdobně importované balíky jsou nahrazeny dependencies a exportované balíky pomocí elementu to:
Atributy bundlů jako jméno, symbolické jméno, verze a další vedených v OSGi v manifestu je možné nahradit obdobnými elementy v Mavenu (pom.xml). Obdobně importované balíky jsou nahrazeny dependencies a exportované balíky pomocí elementu 18 May 2017, 16:21
by
- Changed lines 21-22 from:
Rozhraní (kontrakt) - Rozhraní je reprezentováno poskytovanými a požadovanými službami (metodami nebo promněnými, popř.: konstantami), které se v iPOJO specifikují stejnými způsoby zápisu jako komponenta samotná. to:
Rozhraní (kontrakt) - Rozhraní je reprezentováno poskytovanými a požadovanými službami (metodami nebo promněnými, popř.: konstantami), které se v iPOJO specifikují stejnými způsoby zápisu jako komponenta samotná. Služba je vlastně jakékoli rozhraní, které POJO reprezentující komponentu implementuje. Framework automaticky hledá všechny taková rozhraní a nadtřídy každé komponenty při instalaci bundlu. Bundle - Bundle je svazek kompnent (ideálně tématicky spřízněných) nasazovaný zároveň. Z programátorského pohledu je to vlastně Java projekt, který specifikuje imporotované (požadované) a exportované (poskytované) balíky. To určuje pouze jejich viditelnost pro ostatní bundly, ne přímo poskytování služeb. Balíky pak obsahují jednotlivé factory/komponentové typy (třídy), z nichž se tvoří instance komponent (objekty). Ty pak poskytují/požadují služby (implementovaná rozhraní/metody, resp. objekty tříd typované na tyto rozhraní) a jejich vlastnosti (properties; proměnné). 18 May 2017, 16:09
by
- Changed lines 71-72 from:
Pozn.: Pro úplnost by bylo třeba přidat nad obě třídy ještě anotaci @Instantiate, nebo vytvořit instanci jiným způsobem. to:
Pozn.: Pro úplnost by bylo třeba přidat nad obě třídy ještě anotaci 18 May 2017, 15:47
by
- Changed lines 168-169 from:
Komponentu (factory) stačí označit anotací to:
Komponentu (factory) stačí označit anotací 18 May 2017, 15:44
by
- Changed lines 250-258 from:
to:
18 May 2017, 15:35
by
- Changed lines 56-61 from:
@Component @Provides public class MyServiceImplementation implements MyService { //.... } to:
@Component @Provides public class MyServiceImplementation implements MyService { //.... } Changed lines 64-71 from:
@Component public class MyServiceConsumer { @Requires private MyService myservice; // stačí použít požadovanou službu jako obyčejnou proměnnou! } to:
@Component public class MyServiceConsumer { @Requires private MyService myservice; // stačí použít požadovanou službu jako obyčejnou proměnnou } Changed lines 151-166 from:
to:
<build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> Changed lines 185-203 from:
to:
@Publishes(name="vysilac_parkoviste_mista", synchronous=true, topics="parkoviste/mista") Publisher vysilac_mista; @Publishes(name="vysilac_parkoviste_plne", synchronous=true, topics="parkoviste/plne") Publisher vysilac_plne; ... private void posliZpravu() { if (volnaMista == 0) { vysilac_plne.send(new Properties()); } Dictionary<Object, Object> properties = new Properties(); properties.put("volnaMista", volnaMista); vysilac_mista.send(properties); } Changed lines 202-206 from:
to:
[@@Subscriber(name="prijmac_tabule_plne", topics="parkoviste/plne") public void prijmoutPlno(Event e) { println("Parkoviste plne!"); } Changed lines 207-212 from:
to:
@Subscriber(name="prijmac_tabule_mista", topics="parkoviste/mista", dataKey="volnaMista", dataType="java.lang.Integer") public void prijmoutMista(Integer mista) { println("Zbyva mist : " + mista); }@] 18 May 2017, 15:23
by
- Changed line 181 from:
Použití to:
Použití 18 May 2017, 15:08
by
- Added lines 250-251:
Oba příklady jsou vypracovány s maximální možnou podobností (až na několik drobných změn) jako jejich protějšky z kapitoly o OSGi pro snadné porovnání obou implementací. Kroky převodu implementačních principů z OSGi na iPOJO v příkladech použité jsou z většiny popsané v kapitole Rozdíly v implementaci oproti OSGi (viz výše). 18 May 2017, 15:04
by
- Changed lines 219-223 from:
to:
Celý koncept práce s událostmi ilustruje obrázek níže. Pro více informací o Event Admin Handleru viz zde. ![]() Zasílání a zpracování událostí v iPOJO 18 May 2017, 14:58
by
- Added lines 146-219:
Rozdíly v implementaci oproti OSGiPopisované rozdíly jsou demostrovány na implementaci iPOJO aplikací pomocí Maven a anotací. Pro další možnosti implementace (XML deskriptor, fluentAPI, Ant, atd.) možno konzultovat hlavní stránku iPOJO na Apache Felix nebo další zdroje uvedené na této wiki. Nahrazení manifestuAtributy bundlů jako jméno, symbolické jméno, verze a další vedených v OSGi v manifestu je možné nahradit obdobnými atributy (elementy) v Mavenu (pom.xml). Obdobně importované balíky jsou nahrazeny dependencies a exportované balíky pomocí elementu
KomponentyKomponentu (factory) stačí označit anotací SlužbyPoskytovanou služby stačí identifikovat anotací VlastnostiMožné je též specifikovat vlastnosti služeb anotacemi ActivatorMísto aktivátoru používaného v OSGi stačí použít callbacky identifikované anotacemi UdálostiPoužití
Defaultní způsob zasílání událostí je asynchronní. Názorná ukázka zasílání událostí:
Příjem událostí je realizován použitím anotace
Deleted line 246:
Deleted line 260:
Deleted line 265:
Deleted line 267:
Changed lines 269-272 from:
to:
18 May 2017, 13:46
by
- Changed lines 172-173 from:
Instance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip.
to:
FelixOba níže uvedené příklady obsahují instanci Felix frameworku konfigurovanou pro své potřeby pomocí Maven.
Changed lines 178-184 from:
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip.
to:
Překlad příkladů
Příklad Message PrinterAttach:MessagePrinterIpojo.zip. Příklad Parkoviště18 May 2017, 13:29
by
- Added lines 12-20:
Instance jejich životní cyklus
Instance mají ke komponentám (component type / factory) týž vztah, jako běžná Java instance ke třídám. Tam kde životní cyklus komponent odpovídá OSGi, iPOJO instance mají velmi jednoduchý životní cyklus, který obsahuje pouze 2 stavy: INVALID a VALID. Pon svém vytvoření může instance být validní pouze tehdy, pokud všechny její připojené handlery jsou validní. V nejzákladnějším případě to znamená, že všechny instancí požadované služby jsou dostupné. Například, instance požadující službu (a tím pádem používající dependency handler) nemůže být validní, pokud požadovaná služba není dostupná. Instance začíná a končí ve stavu INVALID (viz obr. níže). Vytvoření instance lze vynutit okamžitě po přechodu komponenty do VALID stavu (jiný než VALID stav instance!) atributem ![]() Životní cyklus instance iPOJO komponenty ![]() Okamžité vytvoření instance atributem immediate Changed lines 23-24 from:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) modelu servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. přechod na stav Valid). to:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) model servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. PostRegistration?, PostUnregistration? callbacky při (od)registrování služby, nebo přechod instance na stav Valid a Invalid). Added lines 72-73:
Pozn.: Pro úplnost by bylo třeba přidat nad obě třídy ještě anotaci @Instantiate, nebo vytvořit instanci jiným způsobem. Changed lines 82-84 from:
to:
Changed lines 87-89 from:
to:
Changed lines 91-93 from:
to:
Changed lines 95-97 from:
to:
Changed lines 99-101 from:
to:
Changed lines 103-105 from:
to:
Changed lines 107-108 from:
to:
Changed lines 110-112 from:
to:
Changed lines 114-116 from:
to:
Changed lines 118-120 from:
to:
Changed lines 122-123 from:
to:
Changed lines 125-126 from:
to:
Changed lines 128-129 from:
to:
Changed lines 131-132 from:
to:
Changed lines 134-137 from:
to:
Changed lines 175-176 from:
to:
18 May 2017, 12:43
by
- Changed lines 10-11 from:
Komponenta - Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb, poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Instance komponenty je analogií k instanci třídy v objektovém programování. to:
Komponenta - Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb, poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type (také označovaná jako factory) jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Instance komponenty je analogií k instanci třídy v objektovém programování. 05 May 2017, 11:43
by
- Changed lines 168-170 from:
to:
05 May 2017, 11:41
by
- Changed lines 166-170 from:
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip. to:
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip.
05 May 2017, 11:38
by
- Changed lines 161-166 from:
Instance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip.
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip. to:
Instance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip.
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip. 05 May 2017, 11:37
by
- Changed line 166 from:
Příklad MessagePrinter? - implementace: Attach:MessagePrinterIPOJO.zip. to:
Příklad Message printer - implementace: Attach:MessagePrinterIPOJO.zip. 05 May 2017, 11:34
by
- Changed lines 162-169 from:
Instalace: stačí spustit příkaz Spuštění: ze složky Přidání bundlů: příkaz Příklad MessagePrinter? - implementace: Attach:MessagePrinterIPOJO.zip to:
Příklad MessagePrinter? - implementace: Attach:MessagePrinterIPOJO.zip. 05 May 2017, 11:32
by
- Changed lines 163-171 from:
Instalace: stačí spustit příkaz mvn install na pom.xml Spuštění: ze složky target přes příkazovou řádku spustit java -jar bin/felix.jar Přidání bundlů: příkaz felix:install file:cesta_k_bundlu/bundle.jar Příklad MessagePrinterOsgi pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:MessagePrinterOsgi.zip Příklad ParkovisteOsgi a specifikace jeho možné podoby pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:ParkovisteOsgi.zip to:
Instalace: stačí spustit příkaz Spuštění: ze složky Přidání bundlů: příkaz Příklad MessagePrinter? - implementace: Attach:MessagePrinterIPOJO.zip 05 May 2017, 11:30
by
- Changed lines 161-162 from:
Instance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip to:
Instance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip. Added line 164:
Added line 166:
05 May 2017, 11:29
by
- Changed lines 157-168 from:
to:
Praktická částInstance Felix frameworku s nastavením pro iPOJO pomocí Maven: Attach:FelixIPOJO.zip Instalace: stačí spustit příkaz mvn install na pom.xml Spuštění: ze složky target přes příkazovou řádku spustit java -jar bin/felix.jar Přidání bundlů: příkaz felix:install file:cesta_k_bundlu/bundle.jar Příklad MessagePrinterOsgi pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:MessagePrinterOsgi.zip Příklad ParkovisteOsgi a specifikace jeho možné podoby pak dokumentuje jen technologicky specifické problémy. Výsledná implementace: Attach:ParkovisteOsgi.zip 28 January 2015, 11:52
by - 28 January 2015, 10:37
by
- Changed line 34 from:
to:
Changed lines 135-138 from:
Hlavní znaky iPOJO
to:
Další znaky iPOJODeleted line 136:
Deleted line 138:
28 January 2015, 09:30
by
- Changed lines 28-29 from:
iPOJO funguje na jakékoli implementaci R4.1 OSGi a také na mnoha JVM jako Oracle JRockit?, JamVM?, Dalvik (Android) a Mika. Požaduje pouze J2ME? Fondation 1.1 JVM. Díky tomu lze aplikace používat v mobilních a jiných zařízeních. to:
iPOJO funguje na jakékoli implementaci R4.1 OSGi a také na mnoha JVM jako Oracle JRockit, JamVM, Dalvik (Android) a Mika. Požaduje pouze J2ME Fondation 1.1 JVM. Díky tomu lze aplikace používat v mobilních a jiných zařízeních. Changed line 83 from:
to:
Changed line 87 from:
to:
Changed line 116 from:
to:
Changed line 119 from:
to:
Changed lines 131-132 from:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean?. K použití externích anotací je nutné pouze přidat je do build path. Více informací o anotacích např. zde. to:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean. K použití externích anotací je nutné pouze přidat je do build path. Více informací o anotacích např. zde. 28 January 2015, 09:23
by - 28 January 2015, 08:49
by - 28 January 2015, 08:22
by
- Changed lines 19-20 from:
Instance iPOJO a její kontejner to:
Instance iPOJO a její kontejner Changed lines 22-23 from:
Interakce služeb mezi iPOJO instancemi to:
Interakce služeb mezi iPOJO instancemi Changed lines 25-26 from:
Příklad iPOJO komponenty to:
Příklad iPOJO komponenty 28 January 2015, 08:20
by
- Changed lines 19-26 from:
to:
Instance iPOJO a její kontejner ![]() Interakce služeb mezi iPOJO instancemi ![]() Příklad iPOJO komponenty 28 January 2015, 08:05
by
- Deleted lines 19-33:
Hlavní znaky
iPOJO používají
Added lines 128-141:
Hlavní znaky iPOJO
iPOJO používají
28 January 2015, 08:03
by
- Changed lines 8-9 from:
Komponenta - Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. to:
Principem iPOJO je co největší oddělení funkčního od mimofunkčního kódu (dependency management, service provision, konfigurace, atd.). Komponenta - Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb, poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Instance komponenty je analogií k instanci třídy v objektovém programování. Changed lines 14-17 from:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) modelu servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Framework - Komponentový framework je pak celé iPOJO, resp. iPOJO spojené s patřičnou implementací OSGi (viz technické detaily níže). Princip fungování závisí na 2 hlavních částech - kontejner a handler. Kontejner obklopuje obsah (implementace POJO objektů) a spravuje všechny jeho mimofunkční požadavky jako propojení s ostatními instancemi nebo zdroji, životní cyklus, atd. Kontejner je popsán v component type třídě (opět anotacemi, XML nebo API). Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. Při běhu aplikace pak iPOJO kombinuje funkční (implementace instancí) a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace. to:
Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) modelu servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu v životním cyklu (např. přechod na stav Valid). Framework - Komponentový framework je pak celé iPOJO, resp. iPOJO spojené s patřičnou implementací OSGi (viz technické detaily níže). Princip fungování závisí na 2 hlavních částech - kontejner a handler. Kontejner obklopuje obsah (implementace POJO objektů) a spravuje všechny jeho mimofunkční požadavky jako propojení s ostatními instancemi nebo zdroji, životní cyklus, atd. Kontejner je popsán v component type třídě (opět anotacemi, XML nebo API). Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. Při běhu aplikace pak iPOJO runtime kombinuje funkční (implementace instancí) a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace, odhaluje a "vstřikuje" (inject) požadované služby spojením metadat komponenty a konfigurace instance. Následně uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. ![]() Deleted lines 31-34:
Changed line 35 from:
Principto:
Technické detailyChanged lines 38-45 from:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčního kódu (dependency management, service provision, konfigurace, atd.). jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Dalším z nejdůležitějších konceptů v iPOJO je instance komponenty. Instance komponenty je analogií k instanci třídy v objektovém programování. iPOJO runtime odhaluje a "vstřikuje" požadované služby spojením metadat komponenty a konfigurace instance. Následně uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. Dalším konceptem je kontejner, který spravuje všechny mimofunkční požadavky obsahu (implementace), jako propojení mezi instancemi nebo se zdroji, životní cyklus, atd. Kontejner je popsán v komponentovém typu, tj. třídě označené za komponentu. Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. ![]() to:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Changed lines 43-45 from:
to:
Changed lines 47-48 from:
OSGi Service Platform poskytuje výborný základ pro vývoj dynamicky rozšiřitelných Java aplikací. Nicméně tato síla a pružnost není bez své ceny. Kromě nových API a formátů balíků, vývojáři v OSGi musí změnit svoje uvažování, aby byli schopni vytvářet vysoce dynamické aplikace. Ranné pokusy, jako Service Binder a Service Tracker, se snažily o zmírnění některých z těchto problémů stejně jako některé aktuálnější příklady jako Declarative Services a Spring Dynamic Modules. iPOJO je další takovou snahou v této oblasti. Je to service-oriented komponentový model vytvořený přímo pro OSGi Service Platform. to:
OSGi Service Platform poskytuje výborný základ pro vývoj dynamicky rozšiřitelných Java aplikací. Nicméně tato síla a pružnost není zadarmo. Kromě nevýhod ve formě nových API a formátů balíků, vývojáři v OSGi musí změnit svoje uvažování, aby byli schopni vytvářet vysoce dynamické aplikace. Rané pokusy, jako Service Binder a Service Tracker, se snažily o zmírnění některých z těchto problémů stejně jako některé aktuálnější příklady jako Declarative Services a Spring Dynamic Modules. iPOJO je další takovou snahou v této oblasti. Je to service-oriented komponentový model vytvořený přímo pro OSGi Service Platform. Changed lines 51-54 from:
Vytvoření OSGi aplikace prostřednictvím služeb je náročné, protože OSGi API je komplexní a je třeba určité úrovně znalosti o vnitřních mechanismech, aby se předešlo problémům se synchronizací. iPOJO poskytuje velmi jednoduchý vývojový model. Poskytnutí služby: to:
Vytvoření aplikace prostřednictvím služeb v samotném OSGi bez dalších frameworků je náročné, protože OSGi API je komplexní a je třeba určité úrovně znalosti o vnitřních mechanismech, aby se předešlo problémům se synchronizací. iPOJO poskytuje velmi jednoduchý vývojový model, což ukazuje následují základní ilustrační příklad (bez vnitřní implementace) pro
Changed lines 61-62 from:
Požadování služby: to:
Changed lines 73-74 from:
Další výhodou iPOJO je jeho flexibilita. Poskytuje totiž mechanismy pro rozšíření sebe samotného, které nevyžadují úpravy jádra. iPOJO se dá tudíž adaptovat pro vlastní potřeby pomocí vlastních handlerů. to:
Další výhodou iPOJO je jeho flexibilita. Poskytuje totiž mechanismy pro rozšíření sebe samotného, které nevyžadují úpravy jádra. iPOJO se dá tudíž adaptovat pro vlastní potřeby pomocí vlastních handlerů (viz výše Základní principy) Changed lines 76-77 from:
Anotace jsou automaticky zpracovány iPOJO manipulátorem a nemusí být nasazeny při runtimu. Zde jsou vyjmenovány základní anotace iPOJO obsažené v knihovně to:
Anotace jsou jedním ze způsobů zápisu metadat komponent a konfigurace instancí v iPOJO. Anotace jsou automaticky zpracovány iPOJO manipulátorem a nemusí být nasazeny při runtimu. Zde jsou vyjmenovány základní anotace iPOJO obsažené v knihovně Changed line 79 from:
to:
Changed line 96 from:
to:
Changed line 107 from:
to:
Changed line 111 from:
to:
Changed line 115 from:
to:
Changed line 119 from:
to:
Changed line 122 from:
to:
Changed line 131 from:
to:
Changed lines 141-142 from:
iPOJO Reference Card pak ukazuje paralelně použití některých základních principů jak anotacemi, tak XML deskriptorem + několik dalších věcí jako Extender Pattern a Whiteboard Pattern. to:
iPOJO Reference Card pak ukazuje paralelně použití některých základních principů jak anotacemi, tak XML deskriptorem + několik dalších věcí jako Extender Pattern a Whiteboard Pattern. 28 January 2015, 07:37
by
- Changed lines 4-5 from:
iPOJO (injected-POJO) je runtime komponent ve formě služeb zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje veškeré dynamické aspekty OSGi. iPOJO je vytvořen pro běh moderních aplikací, které se vyznačují modularitou, vyžadující adaptaci za běhu a autonomní chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi). Prvotní verze 0.8 je z roku 2008 a vznikla na univerzitě v Grenoblu (Clement Escoffier, Richard S. Hall). Aktuální verze (prosinec 2014) je 1.12.1. to:
iPOJO (injected-POJO) je runtime servisních komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje veškeré dynamické aspekty OSGi. iPOJO je vytvořen pro běh moderních aplikací, které se vyznačují modularitou, vyžadující adaptaci za běhu a autonomní chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi). Prvotní verze 0.8 je z roku 2008 a vznikla na univerzitě v Grenoblu (Clement Escoffier, Richard S. Hall). Aktuální verze (prosinec 2014) je 1.12.1. Základní principyKomponenta - Jelikož iPOJO staví na principu POJO (Plain Old Java Object; standardních Java tříd), komponentu v iPOJO reprezentuje třída označená jako component type jedním ze tří základních způsobů - anotace přímo ve zdrojovém kódu, XML v speciálním souboru popisující iPOJO komponenty a nastavení (XML deskriptoru) nebo pomocí fluent API. Stejnými způsoby lze z component type vytvořit instanci. Rozhraní (kontrakt) - Rozhraní je reprezentováno poskytovanými a požadovanými službami (metodami nebo promněnými, popř.: konstantami), které se v iPOJO specifikují stejnými způsoby zápisu jako komponenta samotná. Model - Komponentový model iPOJO je v základu stejný jako u OSGi, jelikož iPOJO pouze vylepšuje tento framework. Jedná se o jednoduchý a rozšiřitelný (viz níže) modelu servisních komponent založených na POJO. Servisní komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Model představují základní možnosti iPOJO ohledně nastavení konfigurace a komunikace mezi komponentami (viz seznam anotací níže). Model lze však libovolně upravovat a rozšiřovat přidáváním vlastních anotací. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Framework - Komponentový framework je pak celé iPOJO, resp. iPOJO spojené s patřičnou implementací OSGi (viz technické detaily níže). Princip fungování závisí na 2 hlavních částech - kontejner a handler. Kontejner obklopuje obsah (implementace POJO objektů) a spravuje všechny jeho mimofunkční požadavky jako propojení s ostatními instancemi nebo zdroji, životní cyklus, atd. Kontejner je popsán v component type třídě (opět anotacemi, XML nebo API). Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. Při běhu aplikace pak iPOJO kombinuje funkční (implementace instancí) a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace. Changed lines 38-39 from:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčního kódu (dependency management, service provision, konfigurace, atd.). Při běhu aplikace pak iPOJO kombinuje funkční a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace pomocí jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. to:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčního kódu (dependency management, service provision, konfigurace, atd.). jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. 26 January 2015, 19:51
by - 26 January 2015, 13:33
by
- Added lines 34-35:
![]() 26 January 2015, 13:18
by
- Changed lines 4-5 from:
iPOJO (injected-POJO) je runtime službových komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje všechny dynamizmy OSGi. iPOJO je vytvořen pro běh moderních aplikací vykazujících modularitu a vyžadujících adaptaci za běhu a automatické chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi), prvotní verze 0.8 je z roku 2008 a aktuální (prosinec 2014) je 1.12.1. to:
iPOJO (injected-POJO) je runtime komponent ve formě služeb zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje veškeré dynamické aspekty OSGi. iPOJO je vytvořen pro běh moderních aplikací, které se vyznačují modularitou, vyžadující adaptaci za běhu a autonomní chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi). Prvotní verze 0.8 je z roku 2008 a vznikla na univerzitě v Grenoblu (Clement Escoffier, Richard S. Hall). Aktuální verze (prosinec 2014) je 1.12.1. Changed lines 11-13 from:
to:
Changed line 15 from:
to:
Changed lines 30-33 from:
Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Dalším nejpodstatnějším konceptem v iPOJO je instance komponenty. Instance komponenty je analogií k instanci třídy v objektovém programování. Spojením metadat komponenty a konfigurace instance iPOJO runtime odhaluje a "vstřikuje" požadované služby, uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. Dalším konceptem je kontejner, který spravuje všechny mimofunkční požadavky obsahu (implementace), jako propojení mezi instancemi nebo se zdroji, životní cyklus, atd. Kontejner je popsán v komponentovém typu, tj. třídě označené za komponentu. Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každá handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. to:
Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Dalším z nejdůležitějších konceptů v iPOJO je instance komponenty. Instance komponenty je analogií k instanci třídy v objektovém programování. iPOJO runtime odhaluje a "vstřikuje" požadované služby spojením metadat komponenty a konfigurace instance. Následně uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. Dalším konceptem je kontejner, který spravuje všechny mimofunkční požadavky obsahu (implementace), jako propojení mezi instancemi nebo se zdroji, životní cyklus, atd. Kontejner je popsán v komponentovém typu, tj. třídě označené za komponentu. Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každý handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. 04 January 2015, 21:50
by - 04 January 2015, 21:42
by
- Changed lines 135-136 from:
iPOJO [http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/ipojo-reference-card.html | Reference Card] pak ukazuje paralelně použití některých základních principů jak anotacemi, tak XML deskriptorem + několik dalších věcí jako Extender Pattern a Whiteboard Pattern. to:
iPOJO Reference Card pak ukazuje paralelně použití některých základních principů jak anotacemi, tak XML deskriptorem + několik dalších věcí jako Extender Pattern a Whiteboard Pattern. 04 January 2015, 21:40
by
- Changed lines 28-31 from:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčních kódu (dependency management, service provision, konfigurace, atd.). Při běhu aplikace pak iPOJO kombinuje funkční a mimofunkční aspekty aplikace pomocí jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt impleentující danné rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. After components, the next most important concept in iPOJO is the component instance. A component instance is a special version of a component. By merging component metadata and instance configuration, the iPOJO runtime is able to discover and inject required services, publish provided services, and manage the component's life cycle. to:
Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčního kódu (dependency management, service provision, konfigurace, atd.). Při běhu aplikace pak iPOJO kombinuje funkční a mimofunkční (uchované v konfiguraci kontejneru) aspekty aplikace pomocí jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt implementující dané rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. Dalším nejpodstatnějším konceptem v iPOJO je instance komponenty. Instance komponenty je analogií k instanci třídy v objektovém programování. Spojením metadat komponenty a konfigurace instance iPOJO runtime odhaluje a "vstřikuje" požadované služby, uveřejňuje (propaguje) poskytované služby a řídí životní cyklus komponenty. Dalším konceptem je kontejner, který spravuje všechny mimofunkční požadavky obsahu (implementace), jako propojení mezi instancemi nebo se zdroji, životní cyklus, atd. Kontejner je popsán v komponentovém typu, tj. třídě označené za komponentu. Kontejner v iPOJO tudíž není monolitem, ale je složen z handlerů. Každá handler spravuje jeden mimofunkční požadavek a požadované hadlery jsou připojeny za běhu aplikace. Instance komponenty je pak validní pouze pokud všechny připojené handlery jsou validní. Handlery je možné vytvářet a nasazovat mimo jádro iPOJO, tudíž každý si může vytvořit vlastní handler a přizpůsobit si tak model iPOJO svým potřebám. Samotné programování pak probíhá obdobně jako při standardním vývoji v Javě. Rozdílem je jen konfigurace instancí a metadata komponent. Ty je možné zavádět třemi způsoby:
04 January 2015, 21:17
by
- Deleted lines 21-22:
iPOJO funguje na jakékoli implementaci R4.1 OSGi a také na mnoha JVM jako Oracle JRockit?, JamVM?, Dalvik (Android) a Mika. Požaduje pouze J2ME? Fondation 1.1 JVM. Díky tomu lze aplikace používat v mobilních a jiných zařízeních. Added lines 25-31:
PrincipiPOJO funguje na jakékoli implementaci R4.1 OSGi a také na mnoha JVM jako Oracle JRockit?, JamVM?, Dalvik (Android) a Mika. Požaduje pouze J2ME? Fondation 1.1 JVM. Díky tomu lze aplikace používat v mobilních a jiných zařízeních. Základem iPOJO fyzicky je iPOJO Core bundle (stáhnout). Principem iPOJO je větší oddělení funkčního od mimofunkčních kódu (dependency management, service provision, konfigurace, atd.). Při běhu aplikace pak iPOJO kombinuje funkční a mimofunkční aspekty aplikace pomocí jednoduchého a rozšiřitelného modelu servisních komponent založeného na POJO. Servisní (službová) komponenta může poskytovat a/nebo požadovat služby, přičemž služba je objekt impleentující danné rozhraní. Navíc iPOJO zavádí koncept callbacků (volání), které dávají komponentě vědět o různých změnách stavu. Komponenta je centrálním konceptem iPOJO. V jádru iPOJO modelu komponenta popisuje závislosti služeb poskytované služby a callbacky. Tyto informace jsou uloženy v metadatech komponenty. After components, the next most important concept in iPOJO is the component instance. A component instance is a special version of a component. By merging component metadata and instance configuration, the iPOJO runtime is able to discover and inject required services, publish provided services, and manage the component's life cycle. 04 January 2015, 21:04
by
- Changed lines 16-17 from:
to:
04 January 2015, 21:04
by
- Added line 133:
Changed lines 136-137 from:
to:
04 January 2015, 21:01
by
- Changed lines 4-5 from:
iPOJO (injected-POJO) je runtime službových komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje všechny dynamizmy OSGi. iPOJO je vytvořen pro běh moderních aplikací vykazujících modularitu a vyžadujících adaptaci za běhu a automatické chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi), prvotní verze 0.8 je z roku 2008 a aktuální (prosinec 2014) je 1.12.x. to:
iPOJO (injected-POJO) je runtime službových komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje všechny dynamizmy OSGi. iPOJO je vytvořen pro běh moderních aplikací vykazujících modularitu a vyžadujících adaptaci za běhu a automatické chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi), prvotní verze 0.8 je z roku 2008 a aktuální (prosinec 2014) je 1.12.1. Changed line 129 from:
to:
04 January 2015, 20:38
by
- Changed lines 4-5 from:
iPOJO (injected-POJO) je runtime službových komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje všechny dynamizmy OSGi. iPOJO je vytvořen pro běh moderních aplikací vykazujících modularitu a vyžadujících adaptaci za běhu a automatické chování. to:
iPOJO (injected-POJO) je runtime službových komponent zaměřený na zjednodušení vývoje OSGi aplikací. Nativně podporuje všechny dynamizmy OSGi. iPOJO je vytvořen pro běh moderních aplikací vykazujících modularitu a vyžadujících adaptaci za běhu a automatické chování. iPOJO je vyvíjen týmem kolem Apache Felix (implementace OSGi), prvotní verze 0.8 je z roku 2008 a aktuální (prosinec 2014) je 1.12.x. Changed lines 120-135 from:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean?. K použití externích anotací je nutné pouze přidat je do build path. Více informací o anotacích např. zde to:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean?. K použití externích anotací je nutné pouze přidat je do build path. Více informací o anotacích např. zde. iPOJO [http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/ipojo-reference-card.html | Reference Card] pak ukazuje paralelně použití některých základních principů jak anotacemi, tak XML deskriptorem + několik dalších věcí jako Extender Pattern a Whiteboard Pattern. Praktické příklady a tutoriályPříklady na vyzkoušení jsou k nalezení na internetu a zahrnují aplikace
Další zdroje
04 January 2015, 20:03
by
- Changed lines 57-58 from:
Zde jsou vyjmenovány základní anotace iPOJO obsažené v knihovně to:
Anotace jsou automaticky zpracovány iPOJO manipulátorem a nemusí být nasazeny při runtimu. Zde jsou vyjmenovány základní anotace iPOJO obsažené v knihovně 04 January 2015, 20:01
by
- Changed lines 115-116 from:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean?. Více informací o anotacích např. zde to:
Další anotace mohou být v externích handlerech, např. temporální závislosti nebo možnost vystavení instance jako JMX MBean?. K použití externích anotací je nutné pouze přidat je do build path. Více informací o anotacích např. zde 04 January 2015, 19:48
by
- Added line 21:
Added line 58:
Added line 63:
Changed lines 114-116 from:
to:
04 January 2015, 19:36
by - 04 January 2015, 19:36
by
- Changed lines 27-28 from:
OSGi Service Platform poskytuje výborný základ pro vývoj dynamicky rozšiřitelných Java aplikací. Nicméně tato síla a pružnost není bez své ceny. Kromě nových API a formátů balíků, vývojáři v OSGi musí změnit svoje uvažování, aby byli schopni vytvářet vysoce dynamické aplikace. Ranné pokusy, jako Service Binder a Service Tracker, se snažily o zmírnění některých z těchto problémů stejně jako některé aktuálnější příklady jako Declarative Services a Spring Dynamic Modules. iPOJO je další takovou snahou v této oblasti. Je to service-oriented komponentový model vytvořený přímo pro OSGi Service Platform. to:
OSGi Service Platform poskytuje výborný základ pro vývoj dynamicky rozšiřitelných Java aplikací. Nicméně tato síla a pružnost není bez své ceny. Kromě nových API a formátů balíků, vývojáři v OSGi musí změnit svoje uvažování, aby byli schopni vytvářet vysoce dynamické aplikace. Ranné pokusy, jako Service Binder a Service Tracker, se snažily o zmírnění některých z těchto problémů stejně jako některé aktuálnější příklady jako Declarative Services a Spring Dynamic Modules. iPOJO je další takovou snahou v této oblasti. Je to service-oriented komponentový model vytvořený přímo pro OSGi Service Platform. Changed lines 53-111 from:
Další výhodou iPOJO je jeho flexibilita. Poskytuje totiž mechanismy pro rozšíření sebe samotného, které nevyžadují úpravy jádra. iPOJO se dá tudíž adaptovat pro vlastní potřeby pomocí vlastních handlerů. to:
Další výhodou iPOJO je jeho flexibilita. Poskytuje totiž mechanismy pro rozšíření sebe samotného, které nevyžadují úpravy jádra. iPOJO se dá tudíž adaptovat pro vlastní potřeby pomocí vlastních handlerů. AnotaceZde jsou vyjmenovány základní anotace iPOJO obsažené v knihovně
04 January 2015, 16:48
by
- Added lines 1-53:
|