Merupakan serangkaian spesifikasi yang mendefinisikan sebuah sistem komponen dinamik untuk Java. Spesifikasi ini memungkinkan sebuah model pengembangan dimana aplikasi (secara dinamis) disusun dari bermacam komponen (yang dapat digunakan ulang) berbeda. Spesifikasi OSGi memungkinkan komponen untuk menyembunyikan implementasi mereka dari komponen lainnya sementara berkomunikasi menggunakan service, dimana objeknya secara khusus dibagi diantara komponen. Model sederhana ini secara mengejutkan telah mencapai efek untuk hampir semua aspek dari proses pengembangan perangkat lunak. OSGi merupakan teknologi pertama yang berhasil memecahkan masalah-masalah nyata dalam pengembangan perangkat lunak dengan menggunakan sebuah komponen sistem. Pengguna teknologi OSGi melihat pengurangan kompleksitas yang signifikan hampir dalam semua aspek pengembangan perangkat lunak. Kode program yang lebih mudah ditulis dan diuji, dapat dipakai ulang, membangun sistem menjadi lebih mudah, pembukaan yang lebih dapat diatur, bugs yang dapat dideteksi lebih cepat dan runtime yang menyediakan sebuah tanda yang memberitahu apa yang sedang berjalan.
OSGi mempunyai lapisan seperti pada gambar berikut ini:
- Bundles
Merupakan komponen OSGi yang dibuat oleh pengembang.
- Services
Lapisan services menghubungkan bundles dalam sebuah jalan dinamik dengan menawarkan sebuah model mengumumkan-mencari-mengikat untuk menjelaskan objek lama Java.
- Life Cycle
API yang harus diinstall, dijalankan, dihentikan, diperbarui, dan bundle dihilangkan.
- Modules
Merupakan lapisan yang menjelaskan bagaimana bundles menjadi sangat penting dan mengekspor kode.
- Security
Lapisan yang menangani keamanan.
- Execution Environment
Menjelaskan metoda dan kelas apa yang tersedia dalam platform yang spesifik.
http://code86.wordpress.com/2009/12/20/middleware-osgi-ami-c-jcp/