VIRTUAL MACHINE
Teknologi Virtualisasi
Untuk memahami teknologi virtualisasi atau yang umum disebut virtual machine, sebelumnya mari kita bahas deFinisi dari Virtual Machine.
Virtual machine menurut glossary Microsoft artinya :
Essentially a computer within a computer, implemented in software. A virtual machine emulates a complete hardware system, from processor to network card, in a self-contained, isolated software environment, enabling the simultaneous operation of otherwise incompatible operating systems. Each operating system runs in its own isolated software partition.
Secara sederhana adalah computer didalam computer, yang di implementasikan oleh software. Sebuah virtual machine mengemulasikan keseluruhan system hardware, mulai dari processor sampai network card, memungkinkan operating system yang berbeda untuk berjalan secara simultan. Setiap operating system berada pada partisi software yang berbeda secara independent.
Virtual machine (VM) adalah suatu environment, biasanya sebuah program atau system operasi, yang tidak ada secara fisik tetapi dijalankan dalam environment lain. Dalam konteks ini, VM disebut “guest” sementara environment yang menjalankannya disebut “host”. Ide dasar dari virtual machine adalah mengabtraksi perangkat keras dari satu komputer (CPU, memori, disk, dst) ke beberapa environment eksekusi, sehingga menciptakan illusi bahwa masing-masing environment menjalankan komputernya [terpisah] sendiri.VM muncul karena adanya keinginan untuk menjalankan banyak sistem operasi pada satu komputer.
Teknologi virtual machine memiliki banyak kegunaan seperti memungkinkan konsolidasi perangkat keras, memudahkan recovery sistem, dan menjalankan perangkat lunak terdahulu. Salah satu penerapan penting dari teknologi VM adalah integrasi lintas platform. Beberapa penerapan lainnya yang penting adalah:
• Konsolidasi server. Jika beberapa server menjalankan aplikasi yang hanya memakan sedikit sumber daya, VM dapat digunakan untuk menggabungkan aplikasi-aplikasi tersebut sehingga berjalan pada satu server saja, walaupun aplikasi tersebut memerlukan sistem operasi yang berbeda-beda.
• Otomasi dan konsolidasi lingkungan pengembangan dan testing. Setiap VM dapat berperan sebagai lingkungan yang berbeda, ini memudahkan pengembang sehingga tidak perlu menyediakan lingkungan tersebut secara fisik.
• Menjalankan perangkat lunak terdahulu. Sistem operasi dan perangkat lunak terdahulu dapat dijalankan pada sistem yang lebih baru.
• Memudahkan recovery sistem. Solusi virtualisasi dapat dipakai untuk rencana recovery sistem yang memerlukan portabilitas dan fleksibilitas antar platform.
• Demonstrasi perangkat lunak. Dengan teknologi VM, sistem operasi yang bersih dan konfigurasinya dapat disediakan secara cepat.
Kelebihan Virtual Machine (VM)
Teknologi VM memiliki beberapa keunggulan, antara lain:
• Hal keamanan. VM memiliki perlindungan yang lengkap pada berbagai sistem sumber daya, yaitu dengan meniadakan pembagian sumber daya secara langsung, sehingga tidak ada masalah proteksi dalam VM. Sistem VM adalah kendaraan yang sempurna untuk penelitian dan pengembangan sistem operasi. Dengan VM, jika terdapat suatu perubahan pada satu bagian dari mesin, maka dijamin tidak akan mengubah komponen lainnya.
• Memungkinkan untuk mendefinisikan suatu jaringan dari Virtual Machine (VM). Tiap-tiap bagian mengirim informasi melalui jaringan komunikasi virtual. Sekali lagi, jaringan dimodelkan setelah komunikasi fisik jaringan diimplementasikan pada perangkat lunak.
Kekurangan Virtual Machine (VM)
Beberapa kesulitan utama dari konsep VM, diantaranya adalah:
• Sistem penyimpanan. Sebagai contoh kesulitan dalam sistem penyimpanan adalah sebagai berikut: Andaikan kita mempunyai suatu mesin yang memiliki 3 disk drive namun ingin mendukung 7 VM. Keadaan ini jelas tidak memungkinkan bagi kita untuk dapat mengalokasikan setiap disk drive untuk tiap VM, karena perangkat lunak untuk mesin virtual sendiri akan membutuhkan ruang disk secara substansial untuk menyediakan memori virtual dan spooling. Solusinya adalah dengan menyediakan disk virtual atau yang dikenal pula dengan minidisk, dimana ukuran daya penyimpanannya identik dengan ukuran sebenarnya. Dengan demikian, pendekatan VM juga menyediakan sebuah antarmuka yang identik dengan perangkat keras yang mendasari.
• Pengimplementasian sulit. Meski konsep VM cukup baik, namun VM sulit
diimplementasikan.
Contoh Virtual Machine
· VMware
Pada GNU/Linux salah satu virtual machine yang terkenal adalah VMware http://www.vmware.com. VMware memungkinkan beberapa sistem operasi dijalankan pada satu mesin PC tunggal secara bersamaan. Hal ini dapat dilakukan tanpa melakukan partisi ulang dan boot ulang. Pada Virtual Machine (VM) yang disediakan akan dijalankan sistem operasi sesuai dengan yang diinginkan. Dengan cara ini maka pengguna dapat memboot suatu sistem operasi (misal Linux) sebagai sistem operasi tuan rumah (host) dan lalu menjalankan sistem operasi lainnya misal MS Windows. Sistem operasi yang dijalankan di dalam sistem operasi tuan rumah dikenal dengan istilah sistem
operasi tamu (guest).
Kebanyakan orang berpikir bahwa secara logisnya VMware diibaratkan sebagai software yang sering digunakan untuk keperluan percobaan game, aplikasi, untuk meng-install dua sistem operasi dan menjalankannya (misalnya Windows
maupun Linux) pada harddisk yang sama tanpa memerlukan logout dari sistem operasi yang lainnya, secara gampang kita hanya tinggal menekan Alt + Tab untuk mengganti SO.
Akan tetapi pada dasarnya VMware bukanlah emulator, karena tidak mengemulasikan CPU dan perangkat keras di dalam suatu Virtual Machine (VM), tetapi hanya membolehkan sistem operasi lainnya dijalankan secara paralel dengan sistem operasi yang telah berjalan. Setiap Virtual Machine (VM) dapat memiliki alamat IP sendiri (jika mesin tersebut di suatu jaringan), dan pengguna dapat menganggapnya sebagai mesin terpisah.
· Java VM
Program Java yang telah dikompilasi adalah platform-neutral bytecodes yang dieksekusi oleh Java Virtual Machine (JVM). JVM sendiri terdiri dari: class loader, class verification, runtime interpreter, Just In-Time (JIT) untuk meningkatkan kinerja kompilator.Bahasa mesin terdiri dari sekumpulan instruksi yang sangat sederhana dan dapat dijalankan secara langsung oleh CPU dari suatu komputer. Sebuah program yang dibuat dengan bahasa tingkat tinggi tidak dapat dijalankan secara langsung pada komputer. Untuk dapat dijalankan, program tersebut harus ditranslasikan kedalam bahasa mesin. Proses translasi dilakukan oleh sebuah program yang disebut compiler.
Setelah proses translasi selesai, program bahasa-mesin tersebut dapat dijalankan, tetapi hanya dapat dijalankan pada satu jenis komputer. Hal ini disebabkan oleh setiap jenis komputer memiliki bahasa mesin yang berbeda-beda. Alternatif lain untuk mengkompilasi program bahasa tingkat tinggi selain menggunakan compiler, yaitu menggunakan interpreter. Perbedaan antara compiler dan interpreter adalah compiler mentranslasi program secara keseluruhan sekaligus, sedangkan interpreter menstranslasi program secara instruksi per instruksi. Java dibuat dengan mengkombinasikan antara compiler dan interpreter.
Program yang ditulis dengan java di-compile menjadi bahasa mesin. Tetapi bahasa mesin untuk komputer tersebut tidak benar-benar ada. Oleh karena itu disebut "Virtual" komputer, yang dikenal dengan Java Virtual Machine (JVM). Bahasa mesin untuk JVM disebut Java bytecode. Salah satu keunggulan dari Java adalah dapat digunakan atau dijalankan pada semua jenis komputer. Untuk menjalankan program Java, komputer membutuhkan sebuah interpreter untuk Java bytecode.
Interpreter berfungsi untuk mensimulasikan JVM sama seperti virtual computer mensimulasikan PC komputer. Java bytecode yang dihasilkan oleh setiap jenis komputer berbeda-beda, sehingga diperlukan interpreter yang berbeda pula untuk setiap jenis komputer. Tetapi program Java bytecode yang sama dapat dijalankan pada semua jenis komputer yang memiliki Java bytecode.
Jenis - Jenis Virtual Machine
1. Virtual Machine Sistem
VM sistem memungkinkan pembagian sumber daya perangkat keras yang ada ke dalam VM-VM yang berbeda, masing-masing menjalankan sistem operasinya sendiri. Lapisan perangkat lunak yang menyediakan virtualisasi disebut virtual machine monitor atau hypervisor. Sebuah hypervisor bisa berjalan pada perangkat keras (Tipe 1 atau native VM) atau di atas sebuah sistem operasi (Tipe 2 atau hosted VM).Keunggulan utama dan VM sistem adalah:
• Berbagai lingkungan sistem operasi dapat berjalan pada komputer yang sama, dalam isolasi antar lingkungan yang kuat
• VM dapat menyediakan instruction set architecture (ISA) yang berbeda dengan yang ada pada perangkat keras.
Sistem operasi guest (yang berjalan di atas VM) tidak harus merupakan sistem operasi yang sama (sehingga bisa menjalankan sistem operasi terdahulu untuk menggunakan perangkat lunak yang belum di-port ke versi yang lebih baru). Penggunaan VM untuk mendukung berbagai sistem operasi yang berbeda menjadi populer pada embedded system, di mana sistem operasi real time digunakan bersamaan dengan sistem operasi high level seperti Linux atau Windows.Kegunaan lainnya adalah untuk men-sandbox (mengisolasi perubahan kode-kode yang masi belum terpercaya ) dari OS yang belum bisa dipercaya, karena masih dalam tahap pengembangan. VM memiliki manfaat lain pada pengembangan system operasi seperti akses debugging yang lebih baik dan reboot yang lebih cepat.
2. Virtual Machine Proses
Suatu VM proses, kadang disebut application virtual machine, berjalan sebagai applikasi normal di dalam sebuah sistem operasi dan mendukung satu proses. VM Proses diciptakan saat proses tersebut dimulai dan dihancurkan (destroyed) ketika prosesnya exit. Tujuannya adalah menyediakan environment pemrograman yang platform-independent yang mengabstraksi detil-detil perangkat lunak atau sistem operasi, dan mengizinkan suatu program tereksekusi dengan cara yang sama pada platform manapun.
VM proses menyediakan abstraksi tingkat-tinggi (dibandingkan abstraksi tingkat rendah dari VM sistem) – yaitu abstraksi bahasa pemrograman tingkat tinggi. VM proses diimplementasi menggunakan interpreter.Tipe VM ini menjadi populer dengan bahasa pemrograman Java, yang diimplementasi dengan Java Virtual Machine. Contoh lainnya adalah .NET Framework, yang berjalan atas VM disebut Common Language Runtime. Kasus istimewa dari VM proses adalah sistem yang mengabstraksi mekanisme komunikasi dari cluster komputer (yang mungkin heterogen). VMnya tidak terdiri dari satu proses, melainkan satu proses per mesin fisik di dalam cluster. VM tersebut dirancang untuk mempermudah pekerjaan memrogramkan aplikasi parallel dengan membiarkan programmer fokus pada algoritma daripada mekanisme komunikasi yang disediakan oleh interconnect dan sistem operasi. Kenyataan bahwa komunikasi terjadi tidak disembunyikan, dan cluster tidak diusahakan direpresentasi sebagai satu mesin.
3. Virtualisasi Penuh
Virtualisasi penuh dalam ilmu komputer ialah teknik virtualisasi yang digunakan untuk implementasi pada berbagai macam lingkungan virtual machine, yang mana pada virtualisasi penuh menyediakan simulasi lengkap dari perangkat keras. Simulasi lengkap ini menyebabkan semua perangkat lunak yang bisa dieksekusi langsung pada perangkat keras dieksekusi juga pada VM, termasuk semua sistem operasi.Salah satu ilustrasi dari virtualisasi penuh adalah dalam program kontrol dari sistem operasi CP/CMS dari IBM. Setiap pengguna dari CP/CMS diberikan sebuah sistem komputer (yang sebenarnya merupakan virtual machine) yang berdiri sendiri. Virtual machine tersebut memiliki semua kemampuan dari perangkat keras yang mendasarinya, dan untuk penggunanya, virtual machine tidak dapat dibedakan dengan sebuah sistem yang tersendiri. Simulasi dilakukan secara menyeluruh dan didasarkan prinsip operasi dari perangkat keras sehingga mencakup instruction set, main memory, interrupts, exceptions, and device access. Hasilnya adalah sebuah mesin yang dapat dibagi antar banyak pengguna.
Virtualisasi penuh hanya dimungkinkan dengan kombinasi perangkat keras dan perangkat lunak yang tepat. Sebagai contoh, tidak dimungkinkan untuk kebanyakan sistem IBM System/360. Sistem x86 juga dulunya disangka tidak dapat menjalankan virtualisasi penuh (walaupun banyak VM di sistem ini cukup dekat untuk disebut virtualisasi penuh misalnya Vmware Workstation, VMware Server, VirtualBox, Parallels Desktop for Mac, Adeos, Mac-on-Linux, Win4BSD, and Win4Lin Pro), tetapi dengan menggunakan teknik binary translation, VMware bisa menjalankan virtualisasi penuh.Tantangan utama pada virtualisasi penuh adalah simulasi dari operasi yang memerlukan hak khusus seperti instruksi M/K. Pengaruh dari setiap operasi yang dilakukan dalam VM harus dijaga agar tetap di dalam VM – operasi virtual tidak diizinkan untuk mengubah status pada VM lain, program kontrol, atau perangkat keras. Instruksi yang pengaruhnya diatur oleh program kontrol bisa langsung dieksekusi oleh perangkat keras. Sedangkan instruksi yang bisa berpengaruh sampai ke luar VM harus dibungkus dan disimulasikan.Virtualisasi penuh sejauh ini terbukti sukses untuk keperluan pembagian sebuah sistem komputer untuk digunakan banyak pengguna dan untuk isolasi pengguna dengan pengguna lain dan dengan program kontrol untuk memperoleh keandalan dan keamanan sistem.
4. Virtualisasi Paruh
Virtualisasi paruh dalam ilmu komputer ialah teknik virtualisasi yang digunakan untuk pengimplementasian pada berbagai macam lingkungan virtual machine, yang mana pada virtualisasi paruh ini lingkungan VM hanya menyediakan simulasi perangkat keras secara sebagian saja. Tidak semua fitur perangkat keras disimulasikan sehingga tidak semua perangkat lunak dapat berjalan tanpa modifikasi terlebih dahulu.
Kunci utama dari partial virtualization adalah virtualisasi alamat, yang artinya setiap virtual machine terdiri dari sebuah alamat yang independen. Kemampuan ini haruslah didukung oleh kemampuan untuk merelokasi alamat dari sebuah perangkat keras – sudah ada pada kebanyakan implementasi praktis dari virtualisasi paruh.Virtualisasi paruh adalah awal dari adanya virtualisasi penuh. Virtualisasi paruh digunakan pada generasi pertama dari sistem time-sharing CTSS dan sistem paging eksperimental pada IBM M44/44X. Istilah ini juga bias digunakan untuk mendeskripsikan system operasi yang menyediakan ruang alamat yang terpisah untuk pengguna atau proses yang berbeda.
Virtualisasi paruh ini jauh lebih mudah diimplementasi daripada virtualisasi penuh, seringkali sanggup menyediakan VM yang berguna dan tangguh serta mendukung aplikasi-aplikasi penting. Kekurangannya adalah masalah kompabilitas perangkat keras terdahulu dan portabilitas (tidak mendukung banyak sistem). Jika suatu fitur perangkat keras tidak disimulasikan maka perangkat lunak yang menggunakan fitur tersebut akan gagal berjalan.
5. Virtualisasi Asli
Virtualiasi asli adalah teknik dimana VM digunakan untuk mensimulasi suatu environment perangkat keras lengkap supaya sistem operasi yang tidak dimodifikasi dapat dijalankan untuk tipe CPU yang sama di terisolasi lengkap di dalam wadah VM. Native virtualization memanfaatkan kemampuan bantuan perangkat keras yang tersedia di dalam prosesor-prosesor termutakhir dari Intel (Intel VT) dan Advanced Micro Devices (AMD-V) untuk menyediakan performa mendekati sistem aslinya.
Virtualisasi asli, juga dikenal sebagai virtualisasi terakselerasi atau virtualisasi hybrid adalah kombinasi virtualisasi penuh dan teknik akselerasi I/O dan sering dipakai untuk sangat meningkatkan performa virtualisasi penuh. Biasanya, metode ini dimulai dengan Virtual Machine Monitor yang mampu virtualisasi penuh lalu, berdasarkan analisa performa, menjalankan teknik akselerasi terpilih. I/O dan network drivers adalah bagian yang paling umum diakselerasi dalam virtualisasi asli.
Java Application Programming Interface (Java API)
Java API merupakan komponen-komponen dan kelas Java yang sudah jadi, yang memiliki berbagai kemampuan. Kemampuan untuk menangani objek, string, angka dan sebagainya
1. Applet
Java Applet merupakan program Java yang berjalan di atas browser. Penggunaan applet ini akan membuat halaman HTML lebih dinamis dan menarik.
2. Java Networking
3. Java Database Connectivity (JDBC)
JDBC API terdiri atas class dan interface yang ditulis dalam bahasa Java untuk sebagai alat bantu bagi pembuat program (developer) dan menyediakan sekumpulan API untuk mengatur keamanan mengakses database seperti Oracle, MySQL, PostgreSQL, Microsoft SQL Server. Jadi keunggulan API JDBC dapat mengakses sumber data dan berjalan pada semua Platform yang mempunyai Java Virtual Machine (JVM).
4. Java Server Pages (JSP)
JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan berjalan pada platform Java.. JSP merupakan pengembangan dari Servlet serta merupakan bagian dari teknologi Java 2 Platform Enterprise Edition (J2EE).
5. Java Card
Java 2 Platform
· Java 2 Platform, Standard Edition (J2SE™) Platform digunakan untuk menjalankan dan mengembangkan aplikasi Java pada level PersonalComputer (PC). Platform ini berisi class-class inti pada Java dan Graphical User Interface (GUI).
· Java 2 Platform, Micro Edition (J2ME™ ) Platform ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada handheld devices atau perangkat-perangkat semacam handphone, Personal Digital Assistance (PDA) dan PocketPC.
· Java 2 Platform, Enterprise Edition (J2EE ) Platform ini berupa paket yang berisi class-class dan interface-interface yang digunakanuntuk menjalankan dan mengembangkanaplikasi Java berbasis web, seperti class-classServlet, Java Server Pages (JSP) dan Enterprise JavaBeans (EJB) serta Java CORBA.