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'.

  • 🧩 Jembatan Kode Byte: The Java Compiler menghasilkan bytecode, bukan kode mesin, dan JVM menginterpretasikan bytecode tersebut pada sistem host mana pun.
  • Core Architekstur: JVM menggabungkan ClassLoader, area metode, heap, stack, register PC, dan mesin eksekusi untuk menjalankan program.
  • 🔄 Alur Kompilasi: Berbeda dengan C, Java Tidak memerlukan penautan; file kelas dimuat ke dalam RAM, diverifikasi, dan kemudian dieksekusi saat runtime.
  • Kompiler JIT: Compiler Just-In-Time mengkonversi bytecode menjadi kode mesin asli selama eksekusi untuk meningkatkan kinerja.
  • 🐢 Catatan Kinerja: Penautan dinamis dan interpretasi saat runtime secara historis membuat Java lebih lambat, meskipun versi modern sebagian besar menutup kesenjangan itu.

FMV Architekstur

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

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.

FMV Architekstur

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 utama kode C a1.c

Fungsi f1 disimpan dalam file a2.c.

Kode C fungsi f1 a2.c

Fungsi f2 disimpan dalam file a3.c.

Kode C fungsi f2 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.

Kompiler kode C menghasilkan file objek.

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.

Penghubung kode C menghasilkan file exe.

Selama program berjalan, program pemuat akan memuat file a.exe ke dalam RAM untuk dieksekusi.

Program pemuat kode C memuat file .exe ke dalam RAM.

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

Java Kode tersebut mengkompilasi tiga file menjadi file kelas.

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.

Java Class loader memasukkan file kelas ke dalam RAM.

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.

Java Mesin eksekusi mengkonversi bytecode ke kode asli.

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:

  1. Tautan Dinamis: Berbeda dengan C, penautan dilakukan pada saat run-time, setiap kali program dijalankan Java.
  2. 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.

Pertanyaan Umum Demo Slot

JVM menjalankan kerangka kerja AI dan big data seperti Deeplearning4j, Weka, dan Apache. SparkKompiler Just-In-Time dan manajemen memorinya memungkinkan pustaka-pustaka ini memproses kumpulan data besar secara efisien di berbagai platform tanpa perlu menulis ulang kode asli.

Ya. Profiler yang dibantu AI dapat menganalisis log pengumpulan sampah, menyarankan ukuran heap, dan menandai metode yang lambat. Mereka membantu menyetel flag JVM dan menemukan hambatan lebih cepat, meskipun pengembang tetap harus memvalidasi setiap perubahan yang direkomendasikan.

JVM menjalankan bytecode. JRE menggabungkan JVM dengan pustaka inti yang dibutuhkan untuk menjalankannya. Java program. JDK menambahkan alat pengembangan seperti kompiler dan debugger, sehingga digunakan untuk membangun aplikasi.

Bytecode bersifat independen platform, tetapi JVM itu sendiri bergantung pada platform. Setiap sistem operasi membutuhkan implementasi JVM-nya sendiri. Desain ini memungkinkan bytecode yang telah dikompilasi berjalan di mana pun JVM yang kompatibel terpasang.

Ringkaslah postingan ini dengan: