Merhaba, OSGi, Bölüm 2: Yay Dinamik Modüllerine Giriş

Son zamanlarda kulağınızı yere koyduysanız, OSGi ve Spring Dynamic Modules ile hizmet odaklı uygulama geliştirme hakkında muhtemelen çok şey duyuyorsunuz. Hello, OSGi serisindeki bu ikinci makalede, Spring DM'nin OSGi'nin modülerliğinden, kolay versiyonlamasından ve uygulama yaşam döngüsü desteğinden yararlanmak isteyen Spring konfigürasyonuna zaten aşina olan geliştiriciler için neden bu kadar heyecan verici bir seçenek olduğunu öğrenin.

Java için Dinamik Modül Sistemi olarak da bilinen OSGi, Java uygulama geliştirmeye yönelik modüler bir yaklaşımın yanı sıra modüller arasındaki bağımlılıkları yönetmek için bir dizi standartlaştırılmış yöntem belirtir. OSGi Hizmet Platformları projesi için Yay Dinamik Modülleri (Spring DM), bir OSGi kapsayıcısında konuşlandırılabilen Spring uygulamaları oluşturmanıza olanak tanır. Spring programlama ve yapılandırma modeline aşina olan Java kurumsal geliştiricileri için Spring DM, OSGi'nin uygulama geliştirmeye yönelik modüler yaklaşımına aşina olmanın daha kolay bir yoludur. Spring geliştiricilerinin OSGi'nin modüler çerçevesine ve dinamik konfigürasyonuna erişmesine olanak sağlamanın yanı sıra, Spring DM çoğu OSGi uygulamasının gerektirdiği düşük seviyeli kodlamayı sağlar, böylece uygulamanızın iş mantığına odaklanabilirsiniz.

Bu serideki ilk makale ("Merhaba, OSGi, Bölüm 1: Yeni başlayanlar için paketler") OSGi API'sini ve açık kaynak Equinox konteyner uygulamasını kullanarak OSGi geliştirmeye standart bir yaklaşım getirmiştir. OSGi mimarisi, özellikle kapsayıcılar ve paketler hakkında bilgi edindiniz ve ilk OSGi tabanlı Hello World uygulaması geliştirme deneyiminizi yaşadınız. Uygulama örneği çok derin çalışmadı çünkü amaç sadece OSGi'nin temellerini kavramaktı.

Bu makalede, bu sefer Spring DM çerçevesini kullanarak başka bir Hello World uygulaması oluşturacaksınız. Spring DM'nin ne olduğunu ve OSGi'nin uygulama mantığını modüllere ayırmasını ve modül sınırlarının çalışma zamanı uygulamasını nasıl geliştirdiğini öğreneceksiniz. Aşağıdakileri yapmak için Spring DM'yi nasıl kullanacağınızı da öğreneceksiniz:

  • Çalışan bir sistemdeki modülleri dinamik olarak kurun, güncelleyin ve kaldırın.
  • Bir sistemdeki diğer modüller tarafından sağlanan hizmetleri dinamik olarak keşfedip kullanarak hizmet odaklı uygulamalar (SOA'lar) oluşturun.
  • DataSourceBileşenleri sistem modülleri içinde ve arasında örneklemek, yapılandırmak, birleştirmek ve süslemek için Spring'in sınıfını kullanın .

Göreceğiniz gibi, Spring DM kullanmak sizi bazı ezberden ve hatta OSGi ile kaputun altında neler olduğunu anlamanın daha zor işlerinden kurtaracaktır. Sonuç olarak, uygulama mantığınızda daha derinlere inebilecek ve bunu geliştirme sürecinde daha erken yapabileceksiniz.

Bu makaledeki örnekleri takip etmek için Eclipse 3.3 ve Spring Dinamik Modüllerinden oluşan bir geliştirme ortamına ihtiyacınız olacak. Son alıştırma için ayrıca Apache Derby gibi bir RDBMS'ye ihtiyacınız olacak. Aşağıda Eclipse 3.3'te Spring DM geliştirme ortamınızı kurma hakkında daha fazla bilgi bulacaksınız.

OSGi ve Bahar çerçevesi

Şu anda, OSGi'nin popülaritesi büyük ölçüde artıyor. IBM'in WebSphere Application Server, BEA'nın microService Architecture (mSA) ve bir OSGi mimarisi üzerine sıfırdan inşa edilen açık kaynaklı bir uygulama sunucusu olan JOnAS 5 dahil olmak üzere OSGi'nin modüler çerçevesinden yararlanmak için birçok uygulama sunucusu yeniden paketlenmiştir. JBoss, yakın zamanda OSGi tabanlı bir sınıf yükleyici üzerindeki çalışmalarını ve bir OSGi temel spesifikasyon uygulaması oluşturma niyetini duyurdu. Belki de en önemlisi, Eclipse Foundation'ın OSGi konteyner / çalışma zamanı bileşen motoru Equinox, yakın zamanda, yeni Eclipse Çalışma Zamanı Girişimi'nin temeli olarak hizmet edeceği üst düzey proje statüsüne yükseltildi.

OSGi şu anki popülerlik artışına ulaşmadan önce bile, onu Spring ile birleştirmekten bahsediliyordu. Sonunda, bu konuşma OSGi Hizmet Platformları için Bahar Dinamik Modülleri projesine yol açtı. Spring DM'nin işlevselliği iki ana bileşene ayrılabilir: Birincisi, OSGi demetleri şeklinde Spring çerçeve JAR'ları sağlar. Bu dizinin önceki makalesinden de bildiğiniz gibi, OSGi paketleri, META-INF/MANIFEST.MFbir OSGi paketi için dağıtım tanımlayıcısı görevi gören bir dosyada ek girişler içeren Java Arşivi (JAR) dosyalarından başka bir şey değildir . (OSGi'yi kullanırken bir JAR dosyasını doğrudan dağıtamayacağınızı unutmayın; OSGi paket biçimini kullanarak paketlemeniz gerekir.)

İkincisi, Spring DM, OSGi'ye özgü üç Yay paketi / JAR sağlar:

  • org.springframeork.osgi.bundle.extender
  • org.springframeork.osgi.bundle.core
  • org.springframeork.osgi.bundle.io

Spring DM kullanılarak oluşturulan uygulamalar, Spring çerçevesini kullananlardan farklı şekilde oluşturulmuştur. Bir Spring uygulaması oluşturduğunuzda, konfigürasyon bilgilerinizi çoğunlukla XML dosyaları olan bir veya daha fazla Spring konfigürasyon dosyasında tanımlarsınız. Spring çerçevesi, uygulama başlangıcında bir uygulama bağlamı nesnesi oluşturmak için bu yapılandırma dosyalarını kullanır. Uygulama bağlamı oluşturulduktan sonra, uygulama içindeki nesneleri başlatmak, yapılandırmak, birleştirmek ve süslemek için kullanılır.