Monday, 28 December 2015T12/28/2015 11:21:00 pm

SEJARAH JAVA VIRTUAL MACHINE

Java Virtual Machine (JVM) adalah sebuah spesifikasi untuk sebuah komputer abstrak. JVM terdiri dari sebuah kelas pemanggil dan sebuah interpreter Java yang mengeksekusi kode arsitektur netral. Kelas pemanggil memanggil file.class dari kedua program Java dan Java API untuk dieksekusi oleh interpreter Java. Interpreter Java mungkin sebuah perangkat lunak interpreter yang menterjemahkan satu kode byte pada satu waktu, atau mungkin sebuah just-intime (JIT) kompiler yang menurunkan bytecode arsitektur netral kedalam bahasa mesin untuk host computer.

Sebuah contoh mesin virtual Java mulai menjalankan aplikasi tersendiri dengan metode main() dari beberapa inisial class. Metode main() harus public, static, return void, dan menerima parameter : sebuah String array. Setiap kelas dengan seperti sebuah metode main()dapat digunakan sebagai titik awal untuk aplikasi Java.

2. Latar Belakang JAVA
            Sejarah Singkat JAVA
Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan James Gosling ingin merancang bahasa komputer untuk perangkat konsumer seperti cable TV Box. Karena perangkat tersebut tidak memiliki banyak memori, bahasa harus berukuran kecil dan mengandung kode yang liat. Juga karena manufaktur – manufaktur berbeda memilih processor yang berbeda pula, maka bahasa harus bebas dari manufaktur manapun. Proyek diberi nama kode ”Green”.
Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap platform mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portabel yang menghasilkan intermediate code untuk mesin hipotesis. Mesin ini sering disebut dengan mesin maya (virtual machine). Kode ini kemudian dapat digunakan di sembarang mesin yang memiliki interpreter. Proyek Green menggunakan mesin maya untuk mengatasi isu utama tentang netral terhadap arsitektur mesin.
Karena orang – orang di proyek Green berbasis C++ dan bukan Pascal maka kebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan bukan prosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James Gosling yang mendapat inspirasi dari sebuah pohon yang berada pada seberang kantornya, namun dikarenakan nama Oak sendiri merupakan nama bahasa pemrograman yang telah ada sebelumnya, kemudian SUN menggantinya dengan JAVA.


3.     POKOK BAHASAN

Java adalah nama salah satu bahasa pemrograman komputer yang berorientasi objek, diciptakan oleh satu tim dari perusahaan Sun Microsystem, perusahaan workstation UNIX (Sparc) yang cukup terkenal. JAVA diciptakan berdasarkan bahasa C++, dengan tujuan platform independent (dapat dijalankan pada berbagai jenis hardware tanpa kompilasi ulang), dengan slogan Write Once Run Anywhere (WORA). Dibanding bahasa C++, JAVA pada hakikatnya lebih sederhana dan memakai objek secara murni. Java file kelas. adalah pengkodean program yang padat untuk stack berbasis virtual mesin. Hal ini dimaksudkan untuk digunakan dalam lingkungan jaringan, yang mengharuskan mesin independent dan
meminimalkan konsumsi bandwidth jaringan. Namun, seperti di semua mesin virtual ditafsirkan, kinerja tidak cocok dengan kode yang dihasilkan untuk mesin target. Untuk memperbaiki masalah ini, banyak implementasi dari Java Virtual Machine (JVM) menggunakan "just-in-time" (JIT) kompiler, di mana Java bytecode dijabarkan ke dalam kode mesin.

Java Virtual Machine (JVM) adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM.

Aplikasi program Java diciptakan dengan file teks berekstensi .java. Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana kompilasi ditujukan, sementara bytecode berjalan pada java interpreter yang tersedia di semua platform sistem komputer dan sistem operasi.

1. Arsitektur Java Virtual Machine

Dalam spesifikasi mesin virtual Java, behaviour mesin virtual digambarkan dari sisi subsistem, area memori, tipe data, dan instruksi. Arsitektur Java Virtual Machine menunjukkan diagram blok mesin virtual Java yang mencakup subsistem utama dan daerah memori yang diuraikan dalam spesifikasi, masing-masing mesin virtual Java memiliki subsistem class loader yaitu mekanisme untuk memuat tipe (kelas dan interface) diberikan nama-nama yang memenuhi syarat. Setiap mesin virtual Java juga memiliki mesin eksekusi yaitu mekanisme yang bertanggung jawab untuk melaksanakan instruksi yang terdapat dalam methods of loaded classes. Ketika Java Virtual Machine menjalankan sebuah program, butuh memori untuk menyimpan banyak hal, termasuk bytecode dan banyak informasi lain ekstrak dari loaded class files, objek program instantiate, parameter methods, nilai return, variabel lokal, dan antara hasil perhitungan. Java virtual machine mengatur memori yang dibutuhkan untuk mengeksekusi program ke beberapa runtime area data. Meskipun terdapat runtime area data yang sama dalam beberapa bentuk di setiap implementasi JVM, spesifikasi cukup abstrak. Beberapa runtime area data membagi antara application's threads dan lainya. yang unik ke individual threads. Setiap contoh dari JVM memiliki satu area method dan satu heap. Daerah
ini dibagi oleh semua thread yang sedang berjalan dalam JVM. Ketika mesin virtual memuat file class, kemudian menguraikan informasi tentang tipe dari data biner yang terdapat dalam file class. Ketika program berjalan, mesin virtual tempat semua obkjekprogram instantiate ke heap. Java stack terdiri dari stack frames (frame). Sebuah frame berisi tumpukan dari satu pemanggilan metode Java. Ketika thread memanggil sebuah method, mesin virtual Java mendorong frmae baru ke thread Java stack. Ketika method sudah lengkap mesin virtual muncul dan membuang frame untuk method tersebut.



2. Subsistem Class Loader
Java Virtual Machine terdiri dari 2 jenis class loader : bootstrap class loader dan user-defined class loaders. Bootstrap class loader merupakan bagian dari implementasi mesin virtual, dan class loader yang didefenisikan user merupakan bagian dari aplikasi Java. Kelas dimuat oleh class loader yang berbeda ditempatkan ke dalam ruang terpisah dalam JVM.
Subsistem class loader melibatkan banyak bagian lain dari mesin virtual Java dan beberapa kelas dari perpustakaan java.lang. Sebagai contoh, class loader yang didefenisikan user berada pada regular Java yang mana class turun dari java.lang.ClassLoader. Method dari kelas ClassLoader memungkinkanaplikasi Java untuk mengakses mesin virtual class loading mesin.

3. Method Area
Didalam JVM misalnya, informasi tentang memuat tipe disimpan di dalam logical area dari memori yang disebut method area. Ketika JVM memuat sebuah tipe, menggunakan class loader untuk mencari file kelas yang tepat. Class loader membaca pada file kelas—linear aliran data biner—dan meneruskannya ke mesin virtual. Memori untuk kelas (statis) variabel dideklarasikan di kelas juga diambil dari method area. Jumlah multi-byte dalam file kelas tersebut disimpan dalam big-endian (byte terpenting dahulu) order. Mesin virtual akan mencari melalui dan menggunakan jenis informasi yang disimpan di daerah metode seperti menjalankan aplikasi itu di hosting. Sebagai contoh bagaimana mesin virtual Java menggunakan informasi disimpan di method area, perhatikan class dibawah ini:

// On CD-ROM in file jvm/ex2/Lava.java
class Lava {
private int speed = 5; // 5 kilometers per hour
void flow() {
}
}
// On CD-ROM in file jvm/ex2/Volcano.java
class Volcano {
public static void main(String[] args) {
Lava lava = new Lava();
lava.flow();
}
}

Paragraf berikut menggambarkan bagaimana sebuah implementasi bisa mengeksekusi instruksi pertama dalam bytecode untuk metode main () dari aplikasi Volcano. Implementasi yang berbeda dari mesin virtual
Java dapat beroperasi dengan cara yang sangat berbeda. Uraian berikut ini menggambarkan salah satu cara - tapi bukan satu-satunya cara - mesin virtual Java dapat mengeksekusi instruksi pertama dari metode
Volcano’s main (). Untuk menjalankan aplikasi Volcano, Anda beri nama "Volcano" ke mesin virtual Java. Diberi nama Volcano, mesin virtual menemukan dan membaca di dalam file Volcano.class. Ekstraksi defenisi dari kelas Volcano dari data biner dalam file kelas dan tempat-tempat informasi diimpor ke dalam method area. Mesin virtual kemudian memanggil metode main (), dengan menafsirkan bytecode disimpan di method area. Sebagai mesin virtual mengeksekusi main (), ia menjaga pointer ke constant pool (struktur data di daerah metode) untuk kelas saat ini (kelas Volcano).

4. Heap
Mesin virtual Java memiliki instruksi yang mengalokasikan memori pada tumpukan untuk objek baru, namun tidak memiliki instruksi untuk membebaskan memori. Sama seperti Anda tidak dapat secara eksplisit gratis obyek dalam kode sumber Java, Anda tidak bisa secara eksplisit gratis obyek di bytecode Java. Mesin virtual sendiri bertanggung jawab untuk memutuskan apakah dan kapan memori ditempati oleh benda-benda
yang tidak lagi direferensikan oleh aplikasi yang berjalan. Biasanya, implementasi mesin virtual Java menggunakan garbage collector untuk mengelola heap.

5. Program counter
Setiap thread program yang berjalan telah mendaftarkan pc sendiri, atau program counter, yang diciptakan pada saat thread dimulai. Sebagai thread mengeksekusi sebuah metode Java, register pc berisi alamat dari instruksi saat ini sedang dijalankan oleh thread tersebut. Sebuah "alamat " bisa menjadi penunjuk asli atau offset dari awal bytecode metode's. Jika thread adalah melaksanakan metode asli, nilai register pc tidak terdefinisi.

6. Java Stack
Ketika sebuah thread baru diluncurkan, mesin virtual Java membuat Java stack baru untuk thread. Seperti disebutkan sebelumnya, Java stack disimpan disebuah thread's state pada frame terpisah. Mesin virtual Java
hanya melakukan dua operasi langsung di Java Stacks: itu mendorong dan pop frame.

7. Native Method Stacks
Jika antarmuka implementasi native method menggunakan suatu model C-linkage, maka metode tumpukan asli adalah C stack. Ketika sebuah program C memanggil fungsi C, tumpukan beroperasi dengan cara
tertentu. Argumen untuk fungsi didorong ke dalam stack pada urutan tertentu. Nilai kembali dilewatkan kembali ke fungsi pemanggilan dengan cara tertentu. Sebuah metode antarmuka asli kemungkinan akan (sekali lagi, terserah kepada para desainer untuk memutuskan) dapat menelepon kembali ke dalam mesin virtual Java dan memanggil sebuah metode Java. Dalam hal ini, benang daun native method stack dan masuk ke Java stack.
8. Implementasi Virtual Mesin
Java berdiri di atas sebuah mesin interpreter yang diberi nama Java Virtual Machine (JVM).  Compiler Java (yang disebut dengan javac atau Java Compiler) akan mentransformasikan kode-kode dalam bahasa Java (.java)  ke dalam suatu bytecode yang disimpan dalam bentuk file .class dimana bytecode adalah sekumpulan perintah hasil kompilasi yang kemudian dapat di eksekusi melalui sebuah virtual mesin yang disebut dengan JVM (Java Virtual Machine). JVM itu sendiri terdapat dalam paket JRE (Java Runtime Environment) yang  juga berisi library Java yang digunakan. Oleh karena itu bahasa Java disebut sebagai bahasa pemrograman yang portable karena dapat dijalankan pada berbagai sistem operasi, asalkan pada system operasi tersebut terdapat JVM.
 Alasan utama pembentukan bahasa Java adalah untuk membuat aplikasi-aplikasi yang dapat diletakkan di berbagai macam perangkat elektronik, sehingga Java harus bersifat platform independent (tidak bergantung pada platform).
Previous
Next Post »
0 Komentar untuk "SEJARAH JAVA VIRTUAL MACHINE"

Silahkan tinggalkan komentar dibawah ini,
Terima kasih sudah :
1. Berkomentar dengan sopan
2. Tidak meninggalkan link aktif dalam form komentar
3. Berkomentar sesuai postingan / artikel
4. Tidak membuat komentar yang mengandung SARA / SPAM
5. Memberikan informasi link / script yang tidak berfungsi

Terima Kasih Sudah Berkomentar

PENDAPAT ANDA TENTANG BLOG INI ?

Follow by Email

 
Copyright © 2014 uduy macal blog's - All Rights Reserved
Template By Kuncidunia
DMCA.com Protection Status