Yazılımınız zaten hazır, ancak yine de teknik kullanıcılarınızın platformu genişletmesini sağlamak için daha etkili bir yönteme ihtiyacınız var.
OSGi'nin çoğu Java geliştiricisi tarafından iyi bilinmesine rağmen, onu ürününüze entegre etmek göz korkutucu bir görev gibi görünebilir. OSGi'nin kesin çalışmaları hakkında netlik olmaması, ileriye giden yolu daha da karıştırıyor.
Denemek istedikleri herhangi bir şeyin aksine, OSGi daha çok Java geliştiricilerine uçsuz bucaksız denizi açmaya çalışmak gibi hissettiriyor.
Bu makale size basit bir program kullanarak OSGi Felix yay öğreticisini tanıtacak ve avantajlarından ve diğer önemli ayrıntılarından bahsedecektir.
Peki OSGi nedir?
Modüllerin ve bileşenlerin oluşturulması ve dağıtılması, OSGi (Open Service Gateway Initiative) olarak bilinen Java çerçevesi tarafından mümkün kılınmıştır.
Kaynak kodları arasında kolayca aktarılabilen modüler işlevsellik ve sonsuz bağımlılıklar gerektirmeyen testler dahil olmak üzere geliştiricilere çeşitli avantajlar sunan işlev kapsülleme ve gevşek bağlantı vurgulanır.
OSGi nasıl çalışır?
Java için dinamik bir bileşen sistemi, OSGi adı verilen bir dizi özellik tarafından tanımlanır. Bu özellikler, bir uygulamanın birkaç parçadan oluşturulduğu ve ardından paketler halinde paketlendiği bir geliştirme yaklaşımı sağlar.
Yerel ve ağ tabanlı hizmetler, bu bileşenler tarafından iletişim kurmak için kullanılır. Programın çekirdek kodunu mümkün olduğunca kompakt hale getirmek amaçtır. Bu kod ve birkaç bileşen arasında yüksek bağlantı mümkündür.
Uygulamanın yeniden kullanılabilir yapı öğelerine bileşen adı verilir. E-ticaret web siteniz için alışveriş sepeti veya personel yönetim sisteminiz için bir bordro uygulaması gibi özellikleri düşünün.
Bileşenler, uygulamalarını diğer bileşenlerden gizlemek için OSGi'yi kullanabilir ve onlara yalnızca hizmetler aracılığıyla gerekli verileri sağlayabilir.
Bu, bileşenlerin istemeden erişmemeleri gereken verileri değiştirmesini önler ve bağımlılıkları yönetir.
Bir OSGi uygulamasındaki bileşenler arasındaki tüm bağlantılar, ideal bir dünyada hizmetler aracılığıyla yapılır. Java paketi, hizmetler için belirtilen API'yi içerir.
Servis sağlayıcılar ve müşteriler arasındaki işbirliği, API'yi oluşturan sınıfların ve/veya arayüzlerin kullanımını gerektirir.
OSGi bileşenlerinin tümü, her biri çalışmak için ihtiyaç duydukları kaynakları içeren paketler halinde paketlenmiştir. Paketler, çevreden neye ihtiyaçları olduğu ve neler yapabilecekleri konusunda oldukça açıktır.
Faydaları
- OSGi uygulamalarının harici paket havuzlarına erişimi vardır.
- Çerçeve, modül düzeyinde hizmet odaklı tasarıma izin verir.
- Üçüncü taraf kitaplıklarını standartlaştırmanın ve entegre etmeyi kolaylaştırmanın yanı sıra uygulama paketlerinin sürümlerini ve bağımlılıklarını yönetmeyi mümkün kılar.
- Uygulamalar değişen taleplere daha uyarlanabilir, daha taşınabilir ve yeniden yapılanma için daha hızlıdır.
- A web uygulaması çerçevenin Java EE programlama modeliyle entegrasyonu sayesinde dinamik bir kullanım ömrüne sahip bir grup sürümlü OSGi paketleri olarak dağıtılabilir.
- Çerçeve, uygulamanın bir parçası olarak üçüncü taraf kitaplığı olarak yüklenmek yerine, uygulama sunucusu çalışma zamanının bir parçası olarak sağlanan standart bir biçimde Spring Framework'ün bildirime dayalı derlemesini ve kolaylaştırılmış birim testini sağlar.
- Dinamik yaşam döngülerine sahip çeşitli sürümlü paketlerden oluşan kurumsal uygulamalar için çerçeve izolasyon sunar.
- Birkaç uygulama tarafından kullanılan paylaşılan ortak ve sürümlü paketleri depolayabilen ve her uygulamanın her paylaşılan kitaplığın ayrı bir kopyasını dağıtmasını önleyen entegre bir paket deposu içerir.
OSGi Felix yay ile başlarken
Kaynakları Alma
Apache Karaf'ın en son sürümünü şuradan indirerek bu sitede kılavuzlar hazırlıyoruz., OSGi maceramıza başlayabiliriz.
OSGi belirtiminin Apache uygulaması olan Apache Felix'e dayanan Apache Karaf, OSGi tabanlı uygulamalar için bir platform sağlar.
Karaf, Felix'in üzerinde, platformla iletişim kurmamızı sağlayacak bir komut satırı arayüzü gibi OSGi'yi tanımamıza yardımcı olacak çeşitli faydalı özellikler sunar.
Paketler İçin Giriş Noktası
Bir uygulama OSGi ortamında çalıştırılmadan önce bir OSGi paketi olarak paketlenmelidir. Ayrıca, uygulama giriş noktası belirtilmelidir; standart genel static void main(String[] args) işlevi değildir.
Öyleyse bir “oluşturarak başlayalım.Merhaba DünyaOSGi tabanlı uygulama.
Temel bir OSGi API bağımlılığı oluşturarak başlıyoruz:
OSGi çalışma zamanının bağımlılığa erişimi olacaktır, bu nedenle paketin bunu içermesi gerekmez. Bu nedenle, tedarik edildi olarak işaretlenmiştir.
Şimdi basit HelloWorld sınıfını oluşturalım:
Paketler için giriş noktası görevi gören sınıflar, OSGi tarafından sağlanan BundleActivator arabirimini uygulamalıdır.
Bu sınıfı içeren paket başlatıldığında, OSGi platformu start() işlevini çağırır. Diğer tarafta, paket durdurulmadan kısa bir süre önce stop() işlevi çağrılır.
Her paketin yalnızca bir BundleActivator'a sahip olabileceğini unutmayalım. Her iki yol da verilen BundleContext nesnesini kullanarak OSGi çalışma zamanı ile iletişim kurabilir.
Paket Oluşturma
Gerekli değişiklikleri yaparak pom.xml'i gerçek bir OSGi paketi yapın.
Öncelikli olarak amacımızın bir demet üretmek olduğunu açıkça ifade etmeliyiz.
Ardından, HelloWorld sınıfını Apache Felix topluluğunun izniyle bir OSGi paketi olarak paketlemek için maven-bundle eklentisini kullanırız:
Paketin MANIFEST dosyasına dahil etmek istediğimiz OSGi başlıklarının değerleri talimatlar bölümünde belirtilmiştir.
Bundle-Activator, paketi başlatmak ve durdurmak için kullanılacak BundleActivator çözümünün gerçekten de tam olarak nitelenmiş adıdır. Yeni oluşturulan sınıfla uyumludur.
Bir OSGi başlığı olmasa da, Private-Package başlığı eklentiye paketi pakete eklemesi talimatını verir, ancak diğer eklentiler için erişilebilir hale getirmez. Paketi oluşturmak için mvn install komutu kullanılmalıdır.
Paketi Yükleme ve Çalıştırma
Bu komutu çalıştırarak Karaf'a başlayalım:
burada “KARAF HOME”, Karaf'ın kurulduğu klasörü ifade eder. Karaf konsol istemi göründüğünde paketi yüklemek için aşağıdaki komutu kullanabiliriz:
Yerel Maven deposunu kullanmak, Karaf'a paketi yüklemesinin söylenmesidir.
Paketin sayısal kimliğini döndüren Karaf, bunu yazar. Bu kimlik, daha önce kaç paketin yüklendiğine bağlı olarak farklılık gösterebilir. Paket şimdi başarıyla kuruldu ve onu başlatma komutu şu şekilde:
Paketi başlattığınız anda, “Merhaba Dünya by Jay” görüntülenir. Artık paketi aşağıdakileri kullanarak durdurabilir ve kaldırabiliriz:
Konsolda “Hoşçakal Dünya by Jay” görüntülenir.
Sonuç
Geliştiriciler, OSGi kullanarak ana programın diğer bileşenlerinden güvenli ve izole tutarken mevcut bir web uygulamasına kolayca yeni işlevler ekleyebilir.
Nasıl çalıştığı, avantajları ve basit bir program da dahil olmak üzere bu yazıda OSGi hakkında bilgi edindik. OSGi'yi kendi uygulamanıza dahil etmek zor değildir.
Mutlu kodlama!
Yorum bırak