OSGi è una sigla forse non ancora sufficientemente nota alla maggioranza degli sviluppatori, ma sempre più alla base del lavoro quotidiano di chi lavora con Java.
Open Service Gateway initiative è nata nel 1999, per volere di alcuni big di informatica e telefonia (tra cui IBM, Sun, Motorola, Ericsson), allo scopo di creare un sistema dinamico e modulare per la creazione di applicazioni Java, a fronte della complessità crescente nello sviluppo e manutenzione di software di qualità enterprise. Se in un primo momento l'ambito di applicazione previsto era relativo ai soli service gateway, nel corso del tempo (siamo ormai alla release 4.2, datata settembre 2009) si è largamente esteso fino ad interessare automazione industriale, grid computing, mondo mobile.
A grandi linee, OSGi offre un'infrastruttura in grado di gestire:
- bundle, ossia quelli che comunemente chiamiamo plugin, addons, moduli: per OSGi un bundle è un archivio .jar contenente un file manifest (.mf) in cui sono indicate informazioni base quali ad esempio versione, dipendenze, package esportati: relativamente a ciascun bundle è possibile compiere operazioni di installazione, disinstallazione, aggiornamento, avvio, arresto; è inoltre possibile limitare le operazioni possibili per ciascun bundle, allo scopo di aumentare la sicurezza del sistema nonché di adattarsi all'ambiente di esecuzione;
- servizi, comprendenti operazioni ricorrenti quali la gestione di autenticazione/autorizzazione, logging, configurazione dei singoli bundle, gestione di eventi (sollevamento ed intercettazione), uso del protocollo HTTP, e molti altri, più ovviamente tutto cià che verrà definito ad hoc.
Per approfondimenti sulle specifiche OSGi la prima fonte non può che essere il sito ufficiale della OSGi Alliance, l'organizzazione alla base della creazione e dell'aggiornamento delle specifiche. Per chi preferisce iniziare con fonti italiane, non poteva mancare un articolo su MokaByte.