Open Service Gateway Initiative (OSGi) adalah sebuah system
dan aplikasi interoperability berbasis komponen platform yang terintegrasi.
OSGi merupakan system modul dinamik untuk Java. Teknologi OSGi adalah Universal
Middleware. Teknologi OSGi menyediakan sebuah service -oriented, lingkungan
yang berbasis komponen untuk pengembang dan menawarkan jalan standard untuk
mengatur siklus hidup software. Kemampuan ini dapat menambah nilai jangkauan
dari computer dan peralatan yang menggunakan platform Java dengan sangat hebat.
Teknologi OSGI mengadopsi keuntungan dari menambah time-to-market dan
mengurangi biaya pengembangan karena teknologi OSGi menyediakan subsistem
komponen yang terintegrasi dari pre-build dan pre-tested. Teknologi ini juga
mengurangi biaya perawatan dan memberikan kesempatan aftermarket yang baru dan
unik karena jaringan dapat digunakan untuk update secara dinamik dan
mengirimkan service dan aplikasi di lapangan.
SPESIFIKASI OSGi
Inti bagian dari spesifikasi adalah suatu kerangka kerja
yang mendefinisikan aplikasi model manajemen siklus hidup, sebuah layanan
registrasi, sebuah lingkungan eksekusi dan modul. Berdasarkan kerangka ini,
sejumlah besar OSGI layers, API, dan Jasa telah ditetapkan.
Spesifikasi OSGI yang dikembangkan oleh para anggota dalam
proses terbuka dan tersedia untuk umum secara gratis di bawah Lisensi
Spesifikasi OSGI. OSGI Alliance yang memiliki program kepatuhan yang hanya
terbuka untuk anggota. Pada Oktober 2009, daftar bersertifikat OSGI
implementasi berisi lima entri.
Spesifikasi OSGI yang sekarang digunakan dalam aplikasi
mulai dari ponsel ke open source Eclipse IDE. Wilayah aplikasi lain meliputi
mobil, otomasi industri, otomatisasi bangunan, PDA, komputasi grid, hiburan
(misalnya iPronto), armada manajemen dan aplikasi server. Adapun spesifikasi
yang lain dimana OSGI akan dirancang untuk melengkapi standar perumahan yang
ada, seperti orang – orang LonWorks (lihat kontrol jaringan), CAL, CEBus, HAVi,
dan lain-lain.
ARSITEKTUR OSGi
Setiap kerangka yang menerapkan standar OSGI menyediakan suatu lingkungan untuk
modularisasi aplikasi ke dalam kumpulan yang lebih kecil. Setiap bundel adalah
erat-coupled, dynamically loadable kelas koleksi, botol, dan file-file
konfigurasi yang secara eksplisit menyatakan dependensi eksternal mereka (jika
ada). Kerangka kerja konseptual yang
dibagi dalam bidang-bidang berikut:Kerangka kerja konseptual yang dibagi dalam
bidang-bidang berikut:
1. Bundles
Kumpulan jaringan normal komponen dengan nyata tambahan
header. Sebuah bundel adalah sekelompok kelas Java dan sumber daya tambahan
yang dilengkapi dengan rincian file pada MANIFEST.MF nyata semua isinya, serta
layanan tambahan yang diperlukan untuk memberikan kelompok termasuk kelas Java
perilaku yang lebih canggih, dengan tingkat deeming seluruh agregat sebuah
komponen.
2. Services
Layanan yang menghubungkan lapisan bundel dalam cara yang
dinamis dengan menawarkan, menerbitkan dan menemukan model dapat mengikat Java
lama untuk menikmati objek (POJO). Siklus hidup menambahkan lapisan bundel
dinamis yang dapat diinstal, mulai, berhenti, diperbarui dan dihapus. Buntalan
bergantung pada lapisan modul untuk kelas loading tetapi menambahkan API untuk
mengatur modul – modul dalam run time. Memperkenalkan lapisan siklus hidup
dinamika yang biasanya bukan bagian dari aplikasi. Mekanisme ketergantungan
luas digunakan untuk menjamin operasi yang benar dari lingkungan.
3. Layanan Registrasi (Services-Registry)
API untuk manajemen jasa (ServiceRegistration, ServiceTracker
dan ServiceReference).
OSGi Alliance yang telah ditentukan banyak layanan. Layanan
yang ditentukan oleh antarmuka Java. Kumpulan dapat mengimplementasikan
antarmuka ini dan mendaftarkan layanan dengan Layanan Registri. Layanan klien
dapat menemukannya di registri, atau bereaksi ketika muncul atau menghilang.
4. Life Cycle
API untuk manajemen siklus hidup untuk (instal, start, stop,
update, dan uninstall) bundel.
5. Modules
Lapisan yang mendefinisikan enkapsulasi dan deklarasi
dependensi (bagaimana sebuah bungkusan dapat mengimpor dan mengekspor kode).
6. Security
Layer yang menangani aspek keamanan dengan membatasi
fungsionalitas bundel untuk pra
didefinisikan kemampuan.
7. Execution Environment
Mendefinisikan metode dan kelas apa yang tersedia dalam platform
tertentu. Tidak ada daftar tetap eksekusi lingkungan, karena dapat berubah
sebagai Java Community Process menciptakan versi baru dan edisi Java.
Sumber :

