Tampilan
Kenapa penting
Hampir semua sistem backend skala besar — perbankan, e-commerce, logistik, pemerintahan — punya bagian yang ditulis dengan Java. Memahami cara Java bekerja di balik layar membantu kamu membaca pesan error, memilih versi JDK yang tepat, dan nanti men-deploy aplikasi Spring Boot dengan percaya diri. Bab ini belum menulis banyak kode; tujuannya memberi peta: apa saja yang terlibat sejak kamu mengetik kode sampai program berjalan di server.
Konsep inti
Dari kode sumber ke program yang berjalan
Java adalah bahasa yang dikompilasi menjadi bytecode, lalu bytecode itu dijalankan oleh JVM (Java Virtual Machine). Ada dua langkah terpisah:
- Kompilasi — compiler
javacmembaca file.java(kode sumber yang bisa dibaca manusia), memeriksa kesalahan seperti salah ketik atau tipe data yang tidak cocok, lalu menghasilkan file.classberisi bytecode: instruksi untuk mesin virtual, bukan untuk prosesor tertentu. - Eksekusi — perintah
javamenyalakan JVM, memuat bytecode, lalu menjalankannya. Bagian kode yang sering dipanggil diterjemahkan JVM menjadi kode mesin asli saat program berjalan (JIT compilation), sehingga aplikasi Java yang sudah "panas" bisa sangat cepat.
Contoh paling kecil:
java
// Hello.java — kode sumber yang kamu tulis
public class Hello {
public static void main(String[] args) {
System.out.println("Halo, Jalur Java!");
}
}bash
javac Hello.java # menghasilkan Hello.class (bytecode)
java Hello # JVM menjalankan bytecode → Halo, Jalur Java!Kamu belum perlu memahami setiap kata di kode itu — struktur class dan main dibahas tuntas di bab Struktur Program. Untuk sekarang cukup pahami alurnya: .java → javac → .class → java (JVM).
Selain menjalankan bytecode, JVM juga mengelola memori secara otomatis lewat garbage collector: object yang sudah tidak dipakai dibersihkan sendiri, jadi kamu tidak perlu membebaskan memori secara manual seperti di C.
JDK, JRE, dan JVM
Tiga singkatan ini sering membingungkan pemula. Bayangkan seperti lapisan:
| Komponen | Isi | Kapan dibutuhkan |
|---|---|---|
| JVM | mesin yang menjalankan bytecode | selalu, saat program berjalan |
| JRE | JVM + library standar | menjalankan aplikasi |
| JDK | JRE + compiler (javac) + tool lain (jshell, jar) | menulis & membangun aplikasi — ini yang kamu pasang |
Sebagai developer kamu selalu memasang JDK. Di server production, cukup runtime (JRE atau JDK) karena aplikasi yang di-deploy sudah berupa bytecode.
Write once, run anywhere
Karena bytecode tidak terikat sistem operasi, file .class yang kamu kompilasi di laptop Linux bisa dijalankan di server Windows atau Mac — selama ada JVM dengan versi yang sesuai. Inilah alasan Java populer sejak dulu: tim bisa memakai laptop apa saja, sementara aplikasi berjalan di server mana saja.
Versi Java dan rilis LTS
Java dirilis setiap enam bulan (Maret dan September). Setiap dua tahun, satu rilis ditetapkan sebagai LTS (Long-Term Support) yang mendapat pembaruan keamanan bertahun-tahun: 8, 11, 17, 21, dan 25 (September 2025). Rilis non-LTS seperti 22, 23, 24 cocok untuk mencoba fitur baru, tetapi perusahaan biasanya memakai LTS di production. Kurikulum ini memakai Java 25 LTS sebagai acuan.
Java juga sangat menjaga kompatibilitas mundur: kode yang ditulis untuk Java lama umumnya tetap bisa dijalankan di JVM yang lebih baru. Karena itu kamu akan sering menemukan kode lama di proyek kantor yang tetap berjalan di Java 21 atau 25.
OpenJDK dan distribusinya
Kode sumber Java dikembangkan secara terbuka di proyek OpenJDK. Beberapa vendor membangun dan mendistribusikan JDK dari kode itu, misalnya Eclipse Temurin (Adoptium), Oracle JDK, Amazon Corretto, dan Microsoft Build of OpenJDK. Isinya praktis sama untuk kebutuhan belajar. Kurikulum ini memakai Eclipse Temurin karena gratis, open source, dan banyak dipakai di image Docker.
Kenapa Java untuk backend
- Ekosistem matang — Spring Boot, Hibernate, Kafka client, dan ribuan library siap pakai lewat Maven.
- Performa — JIT compiler dan garbage collector modern membuat aplikasi tahan beban tinggi dalam waktu lama.
- Tipe statis — banyak kesalahan tertangkap
javacsebelum aplikasi berjalan, penting untuk tim besar. - Konkurensi — virtual thread (sejak Java 21) memudahkan menangani ribuan request bersamaan.
- Tooling & observability — debugger, profiler, dan monitoring JVM sudah matang.
Contoh di dunia backend
Sebuah aplikasi Spring Boot dibangun menjadi satu file .jar berisi bytecode. File itu dijalankan di server dengan perintah berikut — server tidak perlu kode sumbermu, cukup JVM dengan versi yang sesuai:
bash
java -jar aplikasi.jarKalau di-deploy memakai Docker, image dasarnya biasanya sudah berisi runtime Java, misalnya keluarga image eclipse-temurin dengan tag versi 25. Artinya, versi Java yang kamu pakai saat develop harus sama (atau lebih rendah) dari versi JVM di server — bytecode Java 25 tidak bisa dijalankan JVM Java 21.
Pertanyaan interview
1. Apa beda JDK, JRE, dan JVM?
JVM menjalankan bytecode. JRE adalah JVM ditambah library standar — cukup untuk menjalankan aplikasi. JDK adalah JRE ditambah tool developer seperti javac, jshell, dan jar. Developer memasang JDK; server production cukup runtime-nya.
2. Apa itu bytecode, dan kenapa Java disebut write once, run anywhere?
javac menghasilkan bytecode yang tidak terikat sistem operasi atau prosesor. Setiap platform punya JVM yang menjalankan bytecode itu, jadi file .class/.jar yang sama bisa dipakai di mana saja. Nilai tambah: sebut bahwa JIT compiler mengubah kode yang sering dipanggil menjadi kode mesin saat program berjalan.
3. Kenapa perusahaan memilih versi LTS?
Rilis LTS mendapat pembaruan keamanan dan perbaikan bug bertahun-tahun, sehingga tim bisa upgrade secara terencana dari satu LTS ke LTS berikutnya (mis. 17 → 21 → 25) alih-alih setiap enam bulan.
Jebakan umum
- Memasang JRE saja atau JDK versi lama, lalu bingung kenapa
javactidak ditemukan atau fitur baru tidak dikenali. Untuk kurikulum ini pasang JDK 25 — caranya di bab berikutnya. - Punya beberapa JDK sekaligus sehingga
java -versiondanjavac -versionmenunjukkan versi berbeda. Selalu cek keduanya setelah memasang JDK. - Mengira Java = JavaScript. Namanya mirip, tetapi bahasanya berbeda total.
- Menyalin file
.classke server dengan JVM lebih lama. Hasilnya errorUnsupportedClassVersionError; samakan versi JVM di server dengan versi saat kompilasi.
Ringkasan
- Kode Java dikompilasi
javacmenjadi bytecode (.class), lalu dijalankan JVM. - JDK = alat developer; JRE = untuk menjalankan; JVM = mesinnya.
- Bytecode yang sama berjalan di semua sistem operasi yang punya JVM dengan versi yang sesuai.
- Java rilis tiap enam bulan; production biasanya memakai LTS — kurikulum ini memakai Java 25.
- Java kuat untuk backend karena ekosistem, performa, tipe statis, dan tooling-nya.