Więc od wczorajszego ranka nie miałem pojęcia, czym w ogóle był OSGi. OSGi było tylko modnym hasłem, które ciągle pojawiało się w kółko, więc w końcu poświęciłem trochę czasu, aby to odświeżyć.
Właściwie wydaje się to całkiem fajne, więc chciałbym zacząć od stwierdzenia (dla porządku), że pod żadnym względem nie jestem przeciwny OSGi, ani nie jest to jakieś pytanie o "walenie w OSGi".
Ostatecznie wydaje się, że OSGi - w zasadzie - zajęło się JSR 277 w Java Modularity, które uznało, że istnieją niedociągnięcia w JAR
specyfikacji pliku, które mogą prowadzić do rozwiązywania przestrzeni nazw i problemów z ładowaniem klas w niektórych przypadkach narożnych. OSGi robi również wiele innych naprawdę fajnych rzeczy, ale z tego, co mogę stwierdzić, to jego największa atrakcja (lub jedna z nich).
Dla mnie - jako całkiem nowego (od kilku lat) programisty Java EE, jest absolutnie zadziwiające, że jesteśmy w roku 2011 i obecnie żyjemy w erze Java 7 i że te problemy z ładowaniem klas są nadal obecne; szczególnie w środowiskach korporacyjnych, gdzie jeden serwer aplikacji może mieć setki plików JAR, przy czym wiele z nich zależy od różnych wersji i wszystkie działają (mniej więcej) jednocześnie.
Moje pytanie:
Tak jak jestem zainteresowany OSGi i chociaż chcę zacząć się o nim uczyć, aby zobaczyć, gdzie / czy może być przydatny w moich projektach, po prostu nie mam czasu, aby usiąść i nauczyć się czegoś tak dużego, przynajmniej teraz.
Co więc mają zrobić programiści spoza OSGi, gdy pojawią się te problemy? Jakie rozwiązania Java (Oracle / Sun / JCP) są obecnie dostępne? Dlaczego wyrzynarka została wycięta z J7? Na ile pewna jest społeczność, że Jigsaw zostanie wdrożony w przyszłym roku w J8? Czy można uzyskać Jigsaw do swojego projektu, mimo że nie jest on jeszcze częścią platformy Java?
Myślę, że to o co tutaj pytam to połączenie paniki, intrygi i facepalm. Teraz, kiedy w końcu rozumiem, czym jest OSGi, po prostu nie rozumiem, jak coś takiego jak Jigsaw zajęło ponad 20 lat, zanim doszło do skutku, a potem jak można to było powstrzymać po premierze. Wydaje się to po prostu fundamentalne.
Jako programista jestem również ciekawy, jakie są moje rozwiązania bez OSGi.
Również Uwaga : Wiem, że to nie jest „ programowanie czysty ” -type pytanie, ale zanim niektórzy z was wasze nosy odkształcone, chciałem stanu (ponownie, do dokumentacji), że celowo umieścić na to pytanie WIĘC. To dlatego, że mam tylko najwyższy szacunek dla moich kolegów SO-ów i szukam odpowiedzi na poziomie architektonicznym od niektórych „bogów IT”, których czają się tu każdego dnia.
Ale dla tych z Was, którzy absolutnie nalegają, aby pytanie SO było poparte jakimś segmentem kodu:
int x = 9;
(Dziękuję każdemu, kto może się zastanowić nad tym OSGi / Jigsaw / classloader / namespace / JAR piekło!)