Java Virtual mechine (JVM) dari pengertian, arsitektur maupun cara kerjanya

 

Pengertian Java Virtual mechine

Sebelum masuk ke materi Java virtual mechine, kita harus memahami terlebih dahulu apa itu virtual mechine. Virtual mechine adalah sebuah rekayasa perangkat lunak yang mempunyai fungsi yang mirip dengan komputer fisik dengan komponen-komponen pembangunnya yang lengkap. sederhananya  virtual mechine membuat ruang ke dua pada sebuah komputer, dimana segala aktivitas didalamnya namun tidak mempengaruhi keadaan komputer utama. 

Java virtual mechine (JVM) merupakan aplikasi khusus bahasa pemrograman java yang digunakan untuk menjalankan program yang ditulis dalam bahasa pemrograman java. Java virtual mechine akan  mengkompilasi atau mengartikan kode yang ditulis dengan bahasa pemrograman java kedalam bytecode (kode biner). Java virtual mechine dirancang untuk memungkinkan program aplikasi yang dibangun dapat dijalankan diberbagai platforms tanpa harus ditulis ulang oleh programer untuk setiap platforms berbeda.

pada dasarnya compiler pada java virtual mechine akan membaca sumber dari bahasa pemrograman java yang telah ditulis dan merubahnya menjadi bytecode yang dapat diterjemahkan menjadi bahasa yang bisa dikenali oleh komputer. 

didalam bahasa pemrograman lainnya, compiler biasanya akan menghasilkan kode-kode untuk mesin tertentu. sedangkan pada java compiler akan menghasilkan kode yang ditujukan untuk virtual mechine. 


Arsitektur Java Virtual mechine

Java Virutal mechine dibagi menjadi 3 komponen bagian yaitu :
  1. class loader
  2. runtime data area (JVM memory)
  3. execution engine
Perhatikan Gambar dibawah ini mengenai 3 komponen utama dari java virtual mechine.
Java Virtual mechine (JVM) dari pengertian, arsitektur maupun cara kerjanya
 Arsitektur Java virtual mechine (JVM) terdiri dari class loader, JVM memori, execution engine dan java native interface. berikut adalah penjelasan dari arsitektur yang ada diatas.

1. Class Loader

Java bytecode yang ada dikomputer kita akan disimpan dalam bentuk file dengan ekstension .class. oleh karena itu, komponen java virtual mechine yang pertama yaitu class loader berfungsi untuk membaca dan memuat seluruh file.class. komponen ini juga nantinya bertanggung jawab memverifikasi bytecode yang telah dimuat valid. kemudian akan melakukan proses resolving pada seluruh referesni statik.

Secara garis besarnya, class loader merupakan class yang memiliki tiga tugas utama diantaranya yaiitu:


a. Loading

class loader akan membaca file sebuah class untuk menghasilkan data biner yang sesuai kemudian  menyimpannya pada area metode. Setiap file .class akan menyimpan informasi yang akan disimpan kedalam area metode diantaranya yaitu:
  • nama class utama
  • keterkaitan antara class dan interface
  • modifier, informasi methode, variabel dan sebagainya
setelah file.class telah dimuat, JVM akan membuat objek berjenis class yang digunakan untuk mewakili file ini di memory heap.


b. Linking


Linking memiliki tugas utama yaitu melakukan verifikasi , persiapan dan sewaktu-waktu melakukan resolusi
  • fungsi verifikasi digunakan untuk memastikan kebenaran dari file.class. apakah formatnya sudah benar serta dihasilkan oleh kompiler yang valid atau tidak.
  • persiapan digunakan untuk mengalokasikan memori dan menginisialisasi memori ke nilai default.
  • resolusi digunakan untuk mengganti referensi simbolik dari tipe dengan referensi langsung.


c.Initialization

pada fase initialization java virtual mechine (JVM) semua variabel statis akan ditetapkan dengan nilainya yang ditentukan didalam blok statis dan kode (jika ada). 


2. Java Virtual Mechine (JVM) Memory data area

Pada memori data area, java virtula mechine data area berfungsi untuk menyimpan seluruh informasi kelas, variabel, fungsi, objek dan data. secara garis besar komponen dari memory data area dapat dibagi menjadi beberapa bagian yaitu :

a. Methode Area

Pada method area semua informasi pada tingkat kelas seperti halnya nama kelas induk, nama kelas, metode dan variabel disimpan termasuk juga variabel statis. hanya akan ada 1 area methode didalam Java virtual mechine Memory.

b. Heap Area

pada heap area semua informasi dari objek akan akan disimpan. dan heap area juga hanya akan ada satu per java virtual mechine.

c. Stack Area

pada tiap thread , Java virtual mechine akan membuat satu tumpukan yang disimpan didalam stack area. 

d. Pc Register

pc register berfungsi untuk menyimpan alamat intruksi yang akan dieksekusi saat ini dari sebuah thread yang ada di java virtual mechine.

e. Native Methode 

Native stack dibuat untuk setiap thread yang ada pada java virtual mechine. stack ini nantinya akan menyimpan setiap informasi dari native method.


3. Execution engine

Execution engine pada java virtual mechine berfungsi untuk menjalankan .class (bytecode). Execution engine akan membaca bytecode baris demi baris, menggunakan setiap data dan informasi yang ada diberbagai memori dan menjalankan instruksi.execution engine pada java virtual mechine merupakan komponen yang sangat penting dan sangat krusial karena berperan dalam melakukan proses eksekusi terhadap bytecode. execution engine dibagi menjadi tiga bagian yaitu :

  • interpreter
  • just -in -time compiler
  • garbage Collector

Cara kerja Java virtual mechine

pada pemrograman java, file java dituliskan dalam bentuk teks dan akan disimpan dengan nama file yang sama persis dengan nama classnya dengan ekstensinya yaitu .java. file java tersebut kemudian akan dicompile  dengan compiler javac sehingga akan menghasilkan ekstensi .class.

file ekstensi hasil compiler yang berupa .class akan dijalankan diatas java virtual mechine (JVM) dengan menggunakan java launcher (java). dengan adanya java virtual mechine, program java yang telah dibuat nantinya bisa digunakan diberbagai platform komputer dengan system operasi yang berbeda misalnya windows, linuk dan mac.

Posting Komentar

0 Komentar