Programovanie

Dobrý deň, OSGi, 1. časť: Balíky pre začiatočníkov

Open Services Gateway Initiative (OSGi) definuje architektúru pre vývoj a nasadenie modulárnych aplikácií a knižníc. V tomto prvom článku v trojdielnom úvode do OSGi vám Sunil Patil priblíži vývojové koncepty OSGi a ukáže vám, ako vytvoriť jednoduchú aplikáciu Hello World pomocou implementácie kontajnera Eclipse OSGi, Equinox. Krátko sa dotkne aj budovania aplikácií zameraných na služby pomocou OSGi a predstaví OSGi ServiceFactory a ServiceTracker triedy.

Iniciatíva Open Services Gateway Initiative (OSGi), známa tiež ako Dynamic Module System for Java, definuje architektúru pre vývoj modulárnych aplikácií. Implementácie kontajnerov OSGi, ako sú Knopflerfish, Equinox a Apache Felix, vám umožňujú rozdeliť aplikáciu do viacerých modulov a ľahšie tak spravovať vzájomné závislosti medzi nimi.

OSGi, Equinox a Project Jigsaw

Získajte pohľad na skutočný svet štúdiom poznatkov získaných počas integrácie OSGi / Equinox na najväčšom britskom vedeckom projekte a potom zistite, čo môžete od Project Jigsaw v Jave 9 očakávať.

Podobne ako špecifikácie Java Servlet a EJB, špecifikácia OSGi definuje dve veci: sadu služieb, ktoré musí kontajner OSGi implementovať, a zmluvu medzi kontajnerom a vašou aplikáciou. Vývoj na platforme OSGi znamená najskôr zostavenie vašej aplikácie pomocou OSGi API, potom jej nasadenie do kontajnera OSGi. Z pohľadu vývojára ponúka OSGi nasledujúce výhody:

  • Môžete inštalovať, odinštalovať, spustiť a zastaviť rôzne moduly svojej aplikácie dynamicky bez reštartovania kontajnera.
  • Vo vašej aplikácii môže byť súčasne spustených viac ako jedna verzia konkrétneho modulu.
  • OSGi poskytuje veľmi dobrú infraštruktúru pre vývoj aplikácií orientovaných na služby, ako aj vstavaných, mobilných a bohatých internetových aplikácií.

Vzhľadom na to, že na vytváranie webových aplikácií používate kontajnery servletov a na vytváranie transakčných aplikácií kontajnery EJB, možno by vás zaujímalo, prečo potrebujete ešte iný typ kontajnera. Krátka odpoveď je, že kontajnery OSGi sú určené špeciálne na vývoj komplexných aplikácií Java, ktoré chcete rozdeliť na moduly. Tejto krátkej odpovedi sa budem venovať v celej tejto sérii.

Dobrý deň, OSGi: Prečítajte si sériu

  • 1. časť: Balíky pre začiatočníkov
  • Časť 2: Predstavujeme pružinové dynamické moduly
  • Časť 3: Vezmite ju na stranu servera

OSGi v podnikových aplikáciách

Práce na špecifikácii OSGi začala Aliancia OSGi v marci 1999. Jej hlavným cieľom bolo vytvoriť otvorenú špecifikáciu pre poskytovanie spravovaných služieb do miestnych sietí a zariadení. Základnou myšlienkou je, že akonáhle pridáte platformu OSGi Service Platform do sieťového zariadenia (zabudovaného aj servera), mali by ste byť schopní spravovať životný cyklus softvérových komponentov v tomto zariadení odkiaľkoľvek v sieti. Softvérové ​​komponenty je možné inštalovať, aktualizovať alebo odstraňovať za behu bez toho, aby ste museli narušiť činnosť zariadenia.

Technológia OSGi roky prekvitá na trhu zabudovaných systémov a sieťových zariadení. Teraz, čiastočne vďaka Eclipse, sa OSGi stáva životaschopnou a hodnotnou technológiou pre rozvoj podniku.

Rastúca podpora pre OSGi

V roku 2003 začal vývojový tím Eclipse hľadať spôsoby, ako z Eclipse urobiť dynamickejšiu bohatú klientsku platformu a zvýšiť modularitu sady nástrojov. Tím sa nakoniec rozhodol použiť rámec OSGi ako model runtime komponentu. Eclipse 3.0, vydané v júni 2004, bola prvou verziou Eclipse založenou na OSGi.

Takmer všetky podnikové aplikačné servery podporujú alebo plánujú podporovať OSGi. Rámec Spring tiež podporuje OSGi prostredníctvom projektu Spring Dynamic Modules for OSGi Service Platforms, ktorý poskytuje vrstvu infraštruktúry, ktorá uľahčuje použitie OSGi pri vývoji podnikových aplikácií Java založených na jar.

Open source kontajnery OSGi

Z pohľadu podnikového vývojára má kontajner OSGi také malé rozmery, že ho môžete ľahko vložiť do podnikovej aplikácie. Povedzme napríklad, že vyvíjate komplexnú webovú aplikáciu. Chcete rozdeliť aplikáciu na viac modulov: jeden modul pre vrstvu zobrazenia, druhý pre vrstvu DAO a tretí modul pre vrstvu prístupu k údajom. Používanie zabudovaného kontajnera OSGi na správu krížových závislostí týchto modulov vám umožní aktualizovať vrstvu DAO (povedzme z pomalého DAO na rýchly DAO) bez reštartovania aplikácie.

Pokiaľ je vaša aplikácia v súlade so špecifikáciou OSGi, mala by byť schopná spustiť sa v akomkoľvek kontajneri kompatibilnom s OSGi. V súčasnosti existujú tri populárne otvorené kontajnery OSGi:

  • Equinox je referenčnou implementáciou pre rámcovú časť OSGi Service Platform Release 4. Je to modulárny runtime Java v srdci Eclipse IDE a implementuje všetky povinné a väčšinu voliteľných funkcií špecifikácie OSGi R4.
  • Knopflerfish je open source implementácia špecifikácií OSGi R3 a OSGi R4. Knopflerfish 2 implementuje všetky povinné funkcie a niektoré z voliteľných funkcií definovaných v špecifikácii R4.
  • Apache Felix je open source kontajner OSGi od Apache Software Foundation. V čase písania tohto článku tento kontajner nie je úplne v súlade so špecifikáciou OSGI R4.

V tomto článku budeme používať Equinox ako náš kontajner OSGi. V sekcii Zdroje nájdete ďalšie informácie o serveroch Apache Felix a Knopflerfish.

$config[zx-auto] not found$config[zx-overlay] not found