Yani dün sabah itibariyle OSGi'nin ne olduğu konusunda hiçbir fikrim yoktu. OSGi , sürekli kırpıldığını gördüğüm bir moda kelimeydi ve bu yüzden sonunda onu tazelemek için biraz zaman ayırdım.
Aslında oldukça havalı bir şey gibi görünüyor, bu yüzden (kayıt için) hiçbir bakımdan OSGi karşıtı olmadığımı ve bunun bir "OSGi-dayak" sorusu olmadığını belirterek başlamak istiyorum.
Günün sonunda, OSGi'nin - esasen - Java Modularity üzerine JSR 277'yi ele aldığı görülüyor; bu, JAR
dosya spesifikasyonunda bazı köşe durumlarda ad alanı çözümlemesi ve sınıf yükleme sorunlarına yol açabilecek eksiklikler olduğunu fark etti . OSGi aynı zamanda başka pek çok harika şey de yapıyor, ancak anlayabildiğim kadarıyla, bu onun en büyük çekiciliği (veya onlardan biri).
Bana göre - oldukça yeni (birkaç yıldır) bir Java EE geliştiricisi olarak, 2011 yılında olmamız ve şu anda Java 7 çağında yaşıyor olmamız ve bu sınıf yükleme sorunlarının hala mevcut olması kesinlikle akıllara durgunluk veriyor; özellikle bir uygulama sunucusunun üzerinde yüzlerce JAR bulunabileceği kurumsal ortamlarda, bunların çoğu birbirinin farklı sürümlerine bağlıdır ve tümü aynı anda (az ya da çok) çalışır.
Benim sorum:
OSGi ile ilgilendiğim kadar ve projelerim için nerede / işe yarayıp yaramayacağını görmek için onu öğrenmeye başlamak istediğim kadar, oturup bu kadar büyük bir şey öğrenmek için zamanım yok. En azından şimdi.
Peki, OSGi olmayan geliştiriciler bu sorunlar ortaya çıktığında ne yapmalı? Varsa, şu anda hangi Java (Oracle / Sun / JCP) çözümleri mevcuttur? Jigsaw neden J7'den kesildi? Jigsaw'un gelecek yıl J8'de uygulanacağı topluluk ne kadar emin? Henüz Java platformunun bir parçası olmamasına rağmen projeniz için Jigsaw almanız mümkün mü?
Sanırım burada sorduğum şey panik, entrika ve facepalm kombinasyonu. Artık OSGi'nin ne olduğunu nihayet anladığıma göre, Jigsaw gibi bir şeyin nasıl sonuç vermesinin 20 yıldan fazla sürdüğünü ve daha sonra bunun bir sürümden nasıl korunabileceğini "anlamıyorum". Sadece temel görünüyor.
Ve bir geliştirici olarak, çözümlerimin ne olduğunu da merak ediyorum, sans OSGi.
Ayrıca, Not : Bunun " saf programlama " tipi bir soru olmadığını biliyorum , ancak bazılarınız burunlarınızı şekilden kurtarmadan önce, bu soruyu kasıtlı olarak sorduğumu belirtmek istedim (yine kayıt için) YANİ. Bunun nedeni, SO'lu arkadaşlarıma en büyük saygımdan başka hiçbir şeyim olmadığı ve her gün burada gizlendiğini gördüğüm bazı "BT Tanrıları" ndan mimari düzeyde bir cevap arıyorum.
Ancak, bir SO sorusunun bazı kod bölümleriyle desteklenmesinde kesinlikle ısrar edenler için :
int x = 9;
(Bu OSGi / Jigsaw / classloader / namespace / JAR cehennem şeylerine ağırlık verebilecek herkese teşekkürler!)