Apakah Perbezaan Antara DVM dan JVM?

1. Pengenalan

Dalam artikel ini, kita akan meneroka perbezaan antara Java Virtual Machine (JVM) dan Dalvik Virtual Machine (DVM) . Pertama-tama kita akan melihat masing-masing dan kemudian membuat perbandingan.

2. Apa itu Runtime?

Sistem runtime menyediakan persekitaran untuk menterjemahkan kod yang ditulis dalam bahasa tahap tinggi seperti Java ke kod mesin dan dapat difahami oleh Central Process Unit (CPU).

Kami dapat membezakan jenis penterjemah ini:

  • Assemblers: Mereka secara langsung menerjemahkan kod pemasangan ke kod mesin sehingga cepat
  • Penyusun: Mereka menerjemahkan kod tersebut menjadi kod pemasangan, kemudian menggunakan kimpalan untuk menterjemahkan kod yang dihasilkan menjadi binari. Menggunakan teknik ini lambat tetapi pelaksanaannya cepat. Juga, kod mesin yang dihasilkan bergantung pada platform
  • Pentafsir: Mereka menerjemahkan kod semasa melaksanakannya. Oleh kerana terjemahan berlaku pada waktu runtime, pelaksanaannya mungkin lambat

3. Mesin Maya Java

JVM adalah mesin maya untuk menjalankan aplikasi Java, desktop, dan web. Satu lagi perkara penting mengenai Java adalah ia dikembangkan dengan mempertimbangkan kemudahan mudah alih. Oleh itu, JVM telah dibentuk untuk menyokong pelbagai seni bina hos dan berjalan di mana-mana sahaja . Tetapi, ia terlalu berat untuk peranti tertanam.

Java mempunyai komuniti yang aktif dan akan terus digunakan secara meluas di masa depan. Lebih-lebih lagi, HotSpot adalah pelaksanaan rujukan JVM. Selain itu, terdapat lebih dari lima pelaksanaan lain yang dikendalikan oleh Open Source Community.

Dengan rilis berdasarkan irama baru, Java dan JVM menerima kemas kini baru setiap enam bulan. Sebagai contoh, kami dapat menyenaraikan beberapa cadangan untuk siaran seterusnya seperti Akses Memori Asing dan Alat Pembungkusan

4. Mesin Maya Dalvik

DVM adalah mesin maya untuk menjalankan aplikasi Android. DVM melaksanakan bytecode Dalvik, yang disusun dari program yang ditulis dalam bahasa Java. Perhatikan bahawa DVM bukan JVM.

Salah satu prinsip reka bentuk utama DVM adalah bahawa ia harus berjalan pada peranti mudah alih dengan memori rendah dan memuat lebih cepat berbanding dengan JVM mana pun. Juga, VM ini lebih cekap apabila menjalankan banyak keadaan pada peranti yang sama.

Pada tahun 2014, Google mengeluarkan Android Runtime (ART) untuk Android 5 yang menggantikan Dalvik untuk peningkatan penggunaan bateri prestasi aplikasi. Versi terakhir ialah 1.6.0 pada Android 4.4.

5. Perbezaan Antara JVM dan DVM

5.1. Senibina

JVM adalah VM berasaskan timbunan di mana semua operasi aritmetik dan logik dilakukan melalui operasi tekan dan pop dan hasilnya disimpan di timbunan. Tumpukan juga merupakan struktur data untuk menyimpan kaedah.

Sebaliknya DVM adalah VM berdasarkan daftar . Daftar ini terletak di CPU menjalankan semua operasi aritmetik dan logik. Daftar adalah struktur data untuk menyimpan operan.

5.2. Penyusunan

Kod Java disusun di dalam JVM ke format perantara yang disebut Java bytecode (.class files). Kemudian, JVM menguraikan bytecode Java yang dihasilkan dan menerjemahkannya ke kod mesin .

Pada peranti Android, DVM menyusun kod Java ke format perantaraan yang disebut Java bytecode (.class file) seperti JVM. Kemudian, dengan bantuan alat yang disebut Dalvik eXchange atau dx, ia mengubah Java bytecode menjadi Dalvik bytecode . Akhirnya, DVM menterjemahkan bytecode Dalvik kepada kod mesin binari .

Kedua-dua VM menggunakan Penyusun Just-In-Time (JIT) . Pengkompil JIT adalah jenis penyusun yang melakukan penyusunan semasa waktu proses.

5.3. Persembahan

Seperti yang dilihat sebelumnya, JVM adalah VM berasaskan Stack dan DVM adalah VM berasaskan Daftar. Bytecode VM berasaskan tumpukan sangat padat kerana lokasi operand secara tersirat pada stack operand. Bytecode VM berasaskan daftar memerlukan semua arahan tersirat menjadi sebahagian daripada arahan. Itu menunjukkan bahawa ukuran kod berdasarkan Daftar biasanya akan jauh lebih besar daripada kod bytec berasaskan Stack.

Sebaliknya, VM berdasarkan daftar dapat menyatakan perhitungan menggunakan petunjuk VM lebih sedikit daripada VM berasaskan timbunan yang sesuai. Menghantar arahan VM sangat mahal, jadi pengurangan arahan VM yang dilaksanakan cenderung meningkatkan kelajuan VM berdasarkan daftar .

Sudah tentu, perbezaan ini hanya relevan ketika menjalankan VM dalam mod tafsiran.

5.4. Pelaksanaan

Walaupun mungkin untuk menyiapkan instance JVM per aplikasi yang sedang berjalan, biasanya kami hanya akan mengkonfigurasi satu contoh JVM dengan proses bersama dan ruang memori untuk menjalankan semua aplikasi yang telah kami gunakan.

Walau bagaimanapun, Android dirancang untuk menjalankan beberapa contoh DVM. Jadi untuk menjalankan aplikasi atau perkhidmatan, OS Android membuat instance DVM baru dengan proses terpisah di ruang memori bersama dan menerapkan kod untuk menjalankan aplikasi.

6. Kesimpulannya

Dalam tutorial ini, kami menunjukkan perbezaan utama antara JVM dan DVM. Kedua-dua aplikasi menjalankan VM ditulis dalam Java, tetapi mereka menggunakan teknik dan proses yang berbeza untuk menyusun dan menjalankan kod.