Memastikan Programmu Berjalan Mulus, Kenalan dengan Java Virtual Machine

Diperbarui 01 Feb 2021 - Dibaca 6 mnt

Isi Artikel

    Tahukah kamu apa yang membuat sebuah program Java berjalan dengan baik di berbagai sistem operasi? Java Virtual Machine atau JVM adalah mesin abstrak yang membuat program tersebut berjalan dengan baik.

    Aplikasi Java disebut WORA (Write Once Run Anywhere).

    Ini artinya kamu dapat mengembangkan kode Java pada satu sistem dan dapat mengharapkannya untuk berjalan di sistem lain yang mendukung Java tanpa penyesuaian apa pun.

    Ini semua dimungkinkan karena JVM. Seperti apa cara kerjanya? Simak selengkapnya dalam artikel berikut.

    Apa Itu Java Virtual Machine?

    © Pexels..com

    Java Virtual Machine (JVM) adalah mesin yang menyediakan lingkungan runtime untuk menjalankan kode dalam aplikasi Java.

    Mesin ini mengubah bytecode Java menjadi bahasa mesin. JVM sendiri merupakan bagian dari Java Run Environment (JRE).

    Dalam bahasa pemrograman lain, compiler menghasilkan kode mesin untuk sistem tertentu. Namun, compiler Java menghasilkan kode untuk mesin virtual yaitu Java Virtual Machine.

    Menurut Info World, JVM memiliki dua fungsi utama. Pertama, untuk memungkinkan program Java berjalan pada perangkat atau sistem operasi apa pun.

    Fungsi ini dikenal sebagai prinsip WORA yang telah dijelaskan di atas.

    Kemudian yang kedua adalah untuk mengelola dan mengoptimalkan memori program.

    Ketika Java dirilis pada tahun 1995, semua program komputer ditulis ke sistem operasi tertentu, dan memori program dikelola oleh software developer.

    Baca Juga: Tertarik dengan Profesi Java Developer? Ini Daftar Skill yang Harus Dikuasai

    Arsitektur dan Cara Kerja JVM

    java virtual machine adalah

    © Guru99.com

    1. Class loader

    Menurut Geeks for Geeksclass loader secara umum bertanggung jawab untuk tiga tugas berikut.

    a. Loading

    Class loader membaca file .class, menghasilkan data biner yang sesuai dan menyimpannya di area metode. Untuk setiap file .class, JVM menyimpan informasi berikut di area metode.

    • Nama kelas yang dimuat sepenuhnya dan kelas induk langsungnya.
    • Apakah file .class terkait dengan Class atau Interface atau Enum.
    • Modifier, variabel, informasi metode dan sebagainya.

    Setelah memuat file .class, JVM membuat objek berjenis Class untuk mewakili file ini di memory heap.

    Objek ini adalah tipe Class yang telah ditentukan sebelumnya dalam paket java.lang.

    Objek Class ini dapat digunakan oleh pemrogram untuk mendapatkan informasi tingkat kelas seperti nama kelas, nama induk, metode, informasi variabel, dan lainnya.

    b. Linking

    Tugas linking pada JVM adalah melakukan verifikasi, persiapan, dan sekali waktu melakukan resolusi.

    • Verifikasi dilakukan memastikan kebenaran file .class yaitu memeriksa apakah file ini diformat dengan benar dan dihasilkan oleh kompiler yang valid atau tidak. Jika verifikasi gagal, kamu akan mendapatkan pengecualian run-time java.lang.VerifyError.
    • Persiapan, JVM akan mengalokasikan memori untuk variabel kelas dan menginisialisasi memori ke nilai default.
    • Resolusi, yaitu proses mengganti referensi simbolik dari tipe dengan referensi langsung. Ini dilakukan dengan mencari ke area metode untuk menemukan entitas yang direferensikan.

    c. Initialization

    Dalam fase ini, semua variabel statis ditetapkan dengan nilainya yang ditentukan dalam kode dan blok statis (jika ada).

    Ini dijalankan dari atas ke bawah dalam sebuah kelas dan berdasarkan hierarki kelas.

    Baca Juga: Ini Letak Perbedaan JavaScript Framework dan JavaScript Library

    2. JVM Memory

    a. Method area

    Di area ini, semua informasi tingkat kelas seperti nama kelas, nama kelas induk langsung, metode, dan informasi variabel, dan sebagainya isimpan, termasuk variabel statis.

    Hanya ada satu area metode per JVM, dan itu adalah sumber daya bersama.

    b. Heap area

    Informasi dari semua objek disimpan di heap area. Meski demikian, hanya ada satu heap area per JVM. Ini juga merupakan bagian dari sumber daya bersama.

    c. Stack area

    Untuk setiap thread, JVM membuat satu tumpukan run-time yang disimpan di stack area. Setiap blok tumpukan ini disebut catatan aktivasi/bingkai tumpukan yang menyimpan panggilan metode.

    Semua variabel lokal dari metode itu disimpan dalam bingkai yang sesuai. Setelah thread dihentikan, tumpukan run-time-nya akan dihancurkan oleh JVM. Sayangnya, ini bukan bagian dari sumber daya bersama.

    d. PC registers

    PC registers menyimpan alamat instruksi eksekusi saat ini dari sebuah thread. Tentunya, setiap utas memiliki PC registers terpisah.

    e. Native method stacks

    Native stacks dibuat untuk setiap threadStacks ini menyimpan informasi mengenai native method.

    3. Execution engine

    Execution engine menjalankan .class (bytecode). Mesin ini membaca bytecode baris demi baris, menggunakan data dan informasi yang ada di berbagai area memori dan menjalankan instruksi. Ini dapat diklasifikasikan dalam tiga bagian.

    • Interpreter
    • Just-in-time compiler
    • Garbage collector

    4. Java Native Interface (JNI)

    JNI adalah antarmuka yang berinteraksi dengan Native Method Libraries dan menyediakan perpustakaan asli (C, C ++) yang diperlukan untuk eksekusi.

    Ini memungkinkan JVM memanggil library C atau C++ dan dipanggil oleh library C atau C ++ yang mungkin khusus untuk perangkat keras.

    Baca Juga: Sama-sama Bahasa Pemrograman Populer, Ini Perbedaan TypeScript dan JavaScript

    Tanpa Java Virtual Machine, program yang kamu buat tidak akan berjalan dengan lancar terlepas dari sistem operasi yang digunakan.

    Kamu bisa mempelajari lebih lanjut mengenai pemograman dengan mengikuti Glints ExpertClass, lho.

    Glints Expert Class merupakan webinar yang menhadirkan para profesional dari berbagai bidang keahlian. Kamu bisa belajar dan bertanya langsung kepada mereka sesuai dengan topik yang diangkat.

    Apakah kamu tertarik? Yuk, daftar sekarang sebelum kamu kehabisan kuota!

    Seberapa bermanfaat artikel ini?

    Klik salah satu bintang untuk menilai.

    Nilai rata-rata 2 / 5. Jumlah vote: 1

    Belum ada penilaian, jadi yang pertama menilai artikel ini.

    We are sorry that this post was not useful for you!

    Let us improve this post!

    Tell us how we can improve this post?


    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Artikel Terkait