Java tidak lahir dalam semalam. Bahasa ini bermula dari proyek riset kecil di Sun Microsystems pada awal 1990-an, lalu tumbuh menjadi platform yang menopang sistem perbankan, layanan backend, dan perangkat lunak perusahaan hingga hari ini. Dengan mengetahui sejarahnya, kita menjadi paham mengapa Java memuat pustaka lawas dan API modern sekaligus, mengapa penomoran versinya sempat memakai pola 1.x, dan mengapa pembaruannya kini datang setiap enam bulan. Chapter ini menelusuri garis waktu Java dari 1995 sampai sekarang, lalu memetakan ekosistem besar di sekelilingnya — mulai dari JDK, framework, build tools, hingga komunitas pengembangnya.

Dari Proyek Oak ke Rilis Publik #

Pada tahun 1991, tim kecil di Sun Microsystems yang dipimpin James Gosling — didampingi Mike Sheridan dan Patrick Naughton — memulai proyek riset bernama Oak. Tujuan awal Oak adalah bahasa untuk perangkat tertanam seperti pengendali televisi interaktif, yakni kelas perangkat dengan prosesor yang beragam sehingga kode program harus portabel. Solusi tim berupa bahasa yang dikompilasi menjadi bytecode dan dijalankan oleh mesin virtual — rancangan yang kelak menjadi ciri khas Java. Karena nama Oak telah dipakai produk lain, nama bahasa diganti menjadi Java pada 1995. Sun memperkenalkan Java kepada publik pada Mei 1995, JDK 1.0 menyusul pada Januari 1996, dan dukungan applet pada browser Netscape membuat popularitas bahasa ini melonjak pada era awal web.

Dari Java 2 ke Java 8 #

Versi 1.2 (1998) membawa perubahan besar sampai Sun menandainya sebagai Java 2 dan memecah platform menjadi J2SE untuk desktop, J2EE untuk server, serta J2ME untuk perangkat bergerak. Java 5.0 (2004) menyusul dengan perombakan bahasa terbesar pada masanya: generics, enum, autoboxing, dan perulangan for-each. Periode 2006-2007 menjadi titik penting lain karena Sun membuka kode sumber Java sebagai proyek OpenJDK dengan lisensi GPL. Pada 2010 Oracle mengakuisisi Sun, sehingga pengembangan Java berpindah ke Oracle. Kemudian hadir Java 8 (Maret 2014) dengan lambda expression, Stream API, dan API tanggal-baru java.time — kombinasi yang menjadikan Java 8 versi paling lama bertahan di sistem produksi hingga hari ini.

Irama Rilis Enam Bulanan dan LTS #

Sejak Java 9 (September 2017), pengembangan beralih ke irama rilis tetap: versi baru hadir setiap Maret dan September. Irama ini memperpendek jarak antara fitur selesai dan fitur bisa dipakai — pengembang tidak lagi menunggu bertahun-tahun seperti masa transisi Java 7 ke Java 8. Konsekuensinya, setiap rilis membawa lebih sedikit perubahan, dan hanya sebagian yang ditandai Long-Term Support (LTS): Java 11 (2018), 17 (2021), 21 (2023), dan 25 (2025), dengan LTS berikutnya direncanakan pada 2027. Rilis non-LTS hanya menerima pembaruan singkat sampai versi penggantinya terbit. Strategi memilih versi untuk proyek kita bedah tuntas pada Chapter Memilih Versi Java.

Peta Ekosistem Java #

Ekosistem Java tersusun berlapis, dan kita perlu mengenali tiap lapisannya sebelum menyelam lebih dalam.

LapisanContohPeran
Bahasa dan JDKjavac, JVM, pustaka standarFondasi resmi untuk menulis dan menjalankan kode
FrameworkSpring Boot, Jakarta EE, HibernateKerangka aplikasi siap pakai untuk backend dan data
Build toolsMaven, GradleMengelola dependensi, kompilasi, dan pengujian
KomunitasOpenJDK, JCP, Adoptium, Java User GroupMengembangkan spesifikasi dan mendistribusikan JDK

Fondasinya tentu saja JDK itu sendiri: compiler javac, JVM, dan pustaka standar yang luas. Di atas fondasi tersebut, framework mempercepat pembangunan aplikasi. Spring Boot mendominasi backend Java lewat pola dependency injection dan server tersemat; Hibernate (beserta standar Jakarta Persistence) mengurus pemetaan objek ke tabel database; Jakarta EE menjadi kumpulan spesifikasi enterprise yang diimplementasikan banyak vendor. Semua framework tersebut dibangun di atas pustaka standar, bukan menggantikannya.

Build tools menjawab kebutuhan praktis: dari mana library eksternal datang dan bagaimana proyek dibangun secara konsisten. Maven (rilis stabil pertama 2004) memakai deklarasi XML pom.xml, sedangkan Gradle (2012) memakai skrip Groovy atau Kotlin. Keduanya mengunduh dependensi dari repositori terpusat Maven Central, menjalankan pengujian, dan mengemas artefak — materi lengkapnya menunggu kita di Section Build Tools dan Dependency Management.

Komunitas menjaga seluruh ekosistem tetap bergerak. OpenJDK adalah tempat kode Java dikembangkan secara terbuka; fitur baru diusulkan melalui dokumen JEP. Java Community Process (JCP), yang berdiri sejak 1998, mengelola spesifikasi formal melalui mekanisme JSR. Yayasan Eclipse menjalankan proyek Adoptium yang membangun distribusi JDK Temurin secara gratis, sementara puluhan Java User Group menjadi wadah bertukar pengetahuan di banyak negara.

Jejak Rilis dalam Kode #

Linimasa di atas bisa kita buktikan langsung di terminal. Program berikut menyimpan delapan rilis penting Java ke dalam List berisi record, mencetak tabelnya secara berurutan, lalu menampilkan versi JDK yang benar-benar menjalankan program ini:

import java.util.List;

public class LinimasaRilis {

    // Record: class ringkas khusus penyimpan data
    record Rilis(int tahun, String versi, String sorotan) {}

    public static void main(String[] args) {
        List<Rilis> linimasa = List.of(
            new Rilis(1996, "1.0", "Rilis JDK pertama untuk publik"),
            new Rilis(2004, "5.0", "Generics, enum, autoboxing"),
            new Rilis(2014, "8", "Lambda dan Stream (LTS paling lama dipakai)"),
            new Rilis(2017, "9", "Modul JPMS, irama rilis baru dimulai"),
            new Rilis(2018, "11", "LTS pertama di irama enam bulanan"),
            new Rilis(2021, "17", "LTS, sealed class dan record"),
            new Rilis(2023, "21", "LTS, virtual threads"),
            new Rilis(2025, "25", "LTS, scoped values dan FFM API")
        );

        System.out.println("Linimasa rilis penting Java:");
        for (Rilis r : linimasa) {
            System.out.printf("%d  Java %-3s  %s%n", r.tahun(), r.versi(), r.sorotan());
        }

        System.out.println();
        System.out.println("Contoh ini dijalankan oleh JDK "
                + System.getProperty("java.version") + " ("
                + System.getProperty("java.vendor") + ")");
    }
}

Output yang Dihasilkan:

text
Linimasa rilis penting Java:
1996  Java 1.0  Rilis JDK pertama untuk publik
2004  Java 5.0  Generics, enum, autoboxing
2014  Java 8    Lambda dan Stream (LTS paling lama dipakai)
2017  Java 9    Modul JPMS, irama rilis baru dimulai
2018  Java 11   LTS pertama di irama enam bulanan
2021  Java 17   LTS, sealed class dan record
2023  Java 21   LTS, virtual threads
2025  Java 25   LTS, scoped values dan FFM API

Contoh ini dijalankan oleh JDK 25.0.4.1 (Eclipse Adoptium)

Hasil program ini identik setiap kali dijalankan karena seluruh data ditulis langsung di dalam kode. Mari kita telaah bagian-bagian pentingnya:

  1. Baris 6 (record Rilis(int tahun, String versi, String sorotan) {}): mendeklarasikan record — class ringkas untuk menyimpan data. Compiler otomatis menyediakan constructor serta accessor tahun(), versi(), dan sorotan(); record kita bahas secara menyeluruh di Section Object-Oriented Programming.
  2. Baris 9 (List<Rilis> linimasa = List.of(...)): membangun List yang tidak dapat diubah (immutable) berisi delapan objek Rilis sesuai urutan penulisan.
  3. Baris 21-23 (for (Rilis r : linimasa)): perulangan for-each yang mengambil satu objek Rilis tiap iterasi, lalu mencetaknya.
  4. Baris 22 (System.out.printf("%d Java %-3s %s%n", ...)): mencetak dengan format — %d untuk bilangan bulat, %-3s untuk teks selebar minimal tiga karakter rata kiri, dan %n untuk pindah baris.
  5. Baris 26-28 (System.getProperty("java.version")): membaca property runtime dari JVM yang sedang berjalan. Baris ini membuktikan versi konkret yang mengeksekusi program — dalam lingkungan Course ini, JDK 25 buatan Eclipse Adoptium (Temurin).

Sejarah memberi konteks; ekosistem memberi alat. Namun sebelum memakai alat-alat tersebut, kita perlu meluruskan tiga istilah yang paling sering tertukar di dunia Java: JDK, JRE, dan JVM. Chapter berikutnya membedah ketiganya lapis demi lapis, termasuk daftar alat pengembangan di dalam folder bin JDK.

Referensi #

Berkas Sumber

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

LinimasaRilis.java

Unduh berkas
java
import java.util.List;

public class LinimasaRilis {

    // Record: class ringkas khusus penyimpan data
    record Rilis(int tahun, String versi, String sorotan) {}

    public static void main(String[] args) {
        List<Rilis> linimasa = List.of(
            new Rilis(1996, "1.0", "Rilis JDK pertama untuk publik"),
            new Rilis(2004, "5.0", "Generics, enum, autoboxing"),
            new Rilis(2014, "8", "Lambda dan Stream (LTS paling lama dipakai)"),
            new Rilis(2017, "9", "Modul JPMS, irama rilis baru dimulai"),
            new Rilis(2018, "11", "LTS pertama di irama enam bulanan"),
            new Rilis(2021, "17", "LTS, sealed class dan record"),
            new Rilis(2023, "21", "LTS, virtual threads"),
            new Rilis(2025, "25", "LTS, scoped values dan FFM API")
        );

        System.out.println("Linimasa rilis penting Java:");
        for (Rilis r : linimasa) {
            System.out.printf("%d  Java %-3s  %s%n", r.tahun(), r.versi(), r.sorotan());
        }

        System.out.println();
        System.out.println("Contoh ini dijalankan oleh JDK "
                + System.getProperty("java.version") + " ("
                + System.getProperty("java.vendor") + ")");
    }
}