Apa itu JVM?
Java Virtual Machine (JVM) adalah mesin yang menyediakan lingkungan waktu proses untuk mendorong Java Code atau aplikasi. Ia menukar Java bytecode menjadi bahasa mesin. JVM adalah bahagian dari Java Run Environment (JRE). Dalam bahasa pengaturcaraan lain, penyusun menghasilkan kod mesin untuk sistem tertentu. Namun, penyusun Java menghasilkan kod untuk Mesin Maya yang dikenali sebagai Mesin Maya Java.
Inilah cara JVM berfungsi
Pertama, kod Java dipatuhi oleh kod bytec. Bytecode ini ditafsirkan pada mesin yang berbeza
Antara sistem host dan sumber Java, Bytecode adalah bahasa perantara.
JVM di Java bertanggungjawab untuk memperuntukkan ruang memori.

Dalam tutorial JVM ini, anda akan belajar-
- Senibina JVM
- Proses Penyusunan & Pelaksanaan Kod Perisian
- Proses penyusunan dan Pelaksanaan kod C
- Proses Penyusunan dan Pelaksanaan kod Java
- Mengapa Java ditafsirkan dan Disusun Bahasa?
- Mengapa Java lambat?
Senibina JVM
Sekarang dalam tutorial JVM ini, mari kita fahami Senibina JVM. Senibina JVM di Java mengandungi pemuat kelas, kawasan memori, mesin pelaksanaan dll.
1) Pemuat Kelas
Pemuat kelas adalah subsistem yang digunakan untuk memuatkan fail kelas. Ia melakukan tiga fungsi utama iaitu. Memuat, Menghubungkan, dan Permulaan.
2) Kawasan Kaedah
Kawasan Kaedah JVM menyimpan struktur kelas seperti metadata, kumpulan waktu operasi tetap, dan kod kaedah.
3) timbunan
Semua Objek, pemboleh ubah contoh yang berkaitan, dan susunan disimpan di timbunan. Memori ini biasa dan dikongsi di pelbagai utas.
4) Tumpukan bahasa JVM
Bahasa Java Stack menyimpan pemboleh ubah tempatan, dan hasilnya separa. Setiap utas mempunyai timbunan JVM sendiri, dibuat serentak semasa utas dibuat. Kerangka baru dibuat setiap kali kaedah dipanggil, dan dihapus ketika proses pemanggilan metode selesai.
5) Daftar PC
Daftar PC menyimpan alamat arahan mesin maya Java yang sedang dijalankan. Di Jawa, setiap utas mempunyai daftar PC tersendiri.
6) Tumpukan Kaedah Asli
Tumpukan kaedah asli memegang arahan kod asli bergantung pada pustaka asli. Ia ditulis dalam bahasa lain dan bukannya Java.
7) Enjin Pelaksanaan
Ini adalah jenis perisian yang digunakan untuk menguji perkakasan, perisian, atau sistem lengkap. Enjin pelaksanaan ujian tidak pernah membawa maklumat mengenai produk yang diuji.
8) Antara muka Kaedah Asli
Antaramuka Kaedah Native adalah kerangka pengaturcaraan. Ini membenarkan kod Java yang berjalan di JVM untuk memanggil oleh perpustakaan dan aplikasi asli.
9) Perpustakaan Kaedah Asli
Native Libraries adalah koleksi Perpustakaan Asli (C, C ++) yang diperlukan oleh Execution Engine.
Proses Penyusunan & Pelaksanaan Kod Perisian
Untuk menulis dan melaksanakan program perisian, anda memerlukan yang berikut
1) Editor - Untuk menaip program anda, notepad dapat digunakan untuk ini
2) Compiler - Untuk menukar program bahasa tinggi anda menjadi kod mesin asli
3) Linker - Untuk menggabungkan rujukan fail program yang berbeza dalam program utama anda bersama-sama.
4) Loader - Untuk memuatkan fail dari peranti simpanan sekunder anda seperti Hard Disk, Flash Drive, CD ke dalam RAM untuk pelaksanaan. Pemuatan dilakukan secara automatik semasa anda menjalankan kod anda.
5) Pelaksanaan - Pelaksanaan kod sebenar yang dikendalikan oleh OS & pemproses anda.
Dengan latar belakang ini, rujuk video berikut & pelajari cara kerja dalaman dan seni bina JVM (Mesin Maya Java).
Klik di sini jika video tidak dapat diakses
Proses penyusunan dan Pelaksanaan kod C
Untuk memahami proses penyusunan Java di Java. Mari kita lihat dahulu proses penyusunan dan penghubung di C.
Katakan pada utama, anda telah memanggil dua fungsi f1 dan f2. Fungsi utama disimpan dalam fail a1.c.
Fungsi f1 disimpan dalam fail a2.c
Fungsi f2 disimpan dalam fail a3.c
Semua fail ini, iaitu, a1.c, a2.c, dan a3.c, dimasukkan ke penyusun. Yang outputnya adalah fail objek yang sesuai yang merupakan kod mesin.
Langkah seterusnya adalah mengintegrasikan semua fail objek ini ke dalam satu fail .exe dengan bantuan linker. Penghubung akan mengumpulkan semua fail ini bersama-sama dan menghasilkan fail .exe.
Semasa program dijalankan, program loader akan memuat a.exe ke dalam RAM untuk pelaksanaannya.
Penyusunan dan Pelaksanaan kod Java di Java VM
Sekarang dalam tutorial JVM ini, mari kita lihat proses untuk JAVA. Secara utama, anda mempunyai dua kaedah f1 dan f2.
- Kaedah utama disimpan dalam fail a1.java
- f1 disimpan dalam fail sebagai a2.java
- f2 disimpan dalam fail sebagai a3.java
Penyusun akan menyusun ketiga-tiga fail dan menghasilkan 3 fail .class yang sepadan yang terdiri daripada kod BYTE. Tidak seperti C, penghubung tidak dilakukan .
Java VM atau Java Virtual Machine berada pada RAM. Semasa pelaksanaan, menggunakan class loader fail kelas dibawa pada RAM. Kod BYTE disahkan untuk sebarang pelanggaran keselamatan.
Seterusnya, enjin pelaksanaan akan menukar Bytecode menjadi kod mesin Native. Ini tepat pada waktunya menyusun. Ini adalah salah satu sebab utama mengapa Java agak lambat.
CATATAN: Penyusun JIT atau Just-in-time adalah bahagian dari Mesin Maya Java (JVM). Ia menafsirkan sebahagian daripada Kod Byte yang mempunyai fungsi serupa pada masa yang sama.
Mengapa Java ditafsirkan dan Disusun Bahasa?
Bahasa pengaturcaraan dikelaskan sebagai- Bahasa Aras Tinggi Cth. C ++, Java
- Bahasa Tahap Pertengahan Cth. C
- Majlis Perhimpunan Bahasa Rendah
- akhirnya tahap paling rendah sebagai Bahasa Mesin.
A pengkompil adalah program yang menukarkan program dari satu tahap bahasa yang lain. Contoh penukaran program C ++ menjadi kod mesin.
Penyusun java menukar kod java tahap tinggi menjadi kod bytecode (yang juga merupakan jenis kod mesin).
An jurubahasa adalah program yang menukarkan program di satu tahap yang lain bahasa pengaturcaraan di tahap sama. Contoh penukaran program Java menjadi C ++
Di Java, penjana Kod Just In Time menukar kod byt menjadi kod mesin asli yang berada pada tahap pengaturcaraan yang sama.
Oleh itu, Java disusun dan juga bahasa yang ditafsirkan.
Mengapa Java lambat?
Dua sebab utama di sebalik kelambatan Java adalah
- Pautan Dinamik: Tidak seperti C, penghubung dilakukan pada waktu run, setiap kali program dijalankan di Java.
- Run-time Interpreter: Penukaran kod byte menjadi kod mesin asli dilakukan pada waktu larian di Java yang semakin jauh melambatkan kelajuan
Walau bagaimanapun, versi terbaru Java telah mengatasi masalah prestasi.
Ringkasan :
- Bentuk lengkap JVM adalah Java Virtual Machine. JVM di Java adalah mesin yang menggerakkan Java Code. Ia menukar Java bytecode menjadi bahasa mesin.
- Senibina JVM di Java mengandungi pemuat kelas, kawasan memori, mesin pelaksanaan dll.
- Di JVM, kod Java disusun ke kod bytec. Bytecode ini ditafsirkan pada mesin yang berbeza
- JIT bermaksud penyusun Just-in-time. JIT adalah bahagian dari Java Virtual Machine (JVM). Ia digunakan untuk mempercepat masa pelaksanaan
- Sebagai perbandingan dengan mesin penyusun lain, JVM di Java mungkin lambat dilaksanakan.