Kam Java nemôže, pošle OSGi

Kam Java nemôže, pošle OSGi  Nič nie je dokonalé. Ani Java nie. Keďže nemohla byť navrhnutá bezchybne a existuje množstvo vlastností, ktoré sú potrebné pre špeciálne účely, vznikla motivácia vylepšovať ju. Z mnohých vylepšení, ktoré prišli, má jedno názov OSGi, čo je pôvodná skratka spojenia „Open Services Gateway initiative“. Ak chcete vybudovať dynamickú, modulárnu aplikáciu, v ktorej chcete mať lepšiu kontrolu nad viditeľnosťou kódu medzi jednotlivými časťami, čítajte ďalej.

V prvom rade OSGi nie je framework. Je to špecifikácia frameworku. Čo to znamená? Že niekoľko múdrych hláv sa dalo dokopy (dnes si hovoria OSGi Alliance) a vytvorili popis toho, ako by mal fungovať modulárny framework pre Javu. Nepísali kód, ale zoznam vlastností a správania. A potom si niekoľko softvérových inžinierov sadlo dokopy a podľa tohto popisu napísali kód. A tak vznikol Apache Felix. A tak vznikli Knopflerfish, Equinox a ďalšie. Všetky sú to implementácie tej istej špecifikácie. Sú (mali by byť) na chlp rovnaké v tom, čo špecifikácia diktuje, ale líšia sa v tom, čo necháva otvorené. V zásade, ak sa naučíte pracovať s jedným, viete všetko potrebné, aby ste prešli na iný. Ale naučiť sa pracovať s tým prvým dá zabrať.

Samotná špecifikácia sa delí do niekoľkých častí: Core, Compendium, Enterprise, Mobile a Residential. Ale najpodstatnejšia je Core. Ostatné predstavujú nadstavbu alebo rozšírenie pre nejaké určité prípady. Prvá verzia vznikla v roku 2000 a odvtedy bolo vydaných niekoľko ďalších, pričom tá posledná R5 tento rok (2012). Tak ako vychádzajú posledné nové verzie špecifikácií, snažia sa ich jednotlivé implementácie sledovať a zahŕňať nové požiadavky.

A o čom to teda je? OSGi popisuje framework, na ktorom viete vybudovať celú aplikáciu. Tá aplikácia by mala byť modulárna, pričom moduly by sa mali dať za chodu do nej vkladať, aktualizovať a odoberať. K tomu ešte pridáva kopec mechanizmov ako medzi týmito modulmi vytvárať väzby. Vďaka nim viete navrhnúť modulárnu aplikáciu so slabými väzbami. Základná myšlienka je veľmi jednoduchá. Vezmete štandardný java JAR súbor, rozšírite jeho manifest o nejaké ďalšie informácie, ktoré hovoria o rôznych vlastnostiach a požiadavkách tohto modulu a dostanete niečo, čo sa nazýva bundle. A práve ten je hlavný stavebný prvok OSGi špecifikácie.

Bundle predstavuje modul, ktorý poskytuje nejakú funkcionalitu a nejakú vyžaduje od svojho prostredia. Takto nahrubo medzi nimi vznikajú väzby. Technicky je to realizované tak, že bundle má zoznam balíkov, ktoré verejne poskytuje a zároveň zoznam balíkov, ktoré požaduje. Ak má byť do bežiaceho systému nasadený, tak framework pri jeho nasadzovaní zistí, či všetky balíky, ktoré vyžaduje, sú dostupné. Ak áno, tak ho nahrá a aktivuje. Ak nie, tak ho nainštaluje, ale neaktivuje (fyzicky si ho vezme a nahrá do vnútorných štruktúr, ale nedovolí jeho ďalšie používanie). Dôležité je všimnúť si, že väzby sú vytvárané na balíky a nie na bundle. Inak povedané, väzby sú na vyššej úrovni granularity ako sú stavebné bloky aplikácie. Tento posun, ktorý nie je vôbec bežný, umožňuje ešte väčšiu modularitu a flexibilitu, pretože viete nasadiť rôzne bundle, ktoré poskytujú ten istý balík, ale napríklad vo vyššej verzii. A OSGi sa vždy postará o to, aby bol vybraný ten správny. Tiež sa tento druh väzby popisuje ako definovanie závislosti na tom, čo potrebujem a nie na tom, kto to poskytuje.

Zoskupenie funkcionalít do bundlu je základným pilierom celého OSGi. Nad touto vrstvou modularity sú potom vystavané ďalšie dve, pričom (ako je zvykom) vyššia vrstva využíva služby tej nižšej.

Kam Java nemôže, pošle OSGi

Vrstva životného cyklu hovorí o (kto by to čakal) príbehu života, ktoré bundle v OSGi frameworku žijú. Najvyššia vrstva, služby potom predstavuje komponentový framework postavený na dependency injection pattern. Každý bundle môže poskytovať nejakú službu inému bundlu a takto môžu vytvárať výpočtový systém schopný plniť úlohy. Tieto vrstvy, ale aj iné časti OSGi sú dostatočne bohaté, aby sme sa na nich pozreli v samostatných článkoch.

Ak sa začnete viac zaujímať o OSGi zistíte, že ste s ním prichádzali do kontaktu viac než si myslíte. Napríklad je na ňom založené vývojové prostredie Eclipse. Rovnako množstvo aplikačných serverov ako JBoss, Glassfish alebo NetBeans umožňuje stavať aplikácie pomocou OSGi štandardu. Preto základné znalosti tejto špecifikácie môžu byť užitočné.


Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.



Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Senior SAP Basis Consultant

Základné informáciePozícia: SAP Basis Consultant Pracovný pomer:  TPP, Živnosť Miesto práce: Pezinok, Home-Office Plat: od 3000+ EUR/Brutto/mesačnePopis práceposkytovanie služby inštalácie, konfigurácie,...

DBA Admin

Základné informáciePozícia: DBA Admin Pracovný pomer:  TPP, Živnosť Miesto práce: Pezinok, Home-Office Plat: od 2400 - 4000+ EUR/Brutto/mesačnePopis práce praca s databázovými...

Junior Technical Writer

Basic informationPosition: Junior Technical Writer Contract type: Full-Time employee Location: Bratislava, on-site Salary: from 1000 - 1400 EUR/ BruttoResponsibilities:Interviewing technical personnel...

QA/Testing Specialist – Automated Testing

Základné informáciePozícia: QA/Testing Specialist - Automated Testing Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: 1500 - 1900 EUR/Brutto/mesačnePopis prácenaplánovať a...

DevOps/SysAdmin Tech Lead

JOB Position: DevOps/SysAdmin Tech Lead Contract type: Full-time Location: Bratislava, on-site Salary: 3000 - 4000+ EUR/BruttoResponsibilities:team/tech leadership, prioritisation, 2 team members independent...

Junior/Senior Full Stack Developer / WEB Development for 150 countries

Basic informationPosition: Full Stack Developer Contract type: Full-Time employee or Contractor Location: Vienna (2-3 Days/Week On-Site) / 1 hour drive from...

Agile Project Manager / Scrum Master

JOB Position: Agile Project Manager / Scrum Master Contract type: TPP, Contract Location: Bratislava, Prague, Vienna Salary Junior: 1500 EUR/Brutto Salary Senior: 2200 EUR/Brutto Rate:...

Vieme kto je IT BLOGGER 2019

Súťaž IT Blogger 2019 sme v piatok 6.12.2019 oficiálne ukončili a prinášame vám vyhodnotenie a rozdáme ceny....

Milada Kováčová: Práca v IT nie je len o programovaní

Tentokrát sme sa rozhodli vyspovedať ďalšiu ženu v IT. Milada Kováčová pracuje v slovenskej softvérovej spoločnosti SOFTEC,...

Projekty prvej výzvy fondu SK-NIC sú schválené!

Po uzavretí výzvy Fondu SK-NIC na podporu malých projektov nás hodnotiaca komisia...

Čítaj viac:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.