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).
0 Comments
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