Halo, OSGi, Bagian 2: Pengantar Modul Dinamis Musim Semi

Jika Anda baru-baru ini mendengarkan pendapat Anda, Anda mungkin telah mendengar banyak tentang pengembangan aplikasi berorientasi layanan dengan OSGi dan Modul Dinamis Musim Semi. Di artikel kedua dari seri Hello OSGi ini, cari tahu mengapa Spring DM adalah opsi yang sangat menarik bagi pengembang yang sudah terbiasa dengan konfigurasi Spring, yang ingin memanfaatkan modularitas OSGi, versi mudah, dan dukungan siklus hidup aplikasi.

OSGi, juga dikenal sebagai Sistem Modul Dinamis untuk Java, menetapkan pendekatan modular untuk pengembangan aplikasi Java, serta sekumpulan metode standar untuk mengelola dependensi antar modul. Project Spring Dynamic Modules untuk OSGi Service Platforms (Spring DM) memungkinkan Anda membuat aplikasi Spring yang dapat diterapkan dalam container OSGi. Untuk pengembang perusahaan Java yang akrab dengan pemrograman Spring dan model konfigurasi, Spring DM adalah cara yang lebih mudah untuk membiasakan diri dengan pendekatan modular OSGi untuk pengembangan aplikasi. Selain memungkinkan pengembang Spring untuk mengakses kerangka kerja modular dan konfigurasi dinamis OSGi, Spring DM menyediakan pengkodean tingkat rendah yang diperlukan oleh sebagian besar aplikasi OSGi, sehingga Anda dapat fokus pada logika bisnis aplikasi Anda.

Artikel pertama dalam seri ini ("Halo, OSGi, Bagian 1: Bundel untuk pemula") memperkenalkan pendekatan standar untuk pengembangan OSGi menggunakan API OSGi dan implementasi container Equinox open source. Anda telah mempelajari tentang arsitektur OSGi, terutama container dan bundle, dan memiliki pengalaman pertama Anda mengembangkan aplikasi Hello World berbasis OSGi. Contoh aplikasi tidak berjalan terlalu dalam karena tujuannya hanyalah untuk memahami dasar-dasar OSGi.

Pada artikel ini, Anda akan membuat aplikasi Hello World lainnya, kali ini menggunakan framework Spring DM. Anda akan mempelajari apa itu Spring DM dan bagaimana cara memanfaatkan pemisahan logika aplikasi OSGi menjadi modul, serta penegakan runtime batas modul. Anda juga akan mempelajari cara menggunakan Spring DM untuk melakukan hal berikut:

  • Menginstal, memperbarui, dan menghapus modul secara dinamis dalam sistem yang sedang berjalan.
  • Bangun aplikasi berorientasi layanan (SOA) dengan secara dinamis menemukan dan menggunakan layanan yang disediakan oleh modul lain dalam sistem.
  • Gunakan DataSourcekelas Spring untuk membuat instance, mengkonfigurasi, merakit, dan menghias komponen di dalam dan di seluruh modul sistem.

Seperti yang akan Anda lihat, menggunakan Spring DM akan membebaskan Anda dari beberapa pekerjaan hafalan, dan bahkan kerja keras untuk memahami apa yang terjadi di balik kap mesin dengan OSGi. Hasilnya, Anda akan bisa lebih mendalami logika aplikasi Anda, dan melakukannya lebih cepat dalam proses pengembangan.

Untuk mengikuti contoh dalam artikel ini, Anda memerlukan lingkungan pengembangan yang terdiri dari Eclipse 3.3 dan Modul Dinamis Musim Semi. Untuk latihan terakhir Anda juga membutuhkan RDBMS seperti Apache Derby. Anda akan menemukan lebih banyak di bawah ini tentang menyiapkan lingkungan pengembangan Spring DM Anda di Eclipse 3.3.

OSGi dan kerangka Spring

Saat ini popularitas OSGi sedang sangat naik daun. Beberapa server aplikasi telah dikemas ulang untuk memanfaatkan kerangka kerja modular OSGi, termasuk Server Aplikasi WebSphere IBM, Arsitektur Layanan mikro (mSA) BEA, dan JOnAS 5, server aplikasi sumber terbuka yang dibangun dari bawah ke atas pada arsitektur OSGi. JBoss juga baru-baru ini mengumumkan pekerjaannya pada classloader berbasis OSGi dan niatnya untuk membuat implementasi spesifikasi inti OSGi. Mungkin yang paling penting, mesin komponen container / runtime OSGi dari Eclipse Foundation, Equinox, baru-baru ini telah dinaikkan ke status proyek tingkat atas, di mana ia akan berfungsi sebagai dasar untuk Inisiatif Waktu Proses Eclipse yang baru.

Bahkan sebelum OSGi mencapai lonjakan popularitasnya saat ini, ada pembicaraan untuk menggabungkannya dengan Spring. Akhirnya, pembicaraan ini mengarah pada proyek Modul Dinamis Musim Semi untuk Platform Layanan OSGi. Fungsionalitas Spring DM dapat dibagi menjadi dua komponen utama: Pertama, menyediakan JAR framework Spring dalam bentuk bundel OSGi. Seperti yang Anda ketahui dari artikel sebelumnya dalam seri ini, bundel OSGi tidak lain adalah file Java Archive (JAR) yang berisi entri tambahan dalam sebuah META-INF/MANIFEST.MFfile, yang bertindak sebagai deskriptor penerapan untuk bundel OSGi. (Perhatikan bahwa Anda tidak dapat menerapkan file JAR secara langsung saat menggunakan OSGi; Anda perlu mengemasnya menggunakan format bundel OSGi.)

Kedua, Spring DM menyediakan tiga bundel / JAR Musim Semi khusus OSGi:

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

Aplikasi yang dibangun menggunakan Spring DM dibuat berbeda dari yang menggunakan framework Spring. Saat Anda membuat aplikasi Spring , Anda menentukan informasi konfigurasi di satu atau beberapa file konfigurasi Spring, yang sebagian besar merupakan file XML. Kerangka kerja Spring menggunakan file konfigurasi ini untuk membuat objek konteks aplikasi saat memulai aplikasi. Setelah konteks aplikasi dibuat, itu digunakan untuk membuat instance, mengkonfigurasi, merakit, dan menghias objek dalam aplikasi.