Java adalah bahasa pemrograman tingkat tinggi, berbasis kelas, dan berorientasi objek yang dirancang untuk memiliki ketergantungan implementasi yang sedikit mungkin. Bahasa ini dikenal karena portabilitasnya, memungkinkan pengembang untuk menulis kode yang dapat dijalankan di perangkat mana pun yang dilengkapi dengan Java Virtual Machine (JVM). Kemampuan tulis-sekali, jalankan-di-mana-saja ini membuat Java sangat cocok untuk aplikasi web, perangkat lunak perusahaan, dan pengembangan aplikasi Android. Sintaks Java berasal dari C dan C++, dengan penekanan yang kuat pada keterbacaan dan kemudahan penggunaan.
Java awalnya dikembangkan oleh James Gosling dan timnya di Sun Microsystems pada awal 1990-an. Bahasa ini dimaksudkan sebagai solusi independen platform untuk membangun aplikasi di berbagai perangkat. Awalnya, bahasa ini disebut Oak tetapi kemudian diubah namanya menjadi Java, terinspirasi oleh kopi Java. Rilis resmi Java 1.0 terjadi pada Mei 1995, bertepatan dengan munculnya World Wide Web, yang secara signifikan mendorong adopsinya.
Selama bertahun-tahun, Java telah berevolusi melalui beberapa versi, masing-masing memperkenalkan fitur dan peningkatan baru. Pengenalan Java 2 pada tahun 1998 membawa serta Java 2 Platform, yang mencakup API grafis Swing dan Kerangka Koleksi. Peralihan ke model versi pada tahun 2004, dimulai dari Java 5, memperkenalkan fitur bahasa yang signifikan seperti generik, anotasi, dan enhanced for-loop.
Saat ini, Java dikelola oleh Oracle Corporation setelah akuisisi Sun Microsystems pada tahun 2010. Komunitas Java sangat hidup, dengan banyak kerangka kerja, pustaka, dan alat yang tersedia, seperti Spring, Hibernate, dan Maven. Pengembangan Java terus berlanjut dengan pembaruan reguler, yang terbaru adalah Java 17, yang merupakan versi Dukungan Jangka Panjang (LTS), memastikan stabilitas untuk perusahaan.
Java telah memiliki pengaruh yang cukup besar terhadap bahasa pemrograman lain, menginspirasi fitur-fitur dalam C#, Kotlin, dan Scala. Sifatnya yang independen platform juga membuka jalan bagi berbagai aplikasi di luar perangkat lunak tradisional, termasuk platform big data seperti Apache Hadoop dan layanan cloud.
Java secara inheren berorientasi objek, yang berarti ia mendorong pengorganisasian kode ke dalam kelas dan objek. Ini memudahkan untuk memodelkan entitas dunia nyata.
class Animal {
void sound() {
System.out.println("Suara hewan");
}
}
class Dog extends Animal {
void sound() {
System.out.println("Gonggong");
}
}
Java menggunakan sistem pemeriksaan tipe yang kuat, yang berarti tipe variabel harus dideklarasikan, mencegah banyak kesalahan saat runtime.
int count = 10;
String name = "Java";
Java menggunakan pengumpulan sampah untuk mengelola memori, secara otomatis mengklaim kembali memori yang digunakan oleh objek yang tidak lagi dirujuk.
Animal animal = new Animal(); // Memori dialokasikan
animal = null; // Memori memenuhi syarat untuk pengumpulan sampah
Java menyediakan mekanisme penanganan eksepsi yang kuat melalui blok try-catch, membantu pengembang mengelola kesalahan dengan baik.
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Kesalahan pembagian dengan nol!");
}
Java menyederhanakan multithreading, memungkinkan eksekusi tugas secara bersamaan dengan thread yang relatif mudah dikelola.
class MyThread extends Thread {
public void run() {
System.out.println("Thread sedang berjalan.");
}
}
MyThread thread = new MyThread();
thread.start();
Java memungkinkan pembuatan kelas dalam yang anonim, memungkinkan implementasi cepat dari antarmuka atau memperluas kelas tanpa deklarasi formal.
Runnable runnable = new Runnable() {
public void run() {
System.out.println("Kelas dalam anonim");
}
};
new Thread(runnable).start();
Java mendukung generik, memungkinkan pengembang untuk membuat kelas, antarmuka, dan metode dengan parameter tipe, meningkatkan keandalan kode.
class Box<T> {
private T item;
public void setItem(T item) { this.item = item; }
public T getItem() { return item; }
}
Diperkenalkan di Java 8, ekspresi lambda memberikan cara yang lebih jelas untuk merepresentasikan instance dari antarmuka dengan satu metode (antarmuka fungsional).
List<String> names = Arrays.asList("John", "Jane", "Jack");
names.forEach(name -> System.out.println(name));
Stream API Java memungkinkan operasi gaya fungsional pada koleksi, membuat pemrosesan data lebih sederhana dan lebih efisien.
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("J"))
.collect(Collectors.toList());
Java mendukung anotasi, yang memberikan metadata tentang program dan dapat mempengaruhi bagaimana program diperlakukan oleh compiler atau runtime.
@Override
public void myMethod() {
// Kode metode di sini
}
JDK adalah kit pengembangan utama untuk Java, yang berisi alat yang diperlukan untuk mengembangkan, mengompilasi, dan menjalankan aplikasi Java. Ini mencakup Java Runtime Environment (JRE), pustaka, dan alat pengembangan.
Lingkungan Pengembangan Terintegrasi (IDE) umum untuk pengembangan Java meliputi:
Proyek biasanya dibangun menggunakan alat bangun seperti Maven atau Gradle, yang mengotomatiskan manajemen ketergantungan dan memperlancar proses pembangunan. Perintah bangun sederhana di Gradle mungkin terlihat seperti ini:
gradle build
Java banyak digunakan di berbagai domain, termasuk:
Java sering dibandingkan dengan bahasa seperti C#, C++, Python, dan JavaScript.
Kode Java dapat diterjemahkan ke dalam bahasa lain, meskipun kompleksitasnya dapat bervariasi tergantung pada paradigma bahasa target. Alat seperti Jaunt dan J2ObjC ada untuk membantu dalam proses ini tetapi mungkin tidak menangani setiap skenario. Kunci untuk terjemahan yang sukses terletak pada pemahaman konstruksi baik Java maupun bahasa target, terutama dalam area seperti manajemen memori dan sistem tipe.