Java merupakan bahasa pemrograman tingkat tinggi, program yang ditulis dalam bahasa tingkat tinggi tidak dapat dijalankan pada
Java merupakan bahasa pemrograman tingkat tinggi, program yang ditulis dalam bahasa tingkat tinggi tidak dapat dijalankan pada mesin apapun secara langsung. Program yang ditulis dalam bahasa tingkat tinggi harus diterjemahkan terlebih dahulu kedalam bahasa mesin, baru dapat dijalankan kedalam mesin tersebut. Inilah tugas dari kompiler javac, yaitu menerjemahkan file (*.java) yang berisi kode sumber kedalam bentuk byte code yang dimengerti oleh mesin(*.class).
JVM(Java Virtual Machine) merupakan mesin virtual yang berada dimesin nyata (komputer anda) yang digunakan secara khusus mengeksekusi berkas byte code java (.class). Setiap sistem operasi memiliki JVM yang berbeda, namun output yang dihasilkan adalah sama, byte code yang dihasilkan di OS Windows dapat dijalankan di Mac-Os atau linux, begitu juga sebaliknya.
JVM tidak mengerti kode sumber java, itulah sebabnya dibutuhkan kompiler javac yang mengkompilasi file *.java untuk mendapatkan file *.class yang berisi kode byte yang dimengeti oleh JVM.
Arsitektur JVM
JVM memiliki berbagai sub komponen secara internal, dapat dilihat dari gambar diagram diatas.
1. Class loader : pada bagian ini JVM memiliki 3 tugas :
a) Memuat file *.class kedalam memori
b) Memverifikasi intruksi kode byte
c) Membagikan memori yang yang diperlukan untuk program
2. Runtime date areas : merupakan sumber daya yang digunakan oleh JVM dan dibagi menjadi 5 bagian:
a) Method area : area yang meyimpan informasi tingkat kelas dari setiap kelas
b) Heap : bagian dari memori JVM dimana objek dialokasikan
c) Stack : bagian dari memori JVM yang digunakan untuk menyimpan variabel sementara
d) PC Register : melacak intruksi mana yang sudah dieksekusi dan mana yang akan dieksekusi dan meyimpan alamat memori dari intruksi yang akan dieksekusi oleh prosesor micro.
e) Native Method Stack : tempat dimana metode asli dijalankan.
3. Native Method Interface : program yang menghubungkan pustaka metode asli dengan JVM untuk menjalankan methode asli
4. Native Method library : meyimpan informasi pustaka asli
5. Execution Engine : berisi interpreter dan JIT compiler, yang memasukkan kode byte kedalam kode mesin.
JRE vs JDK vs JVM
JVM : menjalankan program dengan menggunakan kelas, pustaka dan file yang disediakan oleh JRE.
JRE : merupakan lingkungan dimana mesin virtual java berjalan. JRE berisi Java Virtual Machine, libraries, dan filenya. Tidak termasuk alat pengembang seperti kompiler dan debugger.
JDK : superset dari JRE, berisi semua yang dimiliki oleh JRE bersama dengan alat pengembang seperti kompiler, debugger, dll.
oke sekian teman-teman, semoga postingan kali ini dapat memberikan manfaat untuk kita semua. Jika ada tambahan tau saran lainnya silahkan tulis di kolom komentar ya :) .
Sumber :
https://beginnersbook.com/2013/05/jvm/
https://id.wikipedia.org/wiki/Mesin_Virtual_Java
http://www.rkpdblog.com/jdk-vs-jre-vs-jvm/
https://awesomecodeing.blogspot.com/2013/05/java-virtual-machine-jvm-architecture.html
No comments:
Post a Comment