Apa itu JVM? Jelaskan JVM Architekstur
⚡ Ringkasan Cerdas
Java Mesin Virtual (JVM) adalah mesin yang menyediakan lingkungan runtime untuk menjalankan Java kode, mengkonversi bytecode yang independen platform menjadi bahasa mesin asli. Ini merupakan bagian dari Java Lingkungan Runtime dan memungkinkan JavaPortabilitas 'tulis sekali, jalankan di mana saja'.
Apa itu JVM di Java?
Java Mesin Virtual (JVM) adalah mesin yang menyediakan lingkungan runtime untuk menggerakkan Java kode atau aplikasi. Ini mengkonversi Java bytecode ke dalam bahasa mesin. JVM adalah bagian dari Java Lingkungan Eksekusi (JRE). Dalam bahasa pemrograman lain, kompiler menghasilkan kode mesin untuk sistem tertentu. Namun, Java Compiler menghasilkan kode untuk Mesin Virtual yang dikenal sebagai Java Mesin virtual.
Bagaimana JVM Bekerja?
Pertama, Java Kode dikompilasi menjadi bytecode. Bytecode ini kemudian diinterpretasikan di berbagai mesin. Antara sistem host dan Java Sumber, bytecode adalah bahasa perantara. JVM di Java bertanggung jawab untuk mengalokasikan ruang memori.
Bekerja dari Java Mesin Virtual (JVM)
Architekstur JVM (Java (Mesin Virtual)
Sekarang, mari kita pahami arsitektur JVM. Arsitektur JVM dalam Java Berisi classloader, area memori, mesin eksekusi, dan banyak lagi.
Java Mesin virtual Architekstur
1) Pemuat Kelas
Class loader adalah subsistem yang digunakan untuk memuat file kelas. Subsistem ini menjalankan tiga fungsi utama, yaitu Pemuatan, Penautan, dan Inisialisasi.
2) Bidang Metode
Area Metode JVM menyimpan struktur kelas seperti metadata, kumpulan konstanta saat runtime, dan kode untuk metode.
3) Tumpukan
Semua benda, variabel instan terkait, dan array disimpan di heap. Memori ini bersifat umum dan dibagikan ke banyak thread.
4) Tumpukan Bahasa JVM
Java Tumpukan bahasa menyimpan variabel lokal dan hasil parsialnya. Setiap thread memiliki tumpukan JVM-nya sendiri, yang dibuat secara bersamaan dengan pembuatan thread tersebut. Sebuah frame baru dibuat setiap kali sebuah metode dipanggil, dan dihapus ketika proses pemanggilan metode selesai.
5) Register PC
Register PC menyimpan alamat dari Java Instruksi mesin virtual yang sedang dieksekusi. Di JavaSetiap thread memiliki register PC-nya sendiri yang terpisah.
6) Tumpukan Metode Asli
Tumpukan metode asli menyimpan instruksi kode asli yang bergantung pada pustaka asli. Kode ini ditulis dalam bahasa lain, bukan bahasa pemrograman asli. Java.
7) Mesin Eksekusi
Mesin eksekusi membaca bytecode dan mengeksekusinya bagian demi bagian. Ia menggunakan interpreter dan compiler Just-In-Time (JIT) untuk mengkonversi bytecode menjadi kode mesin asli dan menjalankannya.
8) Antarmuka Metode Asli
Antarmuka Metode Asli adalah kerangka pemrograman. Itu memungkinkan Java Kode yang berjalan di JVM untuk memanggil, dan dipanggil oleh, aplikasi dan pustaka asli.
9) Perpustakaan Metode Asli
Native Libraries adalah kumpulan pustaka asli (C, C++) yang dibutuhkan oleh Mesin Eksekusi.
Perangkat lunak Code Proses Kompilasi & Eksekusi
Untuk menulis dan menjalankan program perangkat lunak, Anda memerlukan hal-hal berikut:
- 1) Redaktur – Untuk mengetik program Anda; notepad dapat digunakan untuk ini.
- 2) Penyusun – Untuk mengkonversi program bahasa tingkat tinggi Anda menjadi kode mesin asli.
- 3) Penghubung – Untuk menggabungkan berbagai referensi file program dalam program utama Anda.
- 4) Pemuat – Untuk memuat file dari perangkat penyimpanan sekunder Anda seperti Hard Disk, Flash Drive, atau CD ke dalam RAM untuk dieksekusi. Pemuatan dilakukan secara otomatis saat Anda menjalankan kode Anda.
- 5) Eksekusi – Eksekusi kode yang sebenarnya, yang ditangani oleh sistem operasi dan prosesor Anda.
Dengan latar belakang ini, silakan simak video berikut dan pelajari cara kerja internal JVM dan arsitektur JVM (Java Mesin Virtual).
Klik di sini jika video tidak dapat diakses
Proses Kompilasi dan Eksekusi kode C
Untuk memahami Java Sebelum membahas proses kompilasi, mari kita lihat sekilas proses kompilasi dan penautan dalam bahasa C.
Misalkan di dalam fungsi utama Anda telah memanggil dua fungsi, f1 dan f2. Fungsi utama tersebut tersimpan dalam file a1.c.
Fungsi f1 disimpan dalam file a2.c.
Fungsi f2 disimpan dalam file a3.c.
Semua file ini, yaitu a1.c, a2.c, dan a3.c, dimasukkan ke dalam kompiler, yang keluarannya adalah file objek yang sesuai, yaitu kode mesin.
Langkah selanjutnya adalah mengintegrasikan semua file objek ini ke dalam satu file .exe dengan bantuan linker. Linker akan menggabungkan semua file ini dan menghasilkan file .exe.
Selama program berjalan, program pemuat akan memuat file a.exe ke dalam RAM untuk dieksekusi.
Java Kompilasi dan Eksekusi kode di Java VM
Sekarang, mari kita lihat prosesnya untuk JavaDi fungsi utama Anda, terdapat dua metode, f1 dan f2.
- Metode utama tersimpan dalam file a1.java
- f1 disimpan dalam file sebagai a2.java
- f2 disimpan dalam file sebagai a3.java
Compiler akan mengkompilasi ketiga file tersebut dan menghasilkan tiga file .class yang sesuai, yang terdiri dari kode BYTE. Tidak seperti C, tidak ada proses linking yang dilakukan.
The Java VM, atau Java Mesin virtual berada di RAM. Selama eksekusi, dengan menggunakan class loader, file kelas dimasukkan ke dalam RAM. Kode BYTE diverifikasi untuk setiap pelanggaran keamanan.
Selanjutnya, mesin eksekusi akan mengubah bytecode menjadi kode mesin asli. Ini adalah kompilasi just-in-time. Ini adalah salah satu alasan utama mengapa Java relatif lambat.
CATATAN: JIT, atau Just-in-time compiler, adalah bagian dari Java Mesin Virtual (JVM). Ia menginterpretasikan bagian-bagian kode byte yang memiliki fungsi serupa secara bersamaan.
Mengapa Java baik Bahasa yang Ditafsirkan maupun yang Disusun?
Bahasa pemrograman diklasifikasikan sebagai:
- Bahasa Tingkat Tinggi, misalnya, C++, Java
- Bahasa Pemrograman Tingkat Menengah, misalnya, C
- Bahasa Tingkat Rendah, misalnya, Assembly
- Terakhir, level terendah adalah Bahasa Mesin.
A penyusun adalah program yang mengkonversi program dari satu tingkat bahasa ke tingkat bahasa lainnya. Misalnya, konversi sebuah program C++ program menjadi kode mesin. Itu Java compiler mengkonversi tingkat tinggi Java mengubah kode menjadi bytecode (yang juga merupakan jenis kode mesin).
An penerjemah adalah program yang mengkonversi program pada satu level ke bahasa pemrograman lain. tingkat yang samaMisalnya, konversi sebuah Java memprogram ke dalam C++.
In JavaGenerator kode Just-In-Time mengkonversi bytecode menjadi kode mesin asli, yang berada pada tingkat pemrograman yang sama. Oleh karena itu, Java adalah bahasa yang dikompilasi sekaligus diinterpretasikan.
Mengapa Java lambat?
Dua alasan utama di balik lambatnya Java adalah:
- Tautan Dinamis: Berbeda dengan C, penautan dilakukan pada saat run-time, setiap kali program dijalankan Java.
- Penerjemah Waktu Proses: Konversi kode byte menjadi kode mesin asli dilakukan pada saat run-time Java, yang selanjutnya memperlambat kecepatan.
Namun, versi terbaru dari Java telah mengatasi hambatan kinerja ini secara signifikan.












