Pozdrav, OSGi, 1. dio: Paketi za početnike

Inicijativa za pristupni pristup otvorenim uslugama (OSGi) definira arhitekturu za razvoj i primjenu modularnih aplikacija i knjižnica. U ovom prvom članku u trodijelnom uvodu u OSGi, Sunil Patil započinje s razvojnim konceptima OSGi-a i pokazuje vam kako izraditi jednostavnu aplikaciju Hello World pomoću implementacije spremnika Eclipse OSGi, Equinox. Također se ukratko dotaknuo izrade usluga usmjerenih na programe pomoću OSGi-a i predstavlja OSGi-ove ServiceFactoryi ServiceTrackersatove.

Inicijativa Open Services Gateway (OSGi), također poznata kao Dynamic Module System za Javu, definira arhitekturu za modularni razvoj aplikacija. Implementacije OSGi spremnika kao što su Knopflerfish, Equinox i Apache Felix omogućuju vam razbijanje vaše aplikacije na više modula i na taj način lakše upravljanje međusobnim ovisnostima između njih.

OSGi, Equinox i Jigsaw projekta

Steknite stvarni pogled proučavanjem lekcija naučenih tijekom integracije OSGi / Equinox na najvećem britanskom znanstvenom projektu, a zatim saznajte što možete očekivati ​​od Project Jigsaw-a u Javi 9.

Slično specifikacijama Java Servlet i EJB, OSGi specifikacija definira dvije stvari: skup usluga koje OSGi spremnik mora implementirati i ugovor između spremnika i vaše aplikacije. Razvoj na OSGi platformi znači najprije izgradnju aplikacije pomoću OSGi API-ja, a zatim njezinu implementaciju u OSGi spremnik. Iz perspektive programera, OSGi nudi sljedeće prednosti:

  • Možete dinamički instalirati, deinstalirati, pokrenuti i zaustaviti različite module aplikacije bez ponovnog pokretanja spremnika.
  • Vaša aplikacija može istodobno raditi više od jedne verzije određenog modula.
  • OSGi pruža vrlo dobru infrastrukturu za razvoj aplikacija orijentiranih na usluge, kao i ugrađenih, mobilnih i bogatih internetskih aplikacija.

S obzirom da za izradu web aplikacija koristite spremnike servleta, a za izgradnju transakcijskih aplikacija spremnike EJB, možda se pitate zašto vam treba još jedna vrsta spremnika. Kratki je odgovor da su OSGi spremnici namijenjeni posebno za razvoj složenih Java aplikacija koje želite razbiti na module. Proširit ću taj kratki odgovor kroz ovu seriju.

Pozdrav, OSGi: Pročitajte seriju

  • 1. dio: Paketi za početnike
  • Dio 2: Predstavljanje proljetnih dinamičkih modula
  • 3. dio: Odnesite ga na stranu poslužitelja

OSGi u poslovnim aplikacijama

Rad na OSGi specifikaciji započeo je OSGi Alliance u ožujku 1999. Njegov glavni cilj bio je stvoriti otvorenu specifikaciju za isporuku upravljanih usluga lokalnim mrežama i uređajima. Osnovna je ideja da nakon što dodate OSGi Service Platform u umreženi uređaj (ugrađen kao i poslužitelji), trebali biste moći upravljati životnim ciklusom softverskih komponenata u tom uređaju s bilo kojeg mjesta u mreži. Softverske komponente mogu se instalirati, ažurirati ili ukloniti u hodu bez ikakvog ometanja rada uređaja.

Godinama je OSGi tehnologija cvjetala na tržištu ugrađenih sustava i mrežnih uređaja. Sada se, dijelom zahvaljujući Eclipseu, OSGi pojavljuje kao održiva i vrijedna tehnologija za razvoj poduzeća.

Sve veća podrška za OSGi

2003. razvojni tim Eclipse počeo je tražiti načine kako Eclipse učiniti dinamičnijom bogatom klijentskom platformom i povećati modularnost skupa alata. Na kraju, tim se odlučio na korištenje OSGi okvira kao runtime komponentnog modela. Eclipse 3.0, objavljena u lipnju 2004. godine, bila je prva verzija Eclipsea koja se temelji na OSGi-u.

Gotovo svi poslužitelji aplikacija poduzeća podržavaju ili planiraju podržati OSGi. Proljetni okvir također podržava OSGi, putem projekta Spring Dynamic Modules for OSGi Service Platforms, koji pruža infrastrukturni sloj za lakšu upotrebu OSGi-a u razvoju Java Enterprise aplikacija utemeljenih na proljeću.

Otvoreni izvorni OSGi spremnici

S gledišta razvojnog poduzeća, spremnik OSGi ima tako mali otisak da ga možete lako ugraditi u poslovnu aplikaciju. Na primjer, recimo da razvijate složenu web aplikaciju. Aplikaciju želite razbiti na više modula: jedan modul za sloj pogleda, drugi za sloj DAO i treći modul za sloj pristupa podacima. Korištenje ugrađenog spremnika OSGi za upravljanje međusobnim ovisnostima ovih modula omogućilo bi vam da ažurirate svoj DAO sloj (recimo iz sporog DAO u brzi DAO) bez ponovnog pokretanja aplikacije.

Sve dok je vaša aplikacija sukladna OSGi specifikaciji, trebala bi se moći pokretati u bilo kojem spremniku koji je u skladu s OSGi-jem. Trenutno postoje tri popularna OSGi spremnika s otvorenim kodom:

  • Equinox je referentna implementacija za okvirni dio OSGi Service Platform izdanja 4. To je modularno Java vrijeme izvođenja u srcu Eclipse IDE-a i provodi sve obvezne i većinu neobaveznih značajki OSGi R4 specifikacije.
  • Knopflerfish je implementacija OSGi R3 i OSGi R4 otvorenog koda. Knopflerfish 2 implementira sve obvezne značajke i neke opcijske značajke definirane u R4 specifikaciji.
  • Apache Felix je spremnik OSGi otvorenog koda iz Apache Software Foundation. U trenutku pisanja ovog spremnika nije u potpunosti usklađen sa OSGI R4 specifikacijama.

U ovom ćemo članku koristiti Equinox kao naš OSGi spremnik. Pogledajte odjeljak Resursi za više informacija o Apache Felixu i Knopflerfishu.