Rabu, 16 Januari 2013

OSGI, VIRTUALIZATION, & API ???


(Open Service Gateway Initiative)

OSGI  ??? apa itu OSGI ?? OSGI merupakan kependekan dari (Open Service Gateway Initiative) yang artinya adalah  sebuah rencana industri untuk cara standar, menghubungkan perangkat seperti perangkat rumah tangga dan sistem keamanan ke Internet, memungkinkan komunikasi dan kontrol antara penyedia layanan dan perangkat di dalam rumah atau usaha kecil jaringan. OSGI API akan dibangun pada bahasa pemrograman Java. Program java pada umumnya dapat berjalan pada platform sistem operasi komputer. OSGI adalah sebuah interface pemrograman standar terbuka 
yang berdiri pada Maret 1999 dengan nama sebelumnya adalah The OSGI Alliance (sebelumnya dikenal sebagai Open Services Gateway inisiatif ).

OSGI framework

Kerangka OSGI merupakan sistem modul dan layanan platform untuk bahasa pemrograman Java yang menerapkan lengkap dan dinamis model komponen. Aplikasi atau komponen (datang dalam bentuk dari bundel untuk penyebaran) dapat jarak jauh diinstal, mulai, berhenti, diperbarui, dan dihapus tanpa memerlukan restart, pengelolaan paket Java / kelas ditentukan dengan sangat rinci. Aplikasi manajemen siklus hidup (start, stop, install, dll) dilakukan melalui API yang memungkinkan untuk remote download dari kebijakan manajemen. Registri layanan memungkinkan berkas untuk mendeteksi penambahan layanan baru, atau penghapusan layanan dan beradaptasi sesuai.


Spesifikasi OSGI telah bergerak melampaui fokus asli gateway layanan, dan sekarang digunakan dalam beberapa aplikasi yaitu :


  • Dari ponsel ke open source Eclipse IDE, 
  • Area aplikasi lainnya termasuk mobil, 
  • Otomasi industri, 
  • Otomatisasi bangunan, 
  • PDA, 
  • komputasi grid, 
  • hiburan, 
  • armada manajemen dan aplikasi server.

Arsitektur OSGI

OSGI menyediakan suatu ruang lingkup untuk modularisasi aplikasi, 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 Plain Old Java Objects POJO
  • Layanan Registry : API untuk jasa manajemen (ServiceRegistration , ServiceTracker dan ServiceReference).
  • Life-Cycle : API untuk manajemen siklus hidup (instal, start, stop, update, dan uninstall) bundel.
  • Modul : Lapisan yang 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

Penerapan OSGI

  • Dalam kehidupan sehari-hari : Dikembangkan untuk mengendalikan alat-alat elektronik dalam rumah tangga dengan internet. Yaitu dengan menghubungkan berbagai framework OSGI ini untuk mengendalikan alat-alat rumah tangga yang bersifat elektronik. Hal ini dilakukan dengan berbagai protocol network yaitu Bluetooth, uPnP,HAVi, dan X10. Dengan bantuan Jini dan standart OSGI dari sun microsistem yaitu Java Embedded Server. Teknologi ini dinamakan home network dan jinni adalah salah satu standart untuk pembuatan home nerwork yang berbasis java.
  • Teknologi dan industry : Dalam hal ini pengembangan OSGI dalam Teknologi dan industri adalah untuk otomatisasi industri. Seperti otomatisnya system dalam gudang yang dapat meminta dalam PPIC untuk mengadakan bahan baku, dan masih banyak yang lain.
  • Ilmu Komputer : Dalam ilmu Komputer ini sangat banyak pengembang yang memanfaatkan teknologi OSGI ini. Dari surfing di internet banyak yang mengulas tentang Pemrograman Java yang mengapdopsi teknologi OSGI ini. Salah satu contoh adalah knopflerfish merupakan framework untuk melakukan OSGI didalam program Java. Dan juga eclipse IDE merupakan OSGI framework yang dikembangkan oleh eclipse dan berbasis GUI. Dan masih banyak juga dalam server serta program-program lain yang mengembangkan teknologi OSGI ini.


     

Virtualization

Virtualization atau virtualisasi memiliki banyak pengertian. Jika merujuk pada kamus Oxford istilah virtualization merupakan turunan dari kata virtualize yang memiliki makna:
“convert (something) to a computer-generated simulation of reality”


 terjemahan :


“mengubah sesuatu (mengkonversi) ke bentuk simulasi dari bentuk nyata yang ada”
 Inti dari virtualisasi sebenarnya ialah membuat sebuah simulasi dari perangkat keras, sistem operasi, jaringan maupun yang lainnya. Di bidang teknologi informasi, virtualization digunakan sebagai sarana untuk improvisasi skalabilitas dari hardware yang ada.
Dengan virtualization, 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 virtualization, perangkat lunak bekerja membentuk sebuah virtual machine yang bertindak seolah-olah seperti sebuah komputer asli dengan sebuah sistem operasi terinstall di dalamnya. Salah contoh yang mudah misalkan terdapat satu buah komputer yang telah terinstall GNU/Linux Ubuntu. Kemudian dengan menggunakan perangkat lunak virtualization semisal Virtualbox kita dapat menginstall dua buah sistem operasi lain sebagai contoh Windows XP dan FreeBSD.


Sistem operasi yang terinstall di komputer secara fisik dalam hal ini GNU/Linux Lubuntu disebut sebagai host machine sedangkan sistem operasi yang diinstall diatasnya dinamakan guest machine. Istilah host dan guest dikenalkan untuk memudahkan dalam membedakan antara sistem operasi fisik yang terinstall di komputer dengan sistem operasi yang diinstall diatasnya atau virtualnya. 
Perangkat lunak yang digunakan untuk menciptakan virtual machine pada host machine biasa disebut sebagai hypervisor atau Virtual Machine Monitor (VMM).


API (Application Program Interface)

Kebanyakan programmer membuat aplikasi dengan menggunakan Application Programming Interface(API). Dalam API itu terdapat fungsi-fungsi/perintah-perintah untuk menggantikan bahasa yang digunakan dalam system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh programmer. Fungsi yang dibuat dengan menggunakan API tersebut kemudian akan memanggil system calls sesuai dengan sistem operasinya. Tidak tertutup kemungkinan nama dari system calls sama dengan nama di API.
Keuntungan memprogram dengan menggunakan API adalah:

  • Portabilitas. Programmer yang menggunakan API dapat menjalankan programnya dalam sistem operasi mana saja asalkan sudah ter- install API tersebut. Sedangkan system call berbeda antar sistem operasi, dengan catatan dalam implementasinya mungkin saja berbeda.
  • Lebih Mudah Dimengerti. API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa system call. Hal ini sangat penting dalam hal editing dan pengembangan.

Cara Memakai API :
  • Dilakukan dengan mengimpor package/kelas import java.util.Stack;
  • Ada beberapa kelas bernama sama dipackage yang berbeda, yaitu :
  • import salah satu dan gunakan nama lengkap untuk yang lain, atau
  • gunakan nama lengkap semua kelas
Ada tiga jenis Bahasa Pemrograman Java Application Programming Interface (API):


  • inti resmi Java API, yang terdapat dalam JDK atau JRE, dari salah satu edisi dari Java Platform. Tiga edisi dari Java Platform adalah Java ME (Micro edition), Java SE (Standard edition), dan Java EE (Enterprise edition).
  • Resmi opsional API yang dapat didownload secara terpisah. Spesifikasi API ini didefinisikan sesuai dengan Spesifikasi Jawa Request (JSR), dan kadang-kadang beberapa API ini kemudian dimasukkan dalam API inti dari platform (contoh yang paling terkenal dari jenis ini adalah swing).
  • API tidak resmi, yang dikembangkan oleh pihak ketiga, tetapi tidak berkaitan dengan JSRs apapun.