JDK sudah terpasang, tetapi apa sebenarnya yang baru saja masuk ke komputer kita? JDK bukan satu aplikasi tunggal, melainkan sekumpulan direktori berisi puluhan alat baris perintah, pustaka, dan berkas konfigurasi. Mengenal tata letaknya membuat kita tidak bekerja secara buta: kita tahu letak compiler, letak runtime, dan alat apa saja yang bisa dipanggil kapan pun dibutuhkan. Pada Chapter ini kita akan membedah isi direktori JDK, memetakan alat-alat utamanya, dan membaca identitas versinya langsung dari dalam program.
Peta Direktori JDK #
Lokasi direktori JDK berbeda di tiap sistem operasi. Di Linux dengan apt, JDK umumnya berada di bawah /usr/lib/jvm/; di macOS, di /Library/Java/JavaVirtualMachines/; di Windows, di C:\Program Files\Java\. Apa pun lokasinya, isi di dalamnya selalu mengikuti pola yang sama:
| Direktori/Berkas | Isi | Peran bagi kita |
|---|---|---|
bin/ | Biner java, javac, jshell, jar, dan kawan-kawan | Pintu masuk utama seluruh pekerjaan sehari-hari |
conf/ | Berkas konfigurasi .properties untuk logging, keamanan, manajemen | Jarang disentuh; berguna saat menyetel perilaku JVM |
include/ | Header C/C++ untuk integrasi native (JNI) | Di luar cakupan Course ini |
legal/ | Teks lisensi tiap komponen | Referensi legalitas |
lib/ | Pustaka internal JVM, termasuk modules (image modul JDK) | Dibaca JVM sendiri, bukan oleh kita |
release | Metadata build dalam format key="value" | Sumber cepat untuk memeriksa versi |
Berkas release di akar direktori JDK ringkas dan informatif. Berikut petikan hasil verifikasi pada instalasi Temurin 25 di Linux yang dipakai Course ini:
JAVA_VERSION="25.0.4.1"
JAVA_VERSION_DATE="2026-08-18"
OS_NAME="Linux"
IMAGE_TYPE="JDK"Nilai OS_NAME tentu menyesuaikan sistem operasi Anda, sedangkan IMAGE_TYPE="JDK" mengonfirmasi bahwa yang terpasang adalah JDK lengkap, bukan sekadar runtime.
Alat-Alat di Direktori bin #
Direktori bin/ adalah tempat kita paling sering berada. Tabel berikut merangkum alat yang paling relevan sepanjang Course ini:
| Alat | Fungsi |
|---|---|
java | Launcher JVM: menjalankan bytecode .class, berkas .jar, atau program sumber tunggal |
javac | Compiler: menerjemahkan berkas .java menjadi bytecode .class |
jshell | Konsol interaktif Read-Eval-Print Loop (REPL) untuk bereksperimen |
jar | Mengemas dan membongkar arsip .jar |
javadoc | Menghasilkan dokumentasi HTML dari komentar khusus |
javap | Membedah isi berkas .class (bytecode) — jendela ke dalam hasil kerja javac |
jdeps | Menganalisis dependency antar class dan modul |
jcmd | Mengirim perintah diagnostik ke JVM yang sedang berjalan |
Kita akan memakai java, javac, jshell, dan jar secara mendalam pada chapter-chapter berikutnya, jadi tidak perlu menghafal seluruh tabel sekarang.
Dua Pintu Masuk: java dan javac #
Dua alat terpenting perlu dibedakan sejak awal agar tidak tertukar. javac adalah compiler: javac membaca kode sumber .java, memeriksa aturan bahasa dan tipe, lalu menulis berkas bytecode .class. java adalah launcher: java memulai JVM, memuat bytecode, dan menjalankan method main. Keduanya bekerja berurutan — kompilasi dulu, eksekusi kemudian. Perhatikan juga bahwa keduanya berbagi rumah yang sama: karena java dan javac tinggal di satu direktori bin/, cukup satu JDK untuk seluruh siklus kerja.
Menanyakan Versi dari Dalam Program #
Versi JDK tidak hanya bisa ditanyakan dari terminal. Class Runtime menyediakan method version() yang mengembalikan objek Runtime.Version berisi struktur versi yang sedang berjalan. Mari kita coba:
public class InfoJdk {
public static void main(String[] args) {
Runtime.Version versi = Runtime.version();
System.out.println("Versi lengkap : " + versi);
System.out.println("Feature : " + versi.feature());
System.out.println("Interim : " + versi.interim());
System.out.println("Update : " + versi.update());
System.out.println("Patch : " + versi.patch());
}
}Output yang Dihasilkan:
Versi lengkap : 25.0.4.1+1-LTS
Feature : 25
Interim : 0
Update : 4
Patch : 1Mari kita telaah baris-baris kode di atas:
- Baris 3 (
Runtime.Version versi = ...): memanggil methodRuntime.version()lalu menyimpan hasilnya ke variabelversibertipeRuntime.Version. Tipe ini bukanintatauString, melainkan sebuah class dari pustaka standar. - Baris 4 (
versitanpa method): objekRuntime.Versiontahu cara mencetak dirinya sendiri, menghasilkan string versi lengkap termasuk label build danLTS. - Baris 5-8 (
versi.feature()dst.): empat method pengurai versi. Skema penomoran Java adalahfeature.interim.update.patch—25.0.4.1berarti feature release 25, tanpa interim, pembaruan ke-4, patch ke-1.
Angka feature inilah yang biasa kita sebut sebagai “Java 25”. Skema ini menjelaskan pula kenapa rilis enam bulanan selalu menaikkan angka feature, sementara pembaruan keamanan hanya menaikkan angka update atau patch. Dengan peta JDK yang kini kita pegang, langkah berikutnya adalah membuat seluruh alat di bin/ dapat dipanggil dari direktori mana pun — itu tugas environment variable pada Chapter Konfigurasi Environment Variables.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
InfoJdk.java
Unduh berkaspublic class InfoJdk {
public static void main(String[] args) {
Runtime.Version versi = Runtime.version();
System.out.println("Versi lengkap : " + versi);
System.out.println("Feature : " + versi.feature());
System.out.println("Interim : " + versi.interim());
System.out.println("Update : " + versi.update());
System.out.println("Patch : " + versi.patch());
}
}