OSGi'nin bileşen sistemi size ne gibi faydalar sağlar?
İşte oldukça bir liste:
Azaltılmış Karmaşıklık - OSGi teknolojisi ile geliştirme, paket geliştirme anlamına gelir: OSGi bileşenleri. Paketler modüllerdir. İç kısımlarını diğer paketlerden gizler ve iyi tanımlanmış hizmetler yoluyla iletişim kurarlar. İçerileri gizlemek, daha sonra değiştirmek için daha fazla özgürlük anlamına gelir. Bu, yalnızca hata sayısını azaltmakla kalmaz, aynı zamanda demetlerin geliştirilmesini de kolaylaştırır, çünkü doğru boyutta demetler iyi tanımlanmış arabirimler aracılığıyla bir parça işlevsellik uygular. OSGi teknolojisinin geliştirme süreçleri için neler yaptığını açıklayan ilginç bir blog var.
Yeniden Kullan - OSGi bileşen modeli, bir uygulamada birçok üçüncü taraf bileşeninin kullanımını çok kolaylaştırır. Artan sayıda açık kaynaklı proje JAR'larına OSGi için hazır hale getirmektedir. Bununla birlikte, ticari kütüphaneler de hazır demetler olarak sunuluyor.
Gerçek dünya -OSGi çerçevesi dinamiktir. Paketleri anında güncelleyebilir ve hizmetler gelip gidebilir. Daha geleneksel Java için kullanılan geliştiriciler bunu çok sorunlu bir özellik olarak görüyor ve avantajı göremiyorlar. Ancak, gerçek dünyanın son derece dinamik olduğu ve gelip gidebilecek dinamik hizmetlere sahip olduğu, hizmetleri birçok gerçek dünya senaryosu için mükemmel bir eşleşme haline getiriyor. Örneğin, bir hizmet ağdaki bir aygıtı modelleyebilir. Aygıt algılanırsa, hizmet kaydedilir. Cihaz kaybolursa, hizmet kaydı silinir. Bu dinamik hizmet modeliyle eşleşen şaşırtıcı sayıda gerçek dünya senaryosu var. Bu nedenle uygulamalar, hizmet kayıt defterinin güçlü ilkellerini (kayıt, alma, etkileyici bir filtre dili ile listeleme ve hizmetlerin görünmesini ve yok olmasını beklemeyi) kendi alanlarında yeniden kullanabilir. Bu sadece kod yazmadan tasarruf etmekle kalmaz, aynı zamanda özel bir çözüm için uygulayacağınızdan daha fazla global görünürlük, hata ayıklama araçları ve daha fazla işlevsellik sağlar. Böyle dinamik bir ortamda kod yazmak bir kabusa benziyor, ancak neyse ki, hepsinden olmasa da, acıdan en fazlasını alan destek sınıfları ve çerçeveleri var.
Kolay Kurulum - OSGi teknolojisi sadece bileşenler için bir standart değildir. Ayrıca bileşenlerin nasıl kurulacağını ve yönetileceğini de belirtir. Bu API, bir yönetim aracısı sağlamak için birçok paket tarafından kullanılmıştır. Bu yönetim aracı, komut kabuğu, TR-69 yönetim protokolü sürücüsü, OMA DM protokol sürücüsü, Amazon'un EC2'si için bir bulut bilgi işlem arayüzü veya bir IBM Tivoli yönetim sistemi kadar basit olabilir. Standart yönetim API'si, OSGi teknolojisini mevcut ve gelecekteki sistemlere entegre etmeyi çok kolaylaştırır.
Dinamik Güncellemeler - OSGi bileşen modeli dinamik bir modeldir. Paketler tüm sistemi düşürmeden kurulabilir, başlatılabilir, durdurulabilir, güncellenebilir ve kaldırılabilir. Birçok Java geliştiricisi bunun güvenilir bir şekilde yapılabileceğine inanmaz ve bu nedenle başlangıçta bunu üretimde kullanmaz. Ancak, bunu bir süre geliştirmede kullandıktan sonra, çoğu aslında çalıştığını ve dağıtım sürelerini önemli ölçüde azalttığını fark etmeye başlar.
Uyarlanabilir - OSGi bileşen modeli, bileşenlerin karıştırılması ve eşleştirilmesi için sıfırdan tasarlanmıştır. Bu, bileşenlerin bağımlılıklarının belirtilmesini ve bileşenlerin isteğe bağlı bağımlılıklarının her zaman mevcut olmadığı bir ortamda yaşamasını gerektirir. OSGi hizmet kaydı, paketlerin hizmetleri kaydedebileceği, alabileceği ve dinleyebileceği dinamik bir kayıttır. Bu dinamik hizmet modeli, paketlerin sistemde hangi yeteneklerin mevcut olduğunu bulmalarını ve sağlayabilecekleri işlevleri uyarlamalarını sağlar. Bu, kodu daha esnek ve değişikliklere karşı dayanıklı hale getirir.
Şeffaflık - Paketler ve hizmetler OSGi ortamında birinci sınıf vatandaşlardır. Yönetim API'sı, bir paketin dahili durumuna ve diğer paketlere nasıl bağlandığına erişim sağlar. Örneğin, çoğu çerçeve bu iç durumu gösteren bir komut kabuğu sağlar. Belirli bir sorunu ayıklamak için uygulamaların bazı bölümleri durdurulabilir veya tanılama paketleri getirilebilir. Milyonlarca günlük çıkış çıkışına ve uzun yeniden başlatma sürelerine bakmak yerine, OSGi uygulamaları genellikle canlı bir komut kabuğu ile hata ayıklanabilir.
Sürüm oluşturma - OSGi teknolojisi JAR cehennemini çözer. JAR cehennem, A kütüphanesinin B kütüphanesi ile çalıştığı problemdir; sürüm = 2, ancak C kütüphanesi sadece B; sürüm = 3 ile çalışabilir. Standart Java'da şansınız kalmadı. OSGi ortamında, tüm paketler dikkatli bir şekilde sürümlendirilir ve yalnızca işbirliği yapabilen paketler aynı sınıf alanında birbirine bağlanır. Bu, hem A hem de C paketinin kendi kitaplıklarıyla çalışmasını sağlar. Bu sürüm oluşturma sorunu olan sistemlerin tasarlanması tavsiye edilmese de, bazı durumlarda hayat kurtarıcı olabilir.
Basit - OSGi API'sı şaşırtıcı derecede basittir. Çekirdek API yalnızca bir paket ve 30'dan az sınıf / arabirimdir. Bu temel API, paketleri yazmak, yüklemek, başlatmak, durdurmak, güncellemek ve kaldırmak için yeterlidir ve tüm dinleyici ve güvenlik sınıflarını içerir. Çok az API için çok fazla işlevsellik sağlayan çok az API vardır.
Küçük - OSGi Sürüm 4 Çerçevesi yaklaşık 300 KB'lık bir JAR dosyasında uygulanabilir. Bu, OSGi dahil edilerek bir uygulamaya eklenen işlevsellik miktarı için küçük bir ek yüktür. Bu nedenle OSGi, çok küçükten küçükten ana karelere kadar çok çeşitli cihazlarda çalışır. Yalnızca minimum bir Java VM'nin çalışmasını ister ve üzerine çok az şey ekler.
Hızlı - OSGi çerçevesinin temel sorumluluklarından biri, sınıfları paketlerden yüklemek. Geleneksel Java'da JAR'lar tamamen görünür ve doğrusal bir listeye yerleştirilir. Bir sınıfta arama yapmak için bu listeyi aramak gerekir (genellikle çok uzun, 150 nadir değildir). Aksine, OSGi paketleri hazırlar ve her bir paket için tam olarak hangi paketin sınıfı sağladığını bilir. Bu arama eksikliği başlangıçta önemli bir hız faktörüdür.
Tembel - Yazılımdaki tembel iyidir ve OSGi teknolojisi, işleri gerçekten ihtiyaç duyulduğunda yapmak için birçok mekanizmaya sahiptir. Örneğin, demetler istekli bir şekilde başlatılabilir, ancak yalnızca diğer demetler bunları kullanırken başlatılacak şekilde de yapılandırılabilir. Hizmetler kaydedilebilir, ancak yalnızca kullanıldıklarında oluşturulabilir. Spesifikasyonlar, muazzam çalışma zamanı maliyetlerinden tasarruf edebilen bu tür tembel senaryolara izin vermek için birkaç kez optimize edildi.
Güvenli - Java'nın alt kısmında çok güçlü bir ince taneli güvenlik modeli vardır, ancak uygulamada yapılandırılması çok zor olduğu ortaya çıktı. Sonuç, çoğu güvenli Java uygulamasının ikili bir seçenekle çalışmasıdır: güvenlik yok veya çok sınırlı yetenekler. OSGi güvenlik modeli, ince taneli güvenlik modelinden yararlanır, ancak paket operatörünün istenen güvenlik ayrıntılarını kolayca denetlenen bir formda belirtmesini sağlayarak kullanılabilirliği artırır (orijinal modeli sertleştirir). Genel olarak, OSGi muhtemelen hala donanım korumalı bilgi işlem platformlarından kısa olan en güvenli uygulama ortamlarından birini sunmaktadır.
Müdahaleci Olmayan - Bir OSGi ortamındaki uygulamalar (paketler) kendi başlarına bırakılır. OSGi'yi kısıtlamadan sanal makinenin neredeyse tüm tesislerini kullanabilirler. OSGi'deki en iyi uygulama, Düz Eski Java Nesneleri yazmaktır ve bu nedenle, OSGi hizmetleri için özel bir arabirim gerekmez, hatta bir Java String nesnesi bir OSGi hizmeti olarak işlev görebilir. Bu strateji, uygulama kodunun başka bir ortama taşınmasını kolaylaştırır.
Her Yerde Çalışıyor - Buna bağlı. Java'nın asıl amacı herhangi bir yerde çalıştırmaktı. Açıkçası, Java VM'lerinin yetenekleri farklı olduğu için tüm kodları her yerde çalıştırmak mümkün değildir. Cep telefonundaki bir VM, bankacılık uygulaması çalıştıran bir IBM ana bilgisayarıyla aynı kütüphaneleri desteklemeyecektir. Dikkat edilmesi gereken iki konu var. İlk olarak, OSGi API'leri tüm ortamlarda bulunmayan sınıfları kullanmamalıdır. İkinci olarak, yürütme ortamında bulunmayan bir kod içeriyorsa, bir paket başlatılmamalıdır. Bu sorunların her ikisi de OSGi spesifikasyonlarında ele alınmıştır.
Kaynak: www.osgi.org/Technology/WhyOSGi