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/BerkasIsiPeran bagi kita
bin/Biner java, javac, jshell, jar, dan kawan-kawanPintu masuk utama seluruh pekerjaan sehari-hari
conf/Berkas konfigurasi .properties untuk logging, keamanan, manajemenJarang disentuh; berguna saat menyetel perilaku JVM
include/Header C/C++ untuk integrasi native (JNI)Di luar cakupan Course ini
legal/Teks lisensi tiap komponenReferensi legalitas
lib/Pustaka internal JVM, termasuk modules (image modul JDK)Dibaca JVM sendiri, bukan oleh kita
releaseMetadata 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:

text
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:

AlatFungsi
javaLauncher JVM: menjalankan bytecode .class, berkas .jar, atau program sumber tunggal
javacCompiler: menerjemahkan berkas .java menjadi bytecode .class
jshellKonsol interaktif Read-Eval-Print Loop (REPL) untuk bereksperimen
jarMengemas dan membongkar arsip .jar
javadocMenghasilkan dokumentasi HTML dari komentar khusus
javapMembedah isi berkas .class (bytecode) — jendela ke dalam hasil kerja javac
jdepsMenganalisis dependency antar class dan modul
jcmdMengirim 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:

java InfoJdk.java
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:

text
Versi lengkap : 25.0.4.1+1-LTS
Feature       : 25
Interim       : 0
Update        : 4
Patch         : 1

Mari kita telaah baris-baris kode di atas:

  1. Baris 3 (Runtime.Version versi = ...): memanggil method Runtime.version() lalu menyimpan hasilnya ke variabel versi bertipe Runtime.Version. Tipe ini bukan int atau String, melainkan sebuah class dari pustaka standar.
  2. Baris 4 (versi tanpa method): objek Runtime.Version tahu cara mencetak dirinya sendiri, menghasilkan string versi lengkap termasuk label build dan LTS.
  3. Baris 5-8 (versi.feature() dst.): empat method pengurai versi. Skema penomoran Java adalah feature.interim.update.patch — 25.0.4.1 berarti 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 berkas
java
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());
    }
}