Sepanjang Course Java ini kita menjumpai puluhan istilah — dari bytecode dan class loader di sisi platform, record dan sealed class di sisi bahasa, sampai JAR dan JFR di sisi ekosistem. Sebagian besar dibahas tuntas di chapter masing-masing; tetapi ketika sedang membaca dokumentasi atau diskusi tim, kita butuh definisi cepat tanpa membuka ulang seluruh materi. Glossary ini menghimpun 25 istilah terpenting dalam definisi satu kalimat, dikelompokkan dalam tiga tema: platform tempat kode berjalan, bahasa yang kita tulis, dan ekosistem di sekitarnya.

Cara Memakai Glossary Ini #

Glossary paling berguna dipakai mundur, bukan dihafal maju. Ketika istilah asing muncul di tengah pembacaan — misalnya dokumentasi menyebut class loader — lompatlah ke tabel yang sesuai, baca satu kalimatnya, lalu kembali ke bacaan semula. Definisi sengaja dibatasi satu kalimat agar tabel dapat dipindai dalam hitungan detik; penjelasan melebar tersedia di chapter Course yang membahas topiknya. Jika istilah yang dicari tidak ada, dua rujukan resmi di akhir halaman adalah tempat berburu berikutnya.

Istilah Platform dan Eksekusi #

Kelompok pertama menjawab pertanyaan “di atas apa kode Java berjalan” — dari compiler sampai memori:

IstilahArti ringkas
JDKKit pengembangan berisi compiler javac, JVM, pustaka, dan alat diagnostik
JRELingkungan menjalankan aplikasi (JVM dan pustaka inti), kini bagian dari JDK
JVMMesin virtual yang mengeksekusi bytecode dan mengelola memori serta thread
BytecodeInstruksi perantara hasil kompilasi javac, disimpan dalam berkas .class
JITCompiler yang menerjemahkan bytecode panas menjadi kode mesin saat berjalan
ClasspathDaftar lokasi tempat JVM mencari kelas dan berkas sumber daya
Class loaderKomponen JVM yang memuat bytecode ke memori sebagai class siap pakai
HeapMemori bersama untuk objek, dikelola oleh garbage collector
StackMemori per thread untuk frame pemanggilan method dan variabel lokal
Garbage collectorMekanisme JVM yang memungut objek yang tidak lagi direferensikan
Virtual threadThread ringan yang dikelola JVM dalam jumlah sangat besar (Java 21+)

Istilah Bahasa dan OOP #

Kelompok kedua menjawab “apa yang kita tulis” — blok bangunan bahasa Java modern:

IstilahArti ringkas
ClassCetak biru yang memadukan data dan perilaku dalam satu tipe
ObjectInstance dari class yang dibuat saat program berjalan
MethodBlok perilaku bernama di dalam class
ConstructorMethod khusus yang menginisialisasi object baru
InterfaceKontrak method yang diimplementasikan oleh class
RecordClass pembawa data ringkas dengan accessor dan equals otomatis (Java 16+)
Sealed classClass yang membatasi class anaknya secara eksplisit (Java 17+)
ExceptionObjek sinyal galat yang dapat ditangkap blok try-catch
GenericParameter tipe yang menjaga keamanan tipe saat kompilasi
Pattern matchingPemeriksaan tipe dan bentuk yang mendestrukturkan nilai dalam switch

Istilah Ekosistem dan Alat #

Kelompok ketiga menjawab “apa yang mengelilingi kode” — format distribusi hingga alat baku industri:

IstilahArti ringkas
JARArsip berisi bytecode dan sumber daya untuk didistribusikan
ModuleUnit kode bernama dengan dependensi eksplisit (JPMS)
Maven dan GradleAlat build sekaligus manajer dependensi paling umum
JUnitKerangka pengujian unit standar ekosistem

Glossary dalam Kode #

Istilah bekerja paling jelas ketika dilihat berdampingan dalam satu program. Program kecil berikut memperagakan enam istilah glossary sekaligus — interface, record, object, method, array, dan exception:

import java.util.Arrays;

interface Bentuk {
    int luas();
}

record Persegi(int sisi) implements Bentuk {
    @Override
    public int luas() {
        return sisi * sisi;
    }
}

public class KamusBerjalan {

    public static void main(String[] args) {
        Bentuk bidang = new Persegi(6);      // object + polymorphism
        System.out.println("class : " + bidang.getClass().getSimpleName());
        System.out.println("luas  : " + bidang.luas());

        int[] angka = {3, 1, 2};             // array
        Arrays.sort(angka);                  // method static dari pustaka
        System.out.println("urut  : " + Arrays.toString(angka));

        try {
            Integer.parseInt("bukan angka"); // melempar exception
        } catch (NumberFormatException galat) {
            System.out.println("galat : " + galat.getClass().getSimpleName());
        }
    }
}

Output yang Dihasilkan:

text
class : Persegi
luas  : 36
urut  : [1, 2, 3]
galat : NumberFormatException

Mari kita telaah peran istilahnya:

  1. Baris 3-12 (interface Bentuk dan record Persegi): interface menyediakan kontrak method luas(); record mengimplementasikannya sekaligus menjadi class data ringkas.
  2. Baris 17-19 (new Persegi(6)): membuat object dari record, menampungnya dalam variabel bertipe interface, lalu memanggil method luas(). Method getClass().getSimpleName() mengembalikan nama class saat runtime tanpa alamat memori sehingga keluarannya stabil.
  3. Baris 21-23 (Arrays.sort): array diurutkan oleh method static dari pustaka inti — sebagian besar method sehari-hari tinggal pakai dari pustaka.
  4. Baris 25-28 (try-catch): exception dilempar oleh Integer.parseInt dan ditangkap; nama kelasnya diambil lewat getClass() — pola yang sama dengan membaca stack trace pada chapter sebelumnya.

Dengan glossary sebagai jaring pengaman istilah, satu halaman tersisa di seluruh Course: peta besar yang merangkai seluruh perjalanan — dari fondasi bahasa sampai delapan proyek — beserta dua kecepatan menempuhnya dan arah lanjutan setelahnya.

Referensi #

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

KamusBerjalan.java

Unduh berkas
java
import java.util.Arrays;

interface Bentuk {
    int luas();
}

record Persegi(int sisi) implements Bentuk {
    @Override
    public int luas() {
        return sisi * sisi;
    }
}

public class KamusBerjalan {

    public static void main(String[] args) {
        Bentuk bidang = new Persegi(6);      // object + polymorphism
        System.out.println("class : " + bidang.getClass().getSimpleName());
        System.out.println("luas  : " + bidang.luas());

        int[] angka = {3, 1, 2};             // array
        Arrays.sort(angka);                  // method static dari pustaka
        System.out.println("urut  : " + Arrays.toString(angka));

        try {
            Integer.parseInt("bukan angka"); // melempar exception
        } catch (NumberFormatException galat) {
            System.out.println("galat : " + galat.getClass().getSimpleName());
        }
    }
}