Perbedaan JRE dan JDK: peran JVM dan paket Java yang perlu dipasang
JRE (Java Runtime Environment) menjalankan program Java yang sudah dikompilasi. JDK (Java Development Kit) menyediakan kemampuan runtime ditambah compiler dan alat pengembangan, jadi pilih JDK ketika belajar Java atau membangun kode sumber. Untuk menjalankan aplikasi yang sudah ada, ikuti persyaratan run-time-nya; aplikasi yang menyertakan runtime sendiri mungkin tidak memerlukan instalasi Java terpisah.
Apa itu JRE?
JRE adalah lingkungan yang dibutuhkan untuk menjalankan program Java yang sudah dikompilasi. Ini menggabungkan JVM (Java Virtual Machine), pustaka kelas standar, dan file runtime pendukung. Bytecode adalah format instruksi yang digunakan oleh JVM, biasanya disimpan dalam file .class yang dihasilkan dari kode sumber Java.
Paket JRE tipe runtime saja biasanya tidak menyediakan compiler sumber javac. Oleh karena itu, kemampuan untuk menjalankan java tidak membuktikan bahwa alat pengembangan telah terpasang. Juga, bedakan konsep lingkungan runtime dari nama paket yang tersedia di situs unduhan tertentu.
Apa itu JDK?
Sebuah JDK menyediakan alat untuk mengembangkan dan menjalankan program Java. Gunakan javac untuk mengompilasi file sumber dan java untuk menjalankan program. JDK pengembangan sudah menyediakan kemampuan eksekusi, sehingga Anda tidak memerlukan instalasi JRE kedua hanya untuk menjalankan program dengan JDK tersebut.
javacmengompilasi file sumber.javamenjadi file.class.javamemulai JVM dan meluncurkan program Java.jarmengemas kelas dan sumber daya menjadi file JAR (Java Archive).javadocmenghasilkan dokumentasi API (Application Programming Interface) dari deklarasi dan komentar dokumentasi.jdbmendukung debugging, termasuk menghentikan eksekusi dan memeriksa variabel.
Ini tidak berarti bahwa JDK menyertakan setiap editor atau IDE (Integrated Development Environment). Anda bisa memilih editor secara terpisah, dan sebuah IDE mungkin mengharuskan Anda memilih JDK proyek untuk membangun kode. Peran compiler dijelaskan dalam referensi javac Oracle.
Bagaimana hubungan antara JVM, JRE, dan JDK?
JVM adalah komponen yang mengeksekusi bytecode. JRE menambahkan pustaka dan file pendukung untuk membentuk lingkungan runtime; JDK menambahkan alat pengembangan sekaligus menyediakan kemampuan runtime. Istilah-istilah ini menjelaskan peran dan cakupan yang berbeda.
Sebagai contoh, javac mengubah HelloWorld.java menjadi HelloWorld.class, dan java HelloWorld menjalankan program di JVM. File kelas dapat dijalankan di sistem operasi lain dengan runtime yang kompatibel, tetapi aplikasi yang menggunakan pustaka asli atau versi Java tertentu memiliki persyaratan tambahan. Lihat Pendahuluan spesifikasi Java Virtual Machine untuk hubungan antara JVM dan file kelas.
Perbandingan JRE vs JDK
| Kriteria | JRE hanya runtime | JDK |
|---|---|---|
| Tujuan utama | Menjalankan aplikasi yang telah dikompilasi | Mengembangkan, mengompilasi, dan menjalankan aplikasi |
| JVM dan pustaka runtime | Termasuk | Termasuk |
| peluncur java | Biasanya tersedia | Tersedia |
| kompiler javac | Biasanya tidak ada | Tersedia |
| Kapan harus memilihnya | Sebuah aplikasi membutuhkan runtime eksternal yang kompatibel | Belajar Java, membangun kode sumber atau pekerjaan pengembangan |
| Ketersediaan unduhan | Tergantung pada vendor, versi, dan sistem operasi | Pilih vendor dan platform yang didukung |
Tabel ini membandingkan peran biasa dari paket runtime saja dan paket pengembangan. Runtime khusus mungkin berisi pilihan modul yang berbeda, jadi hanya dengan namanya saja tidak menjamin setiap pustaka atau alat ada.
Apakah JDK modern berisi folder JRE?
"JDK menyertakan JRE" adalah penjelasan ringkas tentang kemampuan runtime, tetapi itu bukan deskripsi yang akurat untuk setiap tata letak direktori saat ini. JDK 8 dan sebelumnya menggunakan direktori internal jre/; JDK 9 memperkenalkan citra runtime modular. Oracle berhenti menawarkan unduhan JRE dan Server JRE terpisah dengan JDK 11. Panduan migrasi Oracle JDK 11 menjelaskan perubahan pengemasan dan tata letak ini.
Itu tidak berarti setiap vendor berhenti mendistribusikan paket hanya-runtime. Halaman unduhan Eclipse Temurin membedakan paket JDK dan JRE; periksa apa yang sebenarnya tersedia untuk versi dan sistem operasi yang Anda butuhkan. Perubahan pengemasan yang dibuat oleh satu vendor bukanlah aturan Java universal.
Pengembang juga dapat menggunakan alat jlink dari JDK untuk menyusun modul yang diperlukan beserta dependensinya menjadi citra runtime khusus. Menyertakan runtime tersebut bersama aplikasi dapat mengurangi kebutuhan untuk memasang JRE sistem secara terpisah. Pemilihan modul dan pembaruannya tetap menjadi tanggung jawab distributor, seperti dijelaskan pada referensi jlink.
Paket dan versi mana yang harus Anda pilih?
- Pembelajaran dan pengembangan: pilih versi JDK yang dibutuhkan oleh kursus atau proyek Anda, termasuk versi yang didukung oleh alat pembangunan dan pustaka.
- Menjalankan aplikasi yang sudah ada: periksa petunjuk instalasinya untuk versi Java yang dibutuhkan dan apakah memerlukan runtime eksternal. Mengubah Java sistem mungkin tidak berpengaruh pada aplikasi dengan runtime bawaan.
- Penyebaran server: sesuaikan modul yang dibutuhkan, sistem operasi, dan arsitektur CPU. Server yang juga membangun kode sumber atau membutuhkan alat JDK mungkin memerlukan JDK.
Angka versi yang lebih besar saja tidak menjamin kompatibilitas. Misalnya, runtime Java 17 tidak selalu bisa membaca kelas yang dikompilasi untuk Java 21. Menjalankan aplikasi lama pada Java yang lebih baru juga memerlukan pemeriksaan fitur yang dihapus dan kompatibilitas pustaka.
Untuk kode sumber Anda sendiri, pertimbangkan javac --release saat menargetkan rilis Java yang lebih awal yang didukung. Ini membatasi fitur bahasa, API platform, dan output berkas kelas, tetapi tidak secara otomatis membuat ketergantungan eksternal kompatibel. Uji hasilnya pada runtime target yang sebenarnya.
Pasang JDK dan periksa executable yang dipilih
Di halaman unduhan resmi, pilih jenis paket, versi Java, sistem operasi, dan arsitektur CPU, seperti x64 atau ARM64. Jika distributor menyediakan checksum, Anda dapat memverifikasi file yang diunduh menggunakan hash-nya sebelum instalasi.
Instalasi dan pemeriksaan Windows
Dengan installer Eclipse Temurin MSI, gunakan Custom Setup untuk memilih direktori instalasi dan fitur. Menambahkan Java ke PATH membantu penggunaan melalui command-line; pilih fitur JAVA_HOME jika alat build Anda membutuhkannya. Lihat panduan instalasi Temurin Windows untuk opsi-opsi ini. Setelah instalasi, tutup terminal yang ada dan buka terminal baru.
java -version
javac -version
Pastikan kedua perintah bekerja dan menampilkan versi utama Java yang diinginkan. Jika hanya java -version yang bekerja, runtime ditemukan tetapi kompiler mungkin tidak tersedia. Di PowerShell, periksa jalur yang dipilih dengan:
Get-Command java,javac | Select-Object Name,Source
PATH adalah daftar lokasi yang dicari terminal untuk file yang dapat dieksekusi. JAVA_HOME mengidentifikasi lokasi JDK untuk alat yang menggunakan variabel itu; arahkan ke root JDK, bukan direktori bin-nya. Jika kedua pengaturan merujuk ke instalasi yang berbeda, terminal dan alat build dapat menggunakan versi Java yang berbeda.
Pemeriksaan macOS dan Linux
Gunakan paket atau penginstal yang sesuai dengan sistem operasi Anda; lihat panduan instalasi Temurin untuk setiap platform untuk prosedurnya. Setelah instalasi, jalankan java -version dan javac -version. Untuk memeriksa perintah yang ditemukan shell, gunakan:
command -v java
command -v javac
Hasilnya bisa berupa tautan simbolik atau lokasi manajer versi, jadi jangan menyimpulkan versi Java hanya dari jalur. Periksa JDK proyek IDE dan hasil build juga. Memilih JDK baru per proyek sebelum menghapus instalasi yang lebih lama membuat lebih mudah untuk kembali ke konfigurasi yang berfungsi.
Lihat kompilasi dan eksekusi dalam contoh kecil
Dengan JDK yang tersedia, buat direktori kerja kosong dan simpan sumber ini sebagai HelloWorld.java. Cocokkan kapitalisasi nama file dengan nama kelas, dan pastikan editor tidak menambahkan ekstensi .txt. Contoh ini tidak menggunakan deklarasi paket atau pustaka eksternal.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
Buka terminal di direktori yang berisi file tersebut, lalu jalankan perintah-perintah ini secara berurutan:
javac HelloWorld.java
java -cp . HelloWorld
Perintah pertama membuat file kelas. Perintah kedua mencari kelas HelloWorld di direktori saat ini (.) dan menjalankannya. Jangan menambahkan .class ke nama kelas. Keluaran yang diharapkan adalah:
Hello, Java!
JDK 11 dan versi selanjutnya juga dapat menjalankan file sumber secara langsung dengan java HelloWorld.java. Ini melakukan kompilasi secara internal, sehingga nama peluncur tidak menyiratkan bahwa JRE yang hanya untuk runtime dapat melakukan operasi yang sama. Contoh dua langkah membuat perbedaan antara sumber/kelas menjadi terlihat. Lihat referensi java tentang eksekusi file sumber untuk kondisinya.
Untuk mengemas kelas yang telah dikompilasi menjadi JAR yang dapat dieksekusi, jalankan perintah berikut di direktori yang sama setelah HelloWorld.class dibuat:
jar --create --file hello.jar --main-class HelloWorld HelloWorld.class
java -jar hello.jar
Membuat arsip menggunakan alat pengembangan; menjalankan JAR yang sudah selesai ini memerlukan runtime yang kompatibel. Aplikasi lain mungkin memerlukan pustaka tambahan atau opsi peluncuran. Lihat referensi perintah jar untuk opsi pembuatan arsip.
Memecahkan masalah umum instalasi dan peluncuran
| Gejala | Yang perlu diperiksa | Cara melanjutkan |
|---|---|---|
| java atau javac tidak ditemukan | File eksekusi ada dan PATH menyertakan direktori bin JDK yang dimaksud | Buka terminal baru; juga periksa file eksekusi menggunakan jalur lengkapnya |
| java bekerja, javac tidak | Paket hanya runtime atau jalur eksekusi campuran | Instal JDK pengembangan atau pilih jalur JDK yang sudah ada |
| UnsupportedClassVersionError | Apakah runtime mendukung versi file kelas | Gunakan runtime yang kompatibel; bangun kembali kode Anda sendiri untuk rilis target bila diperlukan |
| Could not find or load main class | Nama kelas, direktori kerja, dan classpath | Untuk contoh ini, jalankan java -cp . HelloWorld di direktori yang berisi HelloWorld.class |
| Berfungsi di IDE, gagal di terminal | Project JDK versus java dan javac di terminal | Periksa IDE, PATH, JAVA_HOME, dan pemilihan JDK alat bangun secara terpisah |
Saat mendiagnosis kegagalan, pertama tentukan berkas program mana yang sebenarnya dijalankan. Setelah jalur dan versi benar dan contoh kecil berhasil, selidiki ketergantungan aplikasi dan opsi peluncurannya.




