Apa itu JVM? Java Mesin virtual Architekstur

Apa itu JVM di Java?

Java Mesin Virtual (JVM) adalah mesin yang menyediakan lingkungan runtime untuk menggerakkan Java Kode atau aplikasi. Itu mengubah Java bytecode ke dalam bahasa mesin. JVM adalah bagian dari Java Lingkungan Waktu Proses (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 ditafsirkan pada mesin yang berbeda. Antara sistem host dan Java sumber, Bytecode adalah bahasa perantara. JVM di Java bertanggung jawab untuk mengalokasikan ruang memori.


Bagaimana JVM Bekerja
Bekerja dari Java Mesin Virtual (JVM)

Dalam tutorial JVM ini, Anda akan belajar-

Architekstur JVM (Java (Mesin Virtual)

Sekarang dalam tutorial JVM ini, mari kita pahami ArchiArsitektur JVM. Arsitektur JVM di Java berisi classloader, area memori, mesin eksekusi, dll.

 


FMV Architekstur
Java Mesin virtual Architekstur

1) Pemuat Kelas
Class loader adalah subsistem yang digunakan untuk memuat berkas kelas. Ia menjalankan tiga fungsi utama, yaitu: Memuat, Menghubungkan, dan Inisialisasi.

2) Bidang Metode
Area Metode JVM menyimpan struktur kelas seperti metadata, kumpulan runtime konstan, 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 utas memiliki tumpukan JVM-nya sendiri, yang dibuat secara bersamaan saat utas dibuat. Bingkai baru dibuat setiap kali metode dipanggil, dan dihapus saat proses pemanggilan metode selesai.

5) Register PC
Register PC menyimpan alamat Java instruksi mesin virtual yang sedang dijalankan. Di dalam Java, setiap thread memiliki register PC terpisah.

6) Tumpukan Metode Asli
Tumpukan metode asli menyimpan instruksi kode asli bergantung pada perpustakaan asli. Itu ditulis dalam bahasa lain, bukan Java.

7) Mesin Eksekusi
Ini adalah jenis perangkat lunak yang digunakan untuk menguji perangkat keras, perangkat lunak, atau sistem lengkap. Mesin pelaksanaan pengujian tidak pernah membawa informasi apa pun tentang produk yang diuji.

8) Antarmuka Metode Asli
Antarmuka Metode Asli adalah kerangka pemrograman. Itu memungkinkan Java kode yang berjalan di JVM untuk dipanggil oleh perpustakaan dan aplikasi asli.

9) Perpustakaan Metode Asli
Perpustakaan Asli adalah kumpulan Perpustakaan Asli (C, C++) yang dibutuhkan oleh Mesin Eksekusi.

Proses Kompilasi & Eksekusi Kode Perangkat Lunak

Untuk menulis dan menjalankan program perangkat lunak, Anda memerlukan hal berikut:

1) Redaktur – Untuk mengetikkan program Anda, notepad dapat digunakan untuk ini

2) Penyusun – Untuk mengubah program bahasa tinggi Anda menjadi kode mesin asli

3) Penghubung – Untuk menggabungkan referensi file program yang berbeda dalam program utama Anda bersama-sama.

4) Pemuat – Untuk memuat file dari perangkat penyimpanan sekunder Anda seperti Hard Disk, Flash Drive, CD ke dalam RAM untuk dieksekusi. Pemuatan dilakukan secara otomatis saat Anda mengeksekusi kode Anda.

5) Eksekusi – Eksekusi kode sebenarnya yang ditangani oleh OS & prosesor Anda.

Dengan latar belakang ini, lihat video berikut & 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 proses kompilasi di JavaMari kita lihat sekilas proses kompilasi dan penautan dalam bahasa C.

Misalkan di main, Anda telah memanggil dua fungsi f1 dan f2. Fungsi main disimpan di file a1.c.

Proses Kompilasi dan Eksekusi kode C

Fungsi f1 disimpan dalam file a2.c

Proses Kompilasi dan Eksekusi kode C

Fungsi f2 disimpan dalam file a3.c

Proses Kompilasi dan Eksekusi kode C

Semua berkas ini, yaitu a1.c, a2.c, dan a3.c, diumpankan ke kompiler. Outputnya adalah berkas objek terkait yang merupakan kode mesin.

Proses Kompilasi dan Eksekusi kode C

Langkah selanjutnya adalah mengintegrasikan semua file objek tersebut ke dalam satu file .exe dengan bantuan linker. Linker akan menggabungkan semua file ini dan menghasilkan file .exe.

Proses Kompilasi dan Eksekusi kode C

Selama program dijalankan, program pemuat akan memuat a.exe ke dalam RAM untuk eksekusi.

Proses Kompilasi dan Eksekusi kode C

Java Kompilasi dan Eksekusi kode di Java VM

Sekarang dalam tutorial JVM ini, mari kita lihat proses untuk JAVA. Di utama Anda, Anda memiliki dua metode f1 dan f2.

  • Metode utama disimpan dalam file a1.java
  • f1 disimpan dalam file sebagai a2.java
  • f2 disimpan dalam file sebagai a3.java

Java Kompilasi dan Eksekusi kode di Java VM

Kompiler akan mengkompilasi ketiga file tersebut dan menghasilkan 3 file .class terkait yang terdiri dari kode BYTE. Berbeda dengan C, tidak ada penautan yang dilakukan.

Java VM atau Java Mesin Virtual berada di RAM. Selama eksekusi, menggunakan class loader, file-file kelas dibawa ke RAM. Kode BYTE diverifikasi untuk setiap pelanggaran keamanan.

Java Kompilasi dan Eksekusi kode di Java VM

Selanjutnya, mesin eksekusi akan mengubah Bytecode menjadi kode mesin asli. Ini adalah kompilasi tepat waktu. Ini adalah salah satu alasan utama mengapa Java relatif lambat.

Java Kompilasi dan Eksekusi kode di Java VM

CATATAN: JIT atau Kompiler Just-in-time adalah bagian dari Java Mesin Virtual (JVM). Ini menafsirkan bagian dari Kode Byte yang memiliki fungsi serupa pada saat yang bersamaan.

Mengapa Java baik Bahasa yang Ditafsirkan maupun yang Disusun?

Bahasa pemrograman diklasifikasikan sebagai

  • Bahasa Tingkat Tinggi Ex. C++, Java
  • Bahasa Tingkat Menengah Ex. C
  • Bahasa Tingkat Rendah Ex Assembly
  • akhirnya level terendah sebagai Bahasa Mesin.

A penyusun adalah program yang mengubah suatu program dari satu tingkat bahasa ke tingkat bahasa lainnya. Contoh konversi dari C++ program menjadi kode mesin. Kompiler Java mengubah kode Java tingkat tinggi menjadi bytecode (yang juga merupakan jenis kode mesin).

An penerjemah adalah program yang mengkonversi program pada satu level ke bahasa pemrograman lain di tingkat yang sama. Contoh konversi dari Java memprogram ke dalam C++

In Java, generator Kode Just In Time mengubah bytecode menjadi kode mesin asli yang berada pada tingkat pemrograman yang sama.

Karenanya, Java adalah bahasa yang dikompilasi dan ditafsirkan.

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 Java telah mengatasi sebagian besar hambatan kinerja.

Kesimpulan:

  • Bentuk lengkap JVM adalah Java Mesin Virtual. JVM di Java adalah mesin yang menggerakkan Java Kode. Itu mengubah Java bytecode ke dalam bahasa mesin.
  • Arsitektur JVM di Java berisi classloader, area memori, mesin eksekusi, dll.
  • Di JVM, Java kode dikompilasi menjadi bytecode. Bytecode ini diinterpretasikan pada mesin yang berbeda
  • JIT adalah singkatan dari kompiler Just-in-time. JIT adalah bagian dari Java Mesin Virtual (JVM). Digunakan untuk mempercepat waktu eksekusi
  • Dibandingkan dengan mesin kompiler lainnya, JVM di Java mungkin lambat dalam eksekusi.