apa manfaat yang diberikan sistem komponen OSGi bagi Anda?
Nah, ini daftar yang cukup lengkap:
Berkurang Kompleksitas - Berkembang dengan teknologi OSGi berarti mengembangkan bundel: komponen OSGi. Bundel adalah modul. Mereka menyembunyikan internal mereka dari bundel lain dan berkomunikasi melalui layanan yang terdefinisi dengan baik. Menyembunyikan internal berarti lebih banyak kebebasan untuk berubah nanti. Ini tidak hanya mengurangi jumlah bug, itu juga membuat bundel lebih mudah untuk dikembangkan karena bundel berukuran benar menerapkan sepotong fungsi melalui antarmuka yang terdefinisi dengan baik. Ada blog yang menarik yang menggambarkan apa yang dilakukan teknologi OSGi untuk proses pengembangan mereka.
Reuse - Model komponen OSGi membuatnya sangat mudah untuk menggunakan banyak komponen pihak ketiga dalam suatu aplikasi. Semakin banyak proyek sumber terbuka menyediakan JAR mereka yang siap dibuat untuk OSGi. Namun, perpustakaan komersial juga tersedia sebagai bundel siap pakai.
Dunia nyata -Kerangka kerja OSGi bersifat dinamis. Itu dapat memperbarui bundel dengan cepat dan layanan dapat datang dan pergi. Pengembang yang terbiasa dengan Java yang lebih tradisional melihat ini sebagai fitur yang sangat bermasalah dan gagal melihat keuntungannya. Namun, ternyata dunia nyata sangat dinamis dan memiliki layanan dinamis yang dapat datang dan pergi membuat layanan ini sangat cocok untuk banyak skenario dunia nyata. Misalnya, layanan dapat memodelkan perangkat di jaringan. Jika perangkat terdeteksi, layanan terdaftar. Jika perangkat hilang, layanan tidak terdaftar. Ada sejumlah skenario dunia nyata yang cocok dengan model layanan dinamis ini. Oleh karena itu aplikasi dapat menggunakan kembali primitif kuat dari registri layanan (daftar, dapatkan, daftar dengan bahasa filter ekspresif, dan menunggu layanan muncul dan menghilang) di domain mereka sendiri. Ini tidak hanya menghemat kode penulisan, tetapi juga menyediakan visibilitas global, alat debugging, dan lebih banyak fungsi daripada yang akan diterapkan untuk solusi khusus. Menulis kode dalam lingkungan yang dinamis terdengar seperti mimpi buruk, tetapi untungnya, ada kelas dan kerangka kerja pendukung yang mengambil sebagian besar, jika tidak semua, dari rasa sakit itu.
Penempatan Mudah - Teknologi OSGi bukan hanya standar untuk komponen. Ini juga menentukan bagaimana komponen dipasang dan dikelola. API ini telah digunakan oleh banyak bundel untuk menyediakan agen manajemen. Agen manajemen ini dapat sesederhana shell perintah, driver protokol manajemen TR-69, driver protokol OMA DM, antarmuka komputasi awan untuk EC2 Amazon, atau sistem manajemen IBM Tivoli. API manajemen terstandarisasi membuatnya sangat mudah untuk mengintegrasikan teknologi OSGi dalam sistem yang ada dan yang akan datang.
Pembaruan Dinamis - Model komponen OSGi adalah model dinamis. Bundel dapat diinstal, dimulai, dihentikan, diperbarui, dan dihapus instalasinya tanpa menjatuhkan keseluruhan sistem. Banyak pengembang Java tidak percaya ini dapat dilakukan dengan andal dan karena itu pada awalnya tidak menggunakan ini dalam produksi. Namun, setelah menggunakan ini dalam pengembangan selama beberapa waktu, sebagian besar mulai menyadari bahwa itu benar-benar berfungsi dan secara signifikan mengurangi waktu penyebaran.
Adaptif - Model komponen OSGi dirancang dari bawah ke atas untuk memungkinkan pencampuran dan pencocokan komponen. Ini mensyaratkan bahwa dependensi komponen perlu ditentukan dan memerlukan komponen untuk hidup di lingkungan di mana dependensi opsionalnya tidak selalu tersedia. Registri layanan OSGi adalah registri dinamis di mana bundel dapat mendaftar, mendapatkan, dan mendengarkan layanan. Model layanan dinamis ini memungkinkan bundel untuk mengetahui kemampuan apa yang tersedia pada sistem dan menyesuaikan fungsionalitas yang dapat mereka berikan. Ini membuat kode lebih fleksibel dan tahan terhadap perubahan.
Transparansi - Bundel dan layanan adalah warga negara kelas satu di lingkungan OSGi. API manajemen menyediakan akses ke status internal bundel serta bagaimana terhubung ke bundel lain. Sebagai contoh, sebagian besar kerangka menyediakan shell perintah yang menunjukkan keadaan internal ini. Bagian dari aplikasi dapat dihentikan untuk men-debug masalah tertentu, atau bundel diagnostik dapat dibawa masuk. Alih-alih menatap jutaan baris output logging dan waktu reboot yang lama, aplikasi OSGi sering dapat di-debug dengan shell perintah hidup.
Versi - teknologi OSGi memecahkan neraka JAR. JAR adalah masalah yang perpustakaan A bekerja dengan perpustakaan B; versi = 2, tetapi perpustakaan C hanya dapat bekerja dengan B; versi = 3. Di Jawa standar, Anda kurang beruntung. Dalam lingkungan OSGi, semua bundel diversi dengan cermat dan hanya bundel yang dapat berkolaborasi yang ditransfer bersama di ruang kelas yang sama. Ini memungkinkan bundel A dan C berfungsi dengan pustaka mereka sendiri. Meskipun tidak disarankan untuk merancang sistem dengan masalah versi ini, ini bisa menjadi penyelamat dalam beberapa kasus.
Sederhana - API OSGi ternyata sangat sederhana. API inti hanya satu paket dan kurang dari 30 kelas / antarmuka. API inti ini cukup untuk menulis bundel, menginstalnya, memulai, menghentikan, memperbarui, dan mencopotnya dan mencakup semua kelas pendengar dan keamanan. Ada sangat sedikit API yang menyediakan fungsionalitas sangat banyak untuk API yang begitu sedikit.
Kecil - Kerangka OSGi Release 4 dapat diimplementasikan dalam file JAR sekitar 300KB. Ini adalah overhead kecil untuk jumlah fungsionalitas yang ditambahkan ke aplikasi dengan memasukkan OSGi. Oleh karena itu OSGi berjalan pada sejumlah besar perangkat: dari sangat kecil, kecil, hingga mainframe. Hanya meminta Java VM minimal untuk dijalankan dan menambahkan sangat sedikit di atasnya.
Cepat - Salah satu tanggung jawab utama kerangka OSGi adalah memuat kelas dari bundel. Di Jawa tradisional, JAR sepenuhnya terlihat dan ditempatkan pada daftar linier. Pencarian kelas memerlukan pencarian melalui daftar ini (seringkali sangat panjang, 150 tidak jarang). Sebaliknya, OSGi pra-kabel bundel dan tahu untuk masing-masing bundel bundel mana yang menyediakan kelas. Kurangnya pencarian adalah faktor percepatan yang signifikan pada saat startup.
Malas - Malas dalam perangkat lunak baik dan teknologi OSGi memiliki banyak mekanisme untuk melakukan hal-hal hanya ketika mereka benar-benar dibutuhkan. Sebagai contoh, bundel dapat dimulai dengan penuh semangat, tetapi mereka juga dapat dikonfigurasi untuk hanya mulai ketika bundel lain menggunakannya. Layanan dapat didaftarkan, tetapi hanya dibuat saat digunakan. Spesifikasi telah dioptimalkan beberapa kali untuk memungkinkan jenis skenario malas yang dapat menghemat biaya runtime yang luar biasa.
Aman - Java memiliki model keamanan berbutir halus yang sangat kuat di bagian bawah tetapi ternyata sangat sulit untuk dikonfigurasi dalam praktik. Hasilnya adalah aplikasi Java yang paling aman dijalankan dengan pilihan biner: tidak ada keamanan atau kemampuan yang sangat terbatas. Model keamanan OSGi memanfaatkan model keamanan berbutir halus tetapi meningkatkan kegunaan (serta pengerasan model asli) dengan meminta pengembang bundel menentukan rincian keamanan yang diminta dalam bentuk yang mudah diaudit sementara operator lingkungan tetap sepenuhnya bertanggung jawab. Secara keseluruhan, OSGi kemungkinan menyediakan salah satu lingkungan aplikasi paling aman yang masih dapat digunakan di bawah platform komputasi yang dilindungi perangkat keras.
Non Intrusive - Aplikasi (bundel) di lingkungan OSGi dibiarkan sendiri. Mereka dapat menggunakan hampir semua fasilitas VM tanpa OSGi membatasi mereka. Praktik terbaik dalam OSGi adalah menulis Plain Old Java Objects dan untuk alasan ini, tidak ada antarmuka khusus yang diperlukan untuk layanan OSGi, bahkan objek Java String dapat bertindak sebagai layanan OSGi. Strategi ini membuat kode aplikasi lebih mudah untuk port ke lingkungan lain.
Berjalan Di Mana Saja - Ya, itu tergantung. Tujuan asli Jawa adalah menjalankan di mana saja. Jelas, tidak mungkin untuk menjalankan semua kode di mana-mana karena kemampuan Java VM berbeda. VM di ponsel kemungkinan tidak akan mendukung perpustakaan yang sama dengan mainframe IBM yang menjalankan aplikasi perbankan. Ada dua masalah yang harus diurus. Pertama, OSGi API tidak boleh menggunakan kelas yang tidak tersedia di semua lingkungan. Kedua, bundel tidak boleh dimulai jika berisi kode yang tidak tersedia di lingkungan eksekusi. Kedua masalah ini telah diurus dalam spesifikasi OSGi.
Sumber: www.osgi.org/Technology/WhyOSGi