Minggu, 20 Januari 2013

Open Service Gateway Initiative (OSGI) , Virtualization, dan API



  • Gateway Initiative (OSGI)
A. Pengertian Gateway Initiative (OSGI)
OSGI adalah sebuah rencana industri untuk cara standar dalam menghubungkan suatu perangkat seperti perangkat rumah tangga dan sistem keamanan ke internet. OSGI berencana untuk menentukan suatu program aplikasi antarmuka (API) untuk pemrograman yang memungkinkan komunikasi dan kontrol antara penyedia layanan dan perangkat di dalam rumah atau usaha kecil. Pada dasarnya OSGI ini di kembangkan dengan menggunakan bahasa pemrograman JAVA.
Arsitektur (Architecture)
Setiap kerangka yang menerapkan standar OSGi menyediakan suatu lingkungan untuk modularisasi aplikasi ke dalam bundel kecil. Setiap bundel adalah koleksi, erat dynamically loadable kelas, guci, dan file konfigurasi yang secara eksplisit menyatakan dependensi eksternal mereka (jika ada).
Kerangka ini secara konseptual dibagi menjadi bidang-bidang berikut:
 Bundel
Bundel normal jar komponen dengan nyata tambahan header.
 Layanan
Lapisan layanan menghubungkan bundel dalam cara yang dinamis dengan menawarkan model menerbitkan-menemukan-bind untuk polos Interfaces Java tua (POJI) atau Plain Old Java Objects POJO
 Layanan Registry
The API untuk jasa manajemen (ServiceRegistration , ServiceTracker dan ServiceReference).
 Life-Cycle
The API ntuk manajemen siklus hidup untuk (instal, start, stop, update, dan uninstall) bundel.
 Modul
Lapisan ang mendefinisikan enkapsulasi dan deklarasi dependensi (bagaimana sebuah bungkusan dapat mengimpor dan mengekspor kode).
 Keamanan
Lapisan yang menangani aspek keamanan dengan membatasi fungsionalitas bundel untuk pra-didefinisikan kemampuan.
 Eksekusi Lingkungan
Mendefinisikan apa yang metode dan kelas yang tersedia dalam platform tertentu. Tidak ada daftar tetap eksekusi lingkungan, karena dapat berubah sebagai Java Community Process menciptakan versi baru dan edisi Jawa. Namun, set berikut saat ini didukung oleh implementasi OSGi yang paling:
 CDC-1.0/Foundation-1.0
 CDC-1.1/Foundation-1.1
 OSGi/Minimum-1.0
 OSGi/Minimum-1.1
 JRE-1.1
 Dari J2SE-1.2 hingga J2SE-1.6
Bundles (Kumpulan)
Bundel adalah sekelompok kelas Java dan sumber daya tambahan yang dilengkapi dengan manifes rinci MANIFEST.MF file pada semua isinya, serta layanan tambahan yang diperlukan untuk memberikan kelompok termasuk kelas Java perilaku yang lebih canggih, sejauh deeming seluruh agregat komponen.
Di bawah ini adalah contoh khas MANIFEST.MF file dengan Headers OSGi:
Bundle-Nama: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: Sebuah bundel Hello World
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Ekspor-Paket: org.wikipedia.helloworld, version = “1.0.0″
Impor-Paket: org.osgi.framework, version = “1.3.0″
Makna dari isi dalam contoh adalah sebagai berikut :
 Bundle-Nama: Mendefinisikan nama terbaca-manusia untuk bundel ini, Cukup memberikan nama pendek untuk bundel.
 Bundle-SymbolicName: Header hanya diperlukan, entri ini menetapkan pengenal unik untuk bundel, berdasarkan konvensi nama domain terbalik (digunakan juga oleh paket java ).
 Bundle-Description: Penjelasan mengenai fungsi bundel itu.
 Bundle-ManifestVersion: Menunjukkan spesifikasi OSGi digunakan untuk membaca bundel ini.
 Bundle-Version: menunjuk nomor versi ke bundel.
 Bundle-Activator: Menunjukkan nama kelas yang akan dipanggil sekali bundel diaktifkan.
 Ekspor-Paket: mengungkapkan mana Java paket yang terkandung dalam sebuah kemasan akan dibuat tersedia untuk dunia luar.
 Impor-Paket: Menunjukkan mana Java paket akan diperlukan dari dunia luar untuk memenuhi dependensi yang dibutuhkan dalam sebuah kemasan.

B. Manfaat OSGI
1. Mengurangi Kompleksitas
Dengan cara menyembunyikan bundel (modul) internal berarti memberikan lebih banyak kebebasan untuk berubah nantinya. Hal ini berguna tidak hanya untuk sekedar mengurangi jumlah bug, tetapi juga membuat kumpulan sederhana untuk berkembang.
2. Reuse
Membuat model OSGI menjadi lebih mudah dalam menggunakan banyak komponen dalam satu aplikasi. Serta peningkatan jumlah proyek-proyek sumber terbuka memberikan JAR mereka untuk siap di buat OSGI.
3. Real Word
Karena OSGI merupakan kerangaka kerja yang dinamis, maka dapat memperbarui bundel on the fly dan pelayanan yang datang dan pergi.
4. Easy Deployment
Teknologi OSGI bukan hanya sebuah standard untuk komponen saja, tetapi juga menentukan bagaimana komponen diinstal dan di kelola.
5. Dynamic Updates
Model komponen OSGI adalah model dinamis, karena komponennya dapat diinstal, play, stop, updates, dan delete tanpa harus menurunkan keseluuhan sistem.
6. Simple
OSGI API sangat sederhana karena API inti hanya terdiri dari satu paket dan kurang dari 30 kelas.
7. Small (kecil)
OSGI Release 4 Framework dapat diimplementasikan kedalam JAR 300KB. Ini adalah Overhead kecil untuk jumlah fungsi yang ditambahkan ke salah satu aplikasi dengan memasukkan OSGI. Oleh karena itu OSGI mampu berjalan pada berbagai macam perangkat : dari yang sangat kecil, kecil dan untuk mainframe.
8. Cepat (fast)
Salah satu tanggung jawab utama dari Framework OSGi memuat kelas-kelas dari bundel.Di Java tradisional, JARs benar-benar terlihat dan ditempatkan pada daftar linear. Pencarian sebuah kelas memerlukan pencarian melalui daftar ini. Sebaliknya, pra-kabel OSGi bundel dan tahu persis untuk setiap bundel bundel yang menyediakan kelas. Kurangnya pencarian yang signifikan faktor mempercepat saat startup.

  • Virtualization
A. Pengertian Virtualization
Virtualization atau Virtualisasi memiliki banyak pengertian. Dalam kamus bahasa indonesia sendiri belum ditemukan secara jelas pengertian dari virtualisasi. Namun jika kita melihat pada kamus OXFORD istilah virtualization merupakan turunan dari kata virtualize yang memiliki makan "mengubah sesuatu (mengkoversi) ke bentuk simulasi dari bentuk nyata yang ada". Di bidang teknologi informasi, virtualization digunakan sebagai sarana untuk improvisasi skalabilitas dari hardware yang ada.
Dengan visualization, beberapa sistem operasi dapat berjalan secara bersamaan pada satu buah CPU. Hal ini tentunya dapat mengurangi biaya yang dapat dikeluarkan oleh sebuah perusahaan.
Dalam hardware visualization, perangkat lunak bekerja membentuk sebuah virtual machine yang bertindak seolah-olah seperti sebuah komputer asli dengan sebuah sistem operasi terinstal didalamnya. Sebagai salah satu contoh yang mudah misalkan terdapat satu buah komputer yang telah terinstal GNU/Linux Ubuntu. Kemudian dengan menggunakan perangkat lunak virtualization semisal virtualbox kita dapat menginstal dua buah sistem operasi lain sebagai contoh WindowsXP dan Free BSD.
Perangkat lunak yang digunakan untuk menciptakan virtual machine pada host machine biasa disebut sebagai hypervisor atau Virtual Machine Monitor (VMM). Menurut Robert P. Goldberg pada tesisnya yang berjudul “Architectural Principles For Virtual Computer Systems” pada hal 23 menyebutkan bahwa tipe-tipe dari VMM ada 2 yaitu :
• Type 1 berjalan pada fisik komputer yang ada secara langsung. Pada jenis ini hypervisor / VMM benar-benar mengontrol perangkat keras dari komputer host-nya. Termasuk mengontrol sistem operasi-sistem operasi guest-nya. Contoh implementasi yang ada dan sudah saya coba secara langsung ialah VMWare ESXi. Adapun contoh yang lain yang ada seperti Microsoft Hyper-V
• Type 2 berjalan pada sistem operasi diatasnya. Pada tipe ini tentunya guest sistem operasi nya berada di layer diatasnya lagi.


  • API (Application Program Interface)
A. Pengertian API (Application Program Interface)
Merupakan suatu dokumentasi yang terdiri dari antar muka, fungsi, kelas, struktur dan sebagainya untuk membangun suatu perangkat lunak. Dengan adanya API ini maka akan mempermudah seorang programmer untuk membongkar suatu software untuk kemudian dapat dikembangkan atau diintegrasikan dengan perangkat lunak yang lain.
API dapat dikatakan sebagai penghubung suatu aplikasi dengan aplikasi lainnya. Suatu rutin standar yang dilakukan seorang programmer menggunakan system function. Proses ini dikelola melalui operating system. Keunggulan dari API ini adalah memungkin kan suatu aplikai saling berintegrasi dengan aplikai lainnya.

B. Keuntungan memprogram dengan menggunakan API

  1. Portabilitas : Programmer yang menggunakan API dapat menjalankan programnya dalam sistem operasi mana saja asalkan sudah terinstal API tersebut.
  2. Lebih mudah dimengerti : Karena API menggunakan bahasa yang lebih terstruktur dan lebih mudah dimengerti dari pada bahasa system call. System call interface ini berfungsi sebagai penghubung antara API dan system call yang dimengerti oleh sistem operasi. System call interface ini akan menerjemahkan perintah dalam API dan kemudian akan memanggil system calls yang diperlukan.