Quindi fino a ieri mattina non avevo la più pallida idea di cosa fosse OSGi. OSGi era solo una parola d'ordine che continuavo a vedere spuntare più e più volte, e così ho finalmente messo da parte un po 'di tempo per rispolverarlo.
In realtà sembra roba piuttosto interessante, quindi vorrei iniziare affermando (per la cronaca) che non sono anti-OSGi in alcun modo, né questa è una domanda "OSGi-bashing".
Alla fine della giornata, sembra che OSGi abbia - essenzialmente - affrontato JSR 277 su Java Modularity, che ha riconosciuto che ci sono carenze nella JAR
specifica del file che possono portare alla risoluzione dello spazio dei nomi e problemi di caricamento delle classi in alcuni casi angolari. OSGi fa anche molte altre cose davvero interessanti, ma da quello che posso accertare, questa è la sua più grande attrazione (o una di queste).
Per me - in quanto sviluppatore Java EE abbastanza nuovo (da pochi anni a questa parte), è assolutamente sbalorditivo che siamo nel 2011 e che stiamo attualmente vivendo nell'era di Java 7 e che questi problemi di caricamento delle classi siano ancora presenti; in particolare negli ambienti aziendali in cui un server app potrebbe contenere centinaia di JAR, molti dei quali dipendono da versioni diverse l'uno dell'altro e tutti in esecuzione (più o meno) contemporaneamente.
La mia domanda:
Per quanto mi interessi di OSGi, e per quanto voglio iniziare a impararlo per vedere dove / se potrebbe essere utile ai miei progetti, non ho il tempo di sedermi e imparare qualcosa di così grande, almeno adesso.
Quindi cosa devono fare gli sviluppatori non OSGi quando si presentano questi problemi? Quali soluzioni Java (Oracle / Sun / JCP) esistono attualmente, se esistono? Perché il seghetto alternativo è stato tagliato da J7? Quanto è sicura la comunità che Jigsaw verrà implementato il prossimo anno in J8? È possibile ottenere Jigsaw per il tuo progetto anche se non fa ancora parte della piattaforma Java?
Immagino che quello che sto chiedendo qui sia una combinazione di panico, intrigo e facepalm. Ora che finalmente capisco cos'è OSGi, semplicemente non "capisco" come qualcosa come Jigsaw abbia impiegato più di 20 anni per giungere a buon fine, e poi come avrebbe potuto essere precaricato da una versione. Sembra fondamentale.
E, come sviluppatore, sono anche curioso di sapere quali sono le mie soluzioni, senza OSGi.
Inoltre, Nota : so che questa non è una domanda di tipo " programmazione pura ", ma prima che alcuni di voi si pieghino il naso, volevo affermare (di nuovo, per la cronaca) che ho deliberatamente posto questa domanda COSÌ. Questo perché non ho altro che il massimo rispetto per i miei compagni SO e sto cercando una risposta a livello architettonico da alcuni degli "Dei dell'IT" che vedo in agguato qui intorno ogni giorno.
Ma, per quelli di voi che insistono assolutamente che una domanda SO sia supportata con un segmento di codice:
int x = 9;
(Grazie a chiunque possa valutare questo OSGi / Jigsaw / classloader / namespace / JAR roba infernale!)