Programování

Dobrý den, OSGi, část 1: Balíčky pro začátečníky

The Open Services Gateway Initiative (OSGi) definuje architekturu pro vývoj a nasazení modulárních aplikací a knihoven. V tomto prvním článku třídílného úvodu k OSGi vám Sunil Patil představí vývojové koncepty OSGi a ukáže vám, jak vytvořit jednoduchou aplikaci Hello World pomocí implementace kontejneru Eclipse OSGi, Equinox. Krátce se také dotkne budování aplikací orientovaných na služby pomocí OSGi a představí OSGi ServiceFactory a ServiceTracker třídy.

Iniciativa Open Services Gateway Initiative (OSGi), známá také jako Dynamic Module System for Java, definuje architekturu pro vývoj modulárních aplikací. Implementace kontejnerů OSGi, jako jsou Knopflerfish, Equinox a Apache Felix, vám umožňují rozdělit aplikaci do více modulů a snadněji tak spravovat vzájemné závislosti mezi nimi.

OSGi, Equinox a Project Jigsaw

Získejte pohled na skutečný svět studiem poznatků získaných během integrace OSGi / Equinox na největším britském vědeckém projektu, poté zjistěte, co můžete očekávat od Project Jigsaw v Javě 9.

Podobně jako specifikace Java Servlet a EJB, specifikace OSGi definuje dvě věci: sadu služeb, které musí kontejner OSGi implementovat, a smlouvu mezi kontejnerem a vaší aplikací. Vývoj na platformě OSGi znamená nejprve sestavení vaší aplikace pomocí OSGi API, poté její nasazení do kontejneru OSGi. Z pohledu vývojáře nabízí OSGi následující výhody:

  • Můžete instalovat, odinstalovat, spustit a zastavit různé moduly vaší aplikace dynamicky bez restartování kontejneru.
  • Vaše aplikace může mít spuštěnou více než jednu verzi konkrétního modulu současně.
  • OSGi poskytuje velmi dobrou infrastrukturu pro vývoj aplikací orientovaných na služby, stejně jako vestavěné, mobilní a bohaté internetové aplikace.

Vzhledem k tomu, že pro vytváření webových aplikací používáte kontejnery servletů a kontejnery EJB pro vytváření transakčních aplikací, možná vás zajímá, proč potřebujete ještě jiný typ kontejneru. Krátká odpověď je, že kontejnery OSGi jsou určeny speciálně pro vývoj komplexních aplikací Java, které chcete rozdělit do modulů. Tuto krátkou odpověď rozšířím v celé této sérii.

Dobrý den, OSGi: Přečtěte si sérii

  • Část 1: Balíčky pro začátečníky
  • Část 2: Představujeme jarní dynamické moduly
  • Část 3: Vezměte to na stranu serveru

OSGi v podnikových aplikacích

Práce na specifikaci OSGi zahájila Aliance OSGi v březnu 1999. Jejím hlavním cílem bylo vytvořit otevřenou specifikaci pro poskytování spravovaných služeb do místních sítí a zařízení. Základní myšlenkou je, že jakmile přidáte platformu OSGi Service Platform do síťového zařízení (vestavěné i servery), měli byste být schopni spravovat životní cyklus softwarových komponent v tomto zařízení odkudkoli v síti. Softwarové komponenty lze instalovat, aktualizovat nebo odebírat za chodu, aniž byste museli narušit provoz zařízení.

Technologie OSGi po léta vzkvétala na trhu vestavěných systémů a síťových zařízení. Nyní, částečně díky Eclipse, se OSGi ukazuje jako životaschopná a cenná technologie pro podnikový rozvoj.

Rostoucí podpora pro OSGi

V roce 2003 začal vývojový tým Eclipse hledat způsoby, jak z Eclipse vytvořit dynamičtější bohatou klientskou platformu a zvýšit modularitu sady nástrojů. Nakonec se tým usadil na použití rámce OSGi jako modelu runtime komponenty. Eclipse 3.0, vydané v červnu 2004, byla první verzí Eclipse založenou na OSGi.

Téměř všechny podnikové aplikační servery podporují nebo plánují podporovat OSGi. Rámec Spring také podporuje OSGi, a to prostřednictvím projektu Spring Dynamic Modules for OSGi Service Platforms, který poskytuje vrstvu infrastruktury, která usnadňuje používání OSGi při vývoji podnikových aplikací Java založených na Spring.

Open source OSGi kontejnery

Z pohledu podnikového vývojáře má kontejner OSGi tak malou stopu, že jej můžete snadno vložit do podnikové aplikace. Řekněme například, že vyvíjíte složitou webovou aplikaci. Chcete aplikaci rozdělit na více modulů: jeden modul pro vrstvu zobrazení, druhý pro vrstvu DAO a třetí modul pro vrstvu přístupu k datům. Použití vloženého kontejneru OSGi ke správě vzájemných závislostí těchto modulů by vám umožnilo aktualizovat vrstvu DAO (řekněme z pomalého DAO na rychlý DAO) bez restartování aplikace.

Pokud je vaše aplikace kompatibilní se specifikací OSGi, měla by být schopná běžet v jakémkoli kontejneru vyhovujícím OSGi. V současné době existují tři populární open source kontejnery OSGi:

  • Equinox je referenční implementace pro rámcovou část OSGi Service Platform Release 4. Jedná se o modulární runtime Java v srdci Eclipse IDE a implementuje všechny povinné a většinu volitelných funkcí specifikace OSGi R4.
  • Knopflerfish je open source implementace specifikací OSGi R3 a OSGi R4. Knopflerfish 2 implementuje všechny povinné funkce a některé z volitelných funkcí definovaných ve specifikaci R4.
  • Apache Felix je open source kontejner OSGi od Apache Software Foundation. V době psaní tento kontejner není plně kompatibilní se specifikací OSGI R4.

V tomto článku budeme používat Equinox jako náš kontejner OSGi. Další informace o Apache Felix a Knopflerfish najdete v sekci Zdroje.

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