Last Updated on April 7, 2022 by
Java Virtual Machine (JVM) adalah program yang bertujuan untuk mengeksekusi berbagai program. Ia memiliki dua fungsi utama. Pertama, JVM berfungsi memungkinkan program Java untuk dapat dijalankan di berbagai perangkat dan sistem operasi yang sesuai dengan jargon Java sendiri “Write Once, Run Anywhere” yang berarti menulis kode sekali dengan Java Anda dapat menjalankan program tersebut di berbagai perangkat maupun sistem operasi.
Kedua, ketika Java dirilis pada tahun 1995, seluruh program komputer ditulis dengan sistem operasi yang sudah ditentukan dan memori program juga diatur langsung oleh software milik developer untuk itulah JVM hadir menangani masalah tersebut.
Jika Anda ingin menjadi seorang developer Java, maka Anda harus menginstal JVM agar perangkat Anda dapat menjalankan program yang ditulis dalam bahasa pemrograman Java dengan baik.
JVM tidak hanya dapat menjalankan aplikasi yang ditulis dengan bahasa pemrograman Java tetapi juga dari bahasa pemrograman lain dengan ketentuan kode tersebut harus berbentuk “Java bytecode.”
Table of Contents
Manajemen Memori pada JVM
Interaksi yang paling banyak dan paling umum dilakukan ketika Anda menggunakan JVM adalah mengecek penggunakan memori pada heap & stack, kemudian melakukan penyesuaian yang juga paling umum pada JVM yaiti menyetel pengaturan memori JVM.
Pada Java, memori program akan diatur oleh JVM. Berbeda dengan bahasa pemrograman lain, di mana memori diatur oleh programmer sendiri.
JVM mengelola memorinya dengan proses yang disebut sebagai garbage collection, yang secara berkelanjutan mengidentifikasi dan menghilangkan memori yang tidak lagi digunakan pada program Java. Garbage collection akan terjadi di dalam JVM yang sedang berjalan.
JVM mengelola memori melalui proses yang disebut pengumpulan sampah.
Awalnya, Java mendapat banyak kritik karena tidak “close to metal” seperti C ++, dan karena garbage collection tidak secepat itu. Proses garbage collection saat itu menjadi sangat kontroversial.
Namun, sejak itu pula, berbagai algoritma dan pendekatan telah diusulkan dan digunakan untuk garbage collection. Dengan pengembangan dan pengoptimalan yang konsisten, garbage collection telah meningkat pesat. Adanya garbage collection inilah yang membuat aplikasi atau web yang Anda buat menjadi semakin cepat dan baik.
Bagian-Bagian JVM
JVM memiliki tiga aspek utama yaitu specification (spesifikasi), implementation (implementasi), dan instance (instans), dengan penjelasan masing-masing sebagai berikut:
1. JVM Specification
Aspek pertama adalah specification. JVM adalah sebuah software specification atau spesifikasi perangkat lunak. Software specification adalah dokumen desain yang dapat dibaca manusia yang menjelaskan bagaimana sistem dari suatu software harus beroperasi.
Tujuan dari spesifikasi adalah untuk membuat deskripsi dan persyaratan yang jelas bagi teknisi untuk membuat kode. Spesifikasi JVM ini menonjolkan detail implementasinya yang tidak ditentukan dalam spesifikasi, sehingga memungkinkan kreativitas maksimum dalam realisasinya.
2. JVM Implementation
Penerapan spesifikasi JVM menghasilkan software yang sesungguhnya. Ada banyak implementasi JVM baik yang berupa open source, maupun proprietary. HotSpot JVM OpenJDK adalah implementasi referensi dan tetap menjadi salah satu basis kode yang paling benar-benar dicoba dan diuji di dunia. Hotspot juga merupakan JVM yang paling umum digunakan.
Hampir seluruh JVM berlisensi dibuat sebagai cabang dari OpenJDK dan HotSpot JVM termasuk JDK berlisensi oracle. Pengembang yang membuat lisensi dari OpenJDK seringkali ingin menambahkan peningkatan kerja khusus sistem operasi. Biasanya, Anda mengundh dan menginstal JVM sebagai bagian bundel dari Java Runtime Environment (JRE).
3. Java Instance
Setelah spesifikasi JVM diimplementasikan dan dirilis sebagai produk software, Anda dapat mengunduh dan menjalankannya sebagai program. Program yang diunduh tersebut adalah instance dari JVM. Sering kali, saat pengembang berbicara tentang “JVM”, mengacu pada instans JVM yang berjalan di lingkungan pengembangan atau produksi software.
Secara arsitekturnya, JVM adalah sebuah mesin yang abstrak. Secara spesifikasi, JVM menyediakan lingkungan runtime yang mana dapat dieksekusi menggunakan Java bytecode. JVM sendiri tersedia untuk banyak platform hardware dan sofrware karena JVM bersifat dependen.
JVM menjalankan file kelas Java dengan cara portable. Jadi, yang harus JVM lakukan hanyalah menjalankan program Java dengan benar. Kedengarannya sederhana, bahkan mungkin terlihat sederhana dari luar, tetapi ini merupakan pekerjaan yang sangat besar, terutama mengingat kekuatan dan fleksibilitas bahasa Jawa.
Terlepas dari sistem operasi atau perangkat keras apa yang sebenarnya ada, JVM menciptakan lingkungan yang dapat diprediksi untuk menjalankan program di dalamnya. Tidak seperti mesin virtual yang sebenarnya, JVM tidak membuat sistem operasi virtual. Akan lebih akurat untuk menggambarkan JVM sebagai lingkungan runtime terkelola, atau mesin virtual proses.
Spesifikasi tempat kerja JVM sendiri sudah ditentukan. Namun, penyedia implementasi secara independen atau dapat melakukan sendiri pemilihan algoritma. Implementasinya telah disediakan oleh Oracle ataupun perusahaan lain.
Implementasi ini kemudian dikenal dengan nama Java Runtime Environment (JRE). Java akan melakukan Runtime Instance setiap kali Anda menulis perintah Java pada command prompt untuk menjalankan kelas Java ketika sebuah instance JVM dibuat.
JVM dapat melakukan beberapa tugas seperti memuat kode, memverifikasi kode, mengeksekusi kode, serta menyediakan lingkungan runtime untuk pengkodean Java. JVM juga memberi definisi pada area memori, format file kelas, daftar set, tumpukan samlah atau garbage-collected heap, dan pelaporan kesalahan fatal (fatal error reporting) dan masih banyak lagi.
Fitur-Fitur JVM
Java Virtual Machine memuat dan menjalankan fungsinya yaitu memuat dan menjalankan file kelas dengan bergantung pada loader kelas Java dan execution machine Java. Berikut masing-masing penjelasan tentang fitur JVM.
1. Classloader
Classloader adalah sebuah subsistem dari Java Virtual Machine yang digunakan untuk memuat file kelas. Ketika kita menjalankan program ini, ia akan dimuat pertama kali oleh classloader. Terdapat tiga built-in yang ada pada classloader Java yaitu:
a. Bootstrap Classloader
Bootstrap Classloader adalah kelas versi super dari extention classloader. Bootstrap Classloader memuat rt.jar, sebuah file yang menyimpan seluruh file kelas dari Java Standard Edition (JVE) seperti paket kelas java.lang, paket kelas java.net, paket kelas java.util, paket kelas java.io, paket kelas java.sql dan masih banyak lagi lainnya.
b.Extention Classloader
Extention Classloader ini adalah anak classloader dari Bootstrap dan classloader induk dari classloader sistem. Extention Classloader memuat file jar yang terletak di dalam direktori $JAVA_HOME/jre/lib/ext directory.
c. System/Application Classloader
System/Application Classloader adalah anak classloader dari Extention Classloader. System/ Application Classloader memuat file kelas dari classpath. Secara default, classpath ini disetel ke direktori yang ada saat itu. Anda dapat mengubah Classpath menggunakan kode “-cp” atau “-classpath”.
2. Class(Method) Area
Class(Method) Area adalah tempat penyimpanan struktur per kelas seperti kumpulan runtime konstan, data bidang, metode, serta kode-kode untuk metode.
3. Heap
Heap adalah area data runtime tempat sudatu objek dialokasikan.
4. Stack
Java Stack memiliki banyak sekalo frame. Stack memegang variabel lokal, hasil sebagian, dan berperan dalam pemanggilan dan pengembalian kode. Setiap utas memiliki tumpukan JVM sendiri, dibuat pada waktu yang sama dengan utas.
Bingkai yang baru akan dibuat setiap kali metode dipanggil. Sementara itu, suatu frame akan dihancurkan ketika pemanggilan metode selesai.
5. Program Counter Register (PC Register)
PC Register berisikan alamat instruksi dari Java Virtual Machine yang sedang dijalankan.
6. Native Method Stack
Native Method Stack berisi seluruh metode native yang digunakan pada aplikasi.
7. Execution Engine
Setelah classloader menyelesaikan tugasnya memuat kelas, JVM mulai menjalankan kode di setiap kelas. Execution Engine yang menangani fungsi ini. Execution Engine JVM berdiri di antara program yang sedang berjalan – dengan tuntutannya akan file, jaringan dan sumber daya memori – dan sistem operasi, yang memasok sumber daya tersebut.Execution Engine ini berisikan:
- Virtual prosesor.
- Interpreter untuk membaca bytecode stream yang kemudian mengeksekusi instruksi.
- Just-In-Time (JIT) compiler, yang digunakan untuk meningkatkan performa. JIT merupakan kumpulan bagian dari byte code yang memiliki fungsi mirip di waktu yang sama. Adanya JIT dapat mengurangi jumlah waktu yang dibutuhkan untuk kompilasi. Di sini, istilah kompilator mengacu pada penerjemah dari set instruksi JVN ke set instruksi dari CPU tertentu.
8. Java Native Interface
Java Native Interface (JNI) adalah sebuah framework yang menyediaka sebuah interface untuk mengkomunikasikan dengan aplikasi lain yang ditulis dalam bahasa pemrograman lain seperti C, C++, Assembly, dan berbagai bahasa lain.
Java menggunakan framework JNI untuk mengirim output ke konsol atau berinteraksi dengan perpustakaan OS.
Bagaimana JVM menjalankan fungsinya?
System Resource dapat dibagi menjadi dua kategori besar yaitu memori dan yang lainnya. Seperti yang sudah dijelaskan sebelumnya, JVM berfungsi membuang memori yang tidak digunakan dan garbage collection adalah mekanisme yang bertugas menjalankan hal tersebut.
JVM juga bertanggung jawab untuk mengalokasikan dan memelihara struktur referensial yang diterima oleh pengembang. Sebagai contoh, Execution Engine JVM bertanggung jawab untuk mengambil sesuatu seperti kata kunci baru di Java, dan mengubahnya menjadi permintaan khusus OS untuk alokasi memori.
Di luar memori, Execution Engine berfungsi mengelola sumber daya untuk akses sistem file dan jaringan I / O. Karena JVM dapat dioperasikan di seluruh sistem operasi, hal ini pun bukanlah tugas yang berarti. Selain kebutuhan sumber daya setiap aplikasi, Execution Engine harus responsif terhadap setiap lingkungan OS. Begitulah cara JVM dapat menangani permintaan.
Demikianlah penjelasan tentang Java Virtual Machine. Pada dasarnya JVM dapat dijalankan di berbagai bahasa pemrograman dengan syarat dan ketentuan yang sudah ditulis sebelumnya.
Namun, apabila Anda seorang Java Developer, JVM adalah software yang harus Anda pahami dan Anda instal di perangkat Anda agar dapat mengerjakan proyek Java Anda dengan lebih baik.
Ingin tahu lebih banyak perihal mockup atau pun desain website? Jangan lupa kunjungi Website Appkey.id dan dapatkan seluruh informasi terbaru seputar website.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.