OSGi: Apa perbedaan antara Apache Felix dan Apache Karaf?

131

Apache Karaf adalah sub proyek dari Apache Felix . Ini didefinisikan sebagai "wadah OSGi ringan".

Saya tidak mengerti kapan saya harus menggunakan kelas berat dan kapan harus menggunakan kelas berat. Situs mereka tidak menjelaskan hal ini terlalu banyak.

GabiMe
sumber

Jawaban:

209

Label 'wadah OSGi ringan' kontras dengan Karaf dengan lebih banyak wadah OSGi yang kaya fitur, bukan dengan Felix .

Mengutip Guillaume Nodet (penulis Karaf) dari sini :

Felix hanyalah runtime inti OSGi. Karaf menyediakan "distribusi" berdasarkan Felix dengan menambahkan fitur-fitur lain seperti konsol, mekanisme remoting SSH, pengerahkan file dan banyak lagi.

Dalam diagram arsitektur Karaf ini, Felix (atau implementasi OSGi lainnya - saat ini Equinox juga didukung) adalah kotak OSGi, kotak lainnya adalah fitur yang ditambahkan oleh Karaf:

Arsitektur Karaf Karena itu, kecuali Anda memiliki kebutuhan khusus yang tidak dipenuhi oleh Karaf (membutuhkan akses ke implementasi yang mendasarinya), biasanya masuk akal untuk menggunakan ini karena menyediakan lebih banyak 'di luar kotak'.

Matthew Murdoch
sumber
5
Salah satu fitur bagus dari wadah OSGi adalah bahwa Anda dapat memilih hanya bundel yang Anda butuhkan dan menyebarkannya ke wadah Anda. Jadi saran saya adalah pertama-tama arsitek aplikasi Anda, dan kemudian pilih apa yang Anda butuhkan. Saran untuk "hanya menginstal seluruh platform karena kaya fitur" terdengar seperti kembali ke server aplikasi Java EE yang besar. Sekarang saya tidak mengatakan bahwa Apache Karaf hampir sama besar dengan itu, saya hanya menegaskan bahwa Anda dapat dan harus menggunakan apa yang sebenarnya Anda butuhkan.
Marcel Offermans
1
Menurut saya jawaban ini tidak lengkap karena tidak menyebutkan kasus penggunaan penyematan Felix dalam aplikasi (tanpa perlu menggunakan wadah seperti Karaf) - misalnya untuk memberikan kemampuan plugin - yang merupakan interpretasi saya tentang tautan berikut. Apakah aku salah? (Saya bukan ahli.) Tautan: felix.apache.org/documentation/subprojects/…
J Woodchuck
6

@Marcel Karaf tidak monolitik atau besar seperti server Java EE. Ini adalah implementasi yang sangat ramping dan minimalis. Ini adalah produk inti tanpa banyak fungsi selain konsol dasar, pemuatan file sehingga Anda benar-benar dapat membaca file konfigurasi, dll. File zip terbaru itu adalah 19,1 MB. Ya. Kecil. Itu dapat dengan mudah dijalankan pada perangkat kecil dan bekerja di embedded.

Apa yang mungkin Anda pikirkan adalah sesuatu yang lebih seperti ServiceMix yang menggunakan Karaf sebagai inti / kernel. Tapi itu termasuk CXF, ActiveMQ, Camel dan perpustakaan lain dalam konfigurasi penuhnya. Bahkan mereka memiliki ukuran minimal, sedang dan penuh.

Sungguh, untuk 99% proyek di luar sana tidak masuk akal untuk memulai langsung dengan Felix dan tidak menggunakan Karaf sebagai gantinya.

Ranx0r0x
sumber
-1

Saat ini, ada tiga wadah OSGi open source yang populer:

  - Equinox. It is the modular Java runtime at the heart of the Eclipse IDE,
  - Knopflerfish, Is an open source implementation of the OSGi R3 and OSGi R4 specifications. 
  - Apache Felix. Is the open source OSGi container from the Apache Software Foundation.

http://www.javaworld.com/article/2077837/java-se/java-se-hello-osgi-part-1-bundles-for-beginners.html

Proyek Apache mempertahankan wadah OSGi serba guna yang disebut Felix. Di sini digunakan sebagai ServiceMix dan

Perbedaan utama antara ServiceMix dan Karaf adalah bahwa ServiceMix menggabungkan banyak komponen integrasi lainnya - broker pesan ActiveMQ, mesin perutean Camel, dan beberapa hal lainnya

Menurut: http://kevinboone.net/osgitest.html

Alejandro Hdz
sumber