Wednesday, January 23, 2013

Open Source, Gateway Initiative, Virtualization, API

Open Source

Open source software adalah istilah yang digunakan untuk software yang membuka/membebaskan source codenya untuk dilihat oleh orang lain dan membiarkan orang lain mengetahui cara kerja software tersebut dan sekaligus memperbaiki kelemahan-kelemahan yang ada pada software tersebut. Dan yang menarik dan salah satu keunggulannya adalah bahwa Open source software dapat diperoleh dan digunakan secara gratis tanpa perlu membayar lisensi. Biasanya orang mendapatkan software ini dari internet. Salah satu open source software yang terkenal yaitu Linux.

Keberadaan open source software ini sangat ditunjang oleh internet. Mula-mula Open source software diambil dari internet kemudian digunakan oleh orang dan diperbaiki apabila ada kesalahan. Hasil perbaikan dari open source ini kemudian dipublikasikan kembali melalui internet yang memungkinkan orang lain menggunakan dan memperbaikinya. Dan begitulah seterusnya. Saat ini sangat mudah mendapatkan open source software di internet.

Pengembangan open source software melibatkan banyak orang dari berbagai penjuru dunia yang berinteraksi melalui internet. Maka bermunculanlah berbagai macam software yang dibuat berbasis open source ini yang dipublikasikan melalui internet. Pola open source ini telah melahirkan developer-developer handal dari berbagai penjuru dunia.

Dengan pola open source orang dapat membuat dan mengembangkan apa yang disebut dengan free software. Software ini dapat digunakan tanpa perlu membayar lisensi atau hak cipta karena memang dikembangkan dengan pola open source. Jadi, dengan pola open source orang dapat mengembangkan software dan mempublikasikannya dengan bebas melalui internet. Maka tidak heran apabila kita akan banyak menemukan free software ini di internet dan bisa secara bebas mendownloadnya tanpa perlu membayar uang sepeser pun kepada pengembang software tersebut.

Free software disini juga bukan program kacangan. Anggapan bahwa barang yang gratis jelek kualitasnya tidak berlaku buat free software. Karena sudah terbukti kehandalannya. Dan karena free software berbasis open source maka software tersebut sudah melalui proses perbaikan yang terus menerus. Jadi tidak ada alasan tidak mau menggunakan free software ini dengan alasan kualitasnya yang tidak baik.

Dengan karakteristik yang telah disebutkan di atas maka tidak salah apabila kita menaruh harapan pada open source ini sebagai platform alternatif yang bisa kita gunakan dalam komputer kita. Penerapan pola open source di Indonesia juga dapat menghilangkan pemakaian software komersial secara ilegal dan memungkinkan bangsa Indonesia dikenal karya ciptanya dengan ikut mengembangkan open source software.

Open Source Gateway initiative  (OSGi)

Teknologi OSGi adalah seperangkat spesifikasi yang mendefinisikan sistem komponen dinamis untuk Java. Spesifikasi ini memungkinkan sebuah model pengembangan dimana aplikasi (dinamis) terdiri dari banyak berbeda (reusable) komponen. Spesifikasi OSGi memungkinkan komponen untuk menyembunyikan implementasi mereka dari komponen lain saat berkomunikasi melalui layanan, yang merupakan objek yang secara khusus dibagi antara komponen. Model ini sangat sederhana telah jauh mencapai efek untuk hampir semua aspek dari proses pengembangan perangkat lunak

The OSGI Alliance (sebelumnya dikenal sebagai Open Services Gateway inisiatif, sekarang nama kuno) adalah sebuah organisasi standar terbuka yang didirikan pada Maret 1999. Aliansi dan anggota – anggotanya telah ditentukan sebuah layanan berbasis Java platform yang dapat dikelola dari jarak jauh.

Spesifikasi OSGi dikembangkan oleh para anggota dalam proses terbuka dan tersedia untuk publik secara gratis di bawah Lisensi Spesifikasi OSGi. The Alliance OSGi memiliki kepatuhan program yang hanya terbuka untuk anggota. Pada November 2010, ada tujuh bersertifikat OSGi kerangka implementasi . Sebuah halaman terpisah daftar baik bersertifikat dan non-bersertifikat Implementasi Spesifikasi OSGi, yang meliputi kerangka OSGi dan spesifikasi OSGi lainnya.

Kerangka OSGi adalah sistem modul dan layanan platform untuk Java bahasa pemrograman yang menerapkan lengkap dan dinamis model komponen , sesuatu yang seperti tahun 2012 tidak ada di Java standalone / VM lingkungan. 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 aplikasi mulai 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.
OSGi ARSITEKTUR
OSGi adalah sebuah set spesifikasi yang mendefinisikan sebuah komponen system dinamik untuk Java. Spesifikasi ini memungkinkan sebuah model pengembangan dimana aplikasi (secara dinamik) terdiri dari berbagai komponen yang berbeda. Spesifikasi OSGi memungkinkan komponen-komponennya untuk menyembunyikan implementasinya dari komponen lainnya ketika berkomunikasi melalui services dimana biasanya ketika hal ini berlangsung implementasi antar komponen dapat terlihat jelas. Model yang simple ini telah jauh mencapai efek dari segala aspek dari proses pengembangan software.
Lapisan OSGi
Model lapisan dari OSGi adalah sebagai berikut :


Definisi :
a.Bundles : bundles adalah komponen OSGi yang dibuat oleh pengembang/developer.
b.Services : lapisan service menghubungkan bundles dalam sebuah jalan dinamik dengan menawarkan model publish-find-bind untuk objek Java yang lama.
c.Life Cycle : API untuk menginstall, memulai, menghentikan, update dan menguninstall bundles.
d.Modules : lapisan yang menjelaskan bagaimana bundles dapat mengimport dan mengexport kode.
e.Security : Lapisan yang memegang aspek keamanan.
f.Execution Environment : menjelaskan class dan method apa yang ada di platform


Virtualization

Virtualisasi adalah simulasi software ataupun hardware yang menjalankan software lainnya menggunakan Virtual Machine (VM). Ada banyak bentuk virtualisasi, dibedakan terutama oleh lapisan arsitektur komputasi, dan komponen virtualisasi mungkin termasuk platform perangkat keras (hardware), sistem operasi (OS), perangkat penyimpanan, perangkat jaringan atau sumber daya lainnya.

Jenis-jenis virtualisasi :

1.Hardware
Hardware virtualisasi atau platform virtualisasi mengacu pada penciptaan virtual machine yang bertindak seperti komputer nyata dengan sistem operasi. Software dijalankan pada mesin-mesin virtual dipisahkan dari sumber daya perangkat keras yang mendasarinya. Sebagai contoh, sebuah komputer yang menjalankan Microsoft Windows mungkin host mesin virtual yang terlihat seperti sebuah komputer dengan Linux Ubuntu sistem operasi,. Ubuntu berbasis software dapat dijalankan pada mesin virtual.
Dalam virtualisasi hardware, mesin host adalah mesin yang sebenarnya di mana virtualisasi berlangsung, dan mesin tamu adalah mesin virtual. Tuan rumah dan tamu kata digunakan untuk membedakan perangkat lunak yang berjalan pada mesin fisik dari perangkat lunak yang berjalan pada mesin virtual. Perangkat lunak atau firmware yang menciptakan mesin virtual pada perangkat keras tuan rumah disebut hypervisior atau Virtual Machine Manager.

2.Desktop
Virtualisasi Desktop merupakan istilah umum yang menggambarkan teknologi perangkat lunak yang meningkatkan portabilitas, pengelolaan dan kompatibilitas komputer pribadi lingkungan desktop dengan memisahkan sebagian atau seluruh lingkungan desktop dan aplikasi yang terkait dari perangkat klien fisik yang digunakan untuk mengaksesnya . Virtualisasi desktop yang sering digunakan dalam hubungannya dengan virtualisasi aplikasi dan (windows) pengguna sistem manajemen profil untuk menyediakan lingkungan desktop sistem manajemen yang komprehensif.

3.Software
Sistem operasi tingkay virtualisasi, hosting lingkungan virtualisasi beberapa contoh dalam OS tunggal.
Aplikasi virtualisasi dan virtualisasi ruang kerja, hosting aplikasi individu dalam lingkungan dipisahkan dari OS yang mendasari. Aplikasi virtualisasi sangat erat kaitannya dengan konsep aplikasi portabel.
Virtualisasi layanan , meniru perilaku tergantung (misalnya, pihak ketiga, berkembang, atau tidak diimplementasikan) komponen sistem yang dibutuhkan untuk menjalankan suatuaplikasi sedang diuji (AUT) untuk tujuan pengembangan atau pengujian. Daripada virtualizing seluruh komponen, maka virtualizes hanya irisan tertentu dari perilaku tergantung penting untuk pelaksanaan tugas-tugas pembangunan dan pengujian.

4.Memori
Memori virtualisasi,menggabungkan sumber daya Random Access Memory dari sistem jaringan menjadi satu kolam memori
Virtual memori,memberikan suatu program aplikasi kesan bahwa ia memiliki memori kerja berdekatan, mengisolasi dari pelaksanaan memori fisik yang mendasari.
Berlebih-lebihan memori,memungkinkan komputer untuk memberikan lebih banyak memori ke mesin virtual yang berjalan di atasnya daripada yang diinstal pada komputer fisik.

5.Penyimpanan
Storage virtualisasi, proses sepenuhnya abstrak penyimpanan logis dari penyimpanan fisik
Distributed file system
Penyimpanan hypervisior


6.Data
Virtualisasi data, penyajian data sebagai lapisan abstrak, terlepas dari sistem database, struktur dan penyimpanan.
Database virtualisasi, decoupling lapisan database, yang terletak di antara lapisan penyimpanan dan aplikasi dalam aplikasi stack atas semua.


7.Jaringan
Jaringan virtualisasi, penciptaan jaringan virtual menangani ruang dalam atau di subnet jaringan.

API
API atau Application Programming Interface adalah sebuah protokol yang dimaksudkan untuk digunakan sebagai antar muka oleh komponen software untuk berkomunikasi satu sama lain

Saat ini API banyak digunakan sebagai konten pembagi. Singkatnya, API dapat membolehkan para komunitas web untuk membuat sebuah API yang berguna untuk membagi konten dan data diantara para komunitas lainnya. Dalam hal ini, konten yang dibuat dalam suatu tempat secara dinamik dapat dipost dan diupdate pada lokasi yang berbeda-beda pada web.

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. Sedangkansystem 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.

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.

Untuk membuka suatu file tersebut user menggunakan program yang telah dibuat dengan menggunakan bantuan API, maka perintah dari user tersebut diterjemahkan dulu oleh program menjadi perintah open(). Perintah open() ini merupakan perintah dari API dan bukan perintah yang langsung dimengerti oleh kernel sistem operasi. Oleh karena itu, agar keinginan user dapat dimengerti oleh sistem operasi, maka perintah open() tadi diterjemahkan ke dalam bentuk system call oleh system call interface. Implementasi perintah open() tadi bisa bermacam-macam tergantung dari sistem operasi yang kita gunakan.

Sumber :
http://organisasi.org/penjelasan-pengertian-open-source-software-dan-free-software
http://www.osgi.org/Technology/WhatIsOSGi
http://en.wikipedia.org/wiki/Virtualization
http://en.wikipedia.org/wiki/Application_programming_interface
http://www.ipangsan.web.id/api-application-program-interface/