Helo, OSGi, Bahagian 1: Kumpulan untuk pemula

Open Services Gateway Initiative (OSGi) mendefinisikan seni bina untuk mengembangkan dan menggunakan aplikasi dan perpustakaan modular. Dalam artikel pertama ini dalam pengenalan tiga bahagian untuk OSGi, Sunil Patil memberi anda permulaan dengan konsep pengembangan OSGi dan menunjukkan kepada anda bagaimana membina aplikasi Hello World yang mudah menggunakan implementasi kontena Eclipse OSGi, Equinox. Dia juga menyentuh secara ringkas mengenai membina aplikasi yang berorientasikan perkhidmatan menggunakan OSGi dan memperkenalkan OSGi ServiceFactorydan ServiceTrackerkelas.

Open Services Gateway Initiative (OSGi), juga dikenal sebagai Sistem Modul Dinamik untuk Java, mendefinisikan seni bina untuk pengembangan aplikasi modular. Pelaksanaan kontena OSGi seperti Knopflerfish, Equinox, dan Apache Felix membolehkan anda memecah aplikasi anda ke dalam beberapa modul dan dengan itu menguruskan pergantungan silang antara mereka dengan lebih mudah.

OSGi, Equinox, dan Project Jigsaw

Dapatkan pandangan dunia nyata dengan mempelajari pelajaran yang dipelajari semasa integrasi OSGi / Equinox di projek sains terbesar di UK, kemudian cari tahu apa yang boleh anda harapkan dari Project Jigsaw di Java 9.

Sama seperti spesifikasi Java Servlet dan EJB, spesifikasi OSGi mendefinisikan dua perkara: satu set perkhidmatan yang mesti dilaksanakan oleh kontena OSGi dan kontrak antara kontena dan aplikasi anda. Membangunkan platform OSGi bermaksud membina aplikasi anda terlebih dahulu menggunakan OSGi API, kemudian menyebarkannya dalam wadah OSGi. Dari perspektif pemaju, OSGi menawarkan kelebihan berikut:

  • Anda boleh memasang, menyahpasang, memulakan, dan menghentikan modul aplikasi anda secara dinamik tanpa memulakan semula bekas.
  • Aplikasi anda boleh menjalankan lebih daripada satu versi modul tertentu pada masa yang sama.
  • OSGi menyediakan infrastruktur yang sangat baik untuk mengembangkan aplikasi berorientasikan perkhidmatan, serta aplikasi internet tertanam, mudah alih, dan kaya.

Memandangkan anda menggunakan wadah servlet untuk membina aplikasi Web dan kontena EJB untuk membina aplikasi transaksi, anda mungkin tertanya-tanya mengapa anda memerlukan jenis kontena yang lain. Jawapan ringkasnya ialah wadah OSGi ditujukan khusus untuk mengembangkan aplikasi Java yang kompleks yang ingin anda pecah menjadi modul. Saya akan menerangkan jawapan ringkas sepanjang siri ini.

Helo, OSGi: Baca siri ini

  • Bahagian 1: Kumpulan untuk pemula
  • Bahagian 2: Memperkenalkan Spring Dynamic Modules
  • Bahagian 3: Bawa ke pelayan

OSGi dalam aplikasi perusahaan

Pengerjaan spesifikasi OSGi telah dimulakan oleh OSGi Alliance pada bulan Mac 1999. Matlamat utamanya adalah untuk membuat spesifikasi terbuka untuk menyampaikan perkhidmatan yang dikendalikan ke rangkaian dan peranti tempatan. Idea asasnya ialah apabila anda menambahkan Platform Perkhidmatan OSGi ke peranti rangkaian (tertanam dan juga pelayan), anda seharusnya dapat menguruskan kitaran hidup komponen perisian dalam peranti tersebut dari mana saja di rangkaian. Komponen perisian boleh dipasang, dikemas kini, atau dikeluarkan dengan cepat tanpa perlu mengganggu operasi peranti.

Selama bertahun-tahun, teknologi OSGi telah berkembang di pasaran sistem dan rangkaian peranti tertanam. Sekarang, terima kasih sebahagiannya untuk Eclipse, OSGi muncul sebagai teknologi yang layak dan berharga untuk pengembangan perusahaan.

Sokongan yang semakin meningkat untuk OSGi

Pada tahun 2003, pasukan pengembangan Eclipse mula mencari cara untuk menjadikan Eclipse sebagai platform klien kaya yang lebih dinamik dan meningkatkan modulariti set alat. Akhirnya, pasukan ini tetap menggunakan kerangka OSGi sebagai model komponen runtime. Eclipse 3.0, dirilis pada bulan Jun 2004, adalah versi pertama Eclipse berdasarkan OSGi.

Hampir semua pelayan aplikasi perusahaan menyokong atau merancang untuk menyokong OSGi. Kerangka Spring juga menyokong OSGi, melalui Spring Dynamic Modules untuk projek Platform Perkhidmatan OSGi, yang menyediakan lapisan infrastruktur untuk mempermudah penggunaan OSGi dalam pengembangan aplikasi perusahaan Java yang berbasis di Spring.

Bekas OSGi sumber terbuka

Dari sudut pandang pemaju perusahaan, wadah OSGi mempunyai jejak yang rendah sehingga anda dapat dengan mudah memasukkannya ke dalam aplikasi perusahaan. Sebagai contoh, katakan anda sedang membangunkan aplikasi Web yang kompleks. Anda ingin memecah aplikasi menjadi beberapa modul: satu modul untuk lapisan pandangan, yang lain untuk lapisan DAO, dan modul ketiga untuk lapisan akses data. Menggunakan wadah OSGi yang tersemat untuk menguruskan pergantungan silang modul ini akan membolehkan anda mengemas kini lapisan DAO anda (katakan dari DAO lambat hingga DAO cepat) tanpa memulakan semula aplikasi anda.

Selagi aplikasi anda mematuhi spesifikasi OSGi, aplikasi tersebut harus dapat dijalankan di mana-mana wadah yang mematuhi OSGi. Pada masa ini, terdapat tiga bekas OSGi sumber terbuka yang popular:

  • Equinox adalah implementasi rujukan untuk bahagian kerangka dari Peluncuran Platform Perkhidmatan OSGi 4. Ini adalah runtime Java modular di tengah-tengah Eclipse IDE, dan menerapkan semua fitur wajib dan sebagian besar pilihan opsyen spesifikasi OSGi R4.
  • Knopflerfish adalah pelaksanaan sumber terbuka spesifikasi OSGi R3 dan OSGi R4. Knopflerfish 2 menerapkan semua ciri wajib dan beberapa ciri pilihan yang ditentukan dalam spesifikasi R4.
  • Apache Felix adalah wadah OSGi sumber terbuka dari Apache Software Foundation. Pada masa penulisan wadah ini tidak sepenuhnya mematuhi spesifikasi OSGI R4.

Dalam artikel ini kami akan menggunakan Equinox sebagai wadah OSGi kami. Lihat bahagian Sumber untuk maklumat lebih lanjut mengenai Apache Felix dan Knopflerfish.