Halo, OSGi, Bagian 1: Kumpulan untuk pemula

Open Services Gateway Initiative (OSGi) mendefinisikan arsitektur untuk mengembangkan dan menerapkan aplikasi dan pustaka modular. Dalam artikel pertama dalam pengantar tiga bagian OSGi ini, Sunil Patil membantu Anda memulai dengan konsep pengembangan OSGi dan menunjukkan kepada Anda bagaimana membuat aplikasi Hello World sederhana menggunakan implementasi container Eclipse OSGi, Equinox. Dia juga menyentuh secara singkat tentang membangun aplikasi berorientasi layanan menggunakan OSGi dan memperkenalkan OSGi ServiceFactorydan ServiceTrackerkelasnya.

Open Services Gateway Initiative (OSGi), juga dikenal sebagai Sistem Modul Dinamis untuk Java, mendefinisikan arsitektur untuk pengembangan aplikasi modular. Implementasi container OSGi seperti Knopflerfish, Equinox, dan Apache Felix memungkinkan Anda memecah aplikasi Anda menjadi beberapa modul dan dengan demikian lebih mudah mengelola ketergantungan silang di antara keduanya.

OSGi, Equinox, dan Project Jigsaw

Dapatkan pandangan dunia nyata dengan mempelajari pelajaran yang didapat selama integrasi OSGi / Equinox di proyek sains terbesar di Inggris, kemudian cari tahu apa yang dapat Anda harapkan dari Project Jigsaw di Java 9.

Mirip dengan spesifikasi Java Servlet dan EJB, spesifikasi OSGi mendefinisikan dua hal: sekumpulan layanan yang harus diterapkan oleh container OSGi dan kontrak antara container dan aplikasi Anda. Mengembangkan pada platform OSGi berarti pertama-tama membangun aplikasi Anda menggunakan API OSGi, kemudian menerapkannya dalam wadah OSGi. Dari perspektif pengembang, OSGi menawarkan keuntungan berikut:

  • Anda dapat memasang, mencopot pemasangan, memulai, dan menghentikan berbagai modul aplikasi Anda secara dinamis tanpa memulai ulang penampung.
  • Aplikasi Anda dapat memiliki lebih dari satu versi modul tertentu yang berjalan pada waktu yang sama.
  • OSGi menyediakan infrastruktur yang sangat baik untuk mengembangkan aplikasi berorientasi layanan, serta aplikasi tertanam, seluler, dan kaya internet.

Mengingat bahwa Anda menggunakan wadah servlet untuk membangun aplikasi Web dan wadah EJB untuk membangun aplikasi transaksional, Anda mungkin bertanya-tanya mengapa Anda membutuhkan jenis wadah lain. Jawaban singkatnya adalah wadah OSGi ditujukan secara khusus untuk mengembangkan aplikasi Java kompleks yang ingin Anda bagi menjadi modul. Saya akan memperluas jawaban singkat itu di seluruh seri ini.

Halo, OSGi: Baca serialnya

  • Bagian 1: Kumpulan untuk pemula
  • Bagian 2: Memperkenalkan Modul Dinamis Musim Semi
  • Bagian 3: Bawa ke sisi server

OSGi dalam aplikasi perusahaan

Pengerjaan spesifikasi OSGi dimulai oleh OSGi Alliance pada Maret 1999. Tujuan utamanya adalah menciptakan spesifikasi terbuka untuk memberikan layanan terkelola ke jaringan dan perangkat lokal. Ide dasarnya adalah setelah Anda menambahkan Platform Layanan OSGi ke perangkat jaringan (tertanam serta server), Anda harus dapat mengelola siklus hidup komponen perangkat lunak di perangkat itu dari mana saja di jaringan. Komponen perangkat lunak dapat dipasang, diperbarui, atau dihapus dengan cepat tanpa harus mengganggu pengoperasian perangkat.

Selama bertahun-tahun, teknologi OSGi telah berkembang pesat di pasar sistem tertanam dan perangkat jaringan. Sekarang, sebagian berkat Eclipse, OSGi muncul sebagai teknologi yang layak dan berharga untuk pengembangan perusahaan.

Menumbuhkan dukungan untuk OSGi

Pada tahun 2003, tim pengembangan Eclipse mulai mencari cara untuk membuat Eclipse menjadi platform klien kaya yang lebih dinamis dan meningkatkan modularitas perangkat. Akhirnya, tim memutuskan untuk menggunakan kerangka OSGi sebagai model komponen waktu proses. Eclipse 3.0, dirilis pada Juni 2004, adalah versi pertama dari Eclipse berdasarkan OSGi.

Hampir semua server aplikasi perusahaan mendukung atau berencana untuk mendukung OSGi. Kerangka kerja Spring juga mendukung OSGi, melalui proyek Spring Dynamic Modules for OSGi Service Platforms, yang menyediakan lapisan infrastruktur untuk mempermudah penggunaan OSGi dalam pengembangan aplikasi enterprise Java berbasis Spring.

Kontainer OSGi open source

Dari sudut pandang pengembang perusahaan, wadah OSGi memiliki footprint yang sangat rendah sehingga Anda dapat dengan mudah menyematkannya ke dalam aplikasi perusahaan. Misalnya, Anda sedang mengembangkan aplikasi Web yang kompleks. Anda ingin memecah aplikasi menjadi beberapa modul: satu modul untuk lapisan tampilan, modul lainnya untuk lapisan DAO, dan modul ketiga untuk lapisan akses data. Menggunakan wadah OSGi yang disematkan untuk mengelola ketergantungan silang dari modul ini akan memungkinkan Anda untuk memperbarui lapisan DAO Anda (katakanlah dari DAO lambat ke DAO cepat) tanpa memulai ulang aplikasi Anda.

Selama aplikasi Anda sesuai dengan spesifikasi OSGi, aplikasi tersebut harus dapat berjalan di container yang sesuai dengan OSGi. Saat ini, ada tiga wadah OSGi open source yang populer:

  • Equinox adalah implementasi referensi untuk bagian kerangka OSGi Service Platform Rilis 4. Ini adalah runtime Java modular di jantung IDE Eclipse, dan mengimplementasikan semua fitur wajib dan sebagian besar fitur opsional spesifikasi OSGi R4.
  • Knopflerfish adalah implementasi open source dari spesifikasi OSGi R3 dan OSGi R4. Knopflerfish 2 mengimplementasikan semua fitur wajib dan beberapa fitur opsional yang ditentukan dalam spesifikasi R4.
  • Apache Felix adalah wadah OSGi open source dari Apache Software Foundation. Pada saat penulisan, wadah ini tidak sepenuhnya sesuai dengan spesifikasi OSGI R4.

Pada artikel ini kita akan menggunakan Equinox sebagai wadah OSGi kita. Lihat bagian Sumber Daya untuk informasi lebih lanjut tentang Apache Felix dan Knopflerfish.