Java 10 - Ciri-ciri Baru

Assalamualaikum, para pengembang Java yang sedang beranjing! Saya sangat gembira untuk memandu anda melalui ciri-ciri baru yang menarik yang diperkenalkan dalam Java 10. Sebagai seseorang yang telah mengajar Java selama bertahun-tahun, saya dapat menjamin anda bahwa pembaruan ini akan membuat perjalanan pengodingan anda menjadi lebih menyenangkan dan efisien. Mari kita masuk ke dalamnya!

Java 10 - New Features

Pengenalan kepada Java 10

Java 10 dirilis pada bulan Mac 2018, membawa beberapa peningkatan kepada bahasa ini. Walaupun mungkin tidak sebesar pengembangan versi lain, ia menawarkan beberapa ciri yang praktis yang dapat meningkatkan pengalaman pengodingan anda.

Inferensi Tipe Variabel Tempat

Salah satu ciri yang banyak dikatakan dalam Java 10 adalah inferensi tipe variabel tempat. Ciri ini membolehkan anda untuk mengisytiharkan variabel tempat tanpa secara eksplisit menyatakan jenis mereka. Sebaliknya, anda boleh menggunakan kata kunci var, dan compiler akan menyimpulkan jenis berdasarkan inisialisasi.

Mari kita lihat contoh:

// Sebelum Java 10
String message = "Hello, Java 10!";

// Dengan Java 10
var message = "Hello, Java 10!";

Dalam contoh ini, compiler secara automatik menyimpulkan bahawa message adalah String. Ciri ini boleh membuat kod anda lebih ringkas dan mudah dibaca, terutama saat berurusan dengan jenis yang kompleks.

Kapan untuk Menggunakan var

Walaupun var adalah ciri yang berkuasa, penting untuk menggunakannya dengan bijak. Berikut adalah beberapa panduan:

  1. Gunakan var saat jenis jelas dari sebelah kanan peng assignment.
  2. Hindari penggunaan var saat jenis tidak jelas, kerana ia boleh mengurangkan kejelasan kod.

Mari kita lihat contoh yang lebih kompleks:

// Sebelum Java 10
Map<String, List<String>> userFruits = new HashMap<>();

// Dengan Java 10
var userFruits = new HashMap<String, List<String>>();

Dalam kes ini, penggunaan var membuat kod lebih bersih tanpa mengorbankan kejelasan.

Peningkatan API

Java 10 juga memperkenalkan beberapa peningkatan kepada API yang sedia ada. Mari kita jelajahi beberapa daripadanya.

Optional.orElseThrow()

Kelas Optional, yang diperkenalkan dalam Java 8, mendapat method baru dalam Java 10: orElseThrow(). Method ini mirip dengan get(), tetapi lebih eksplisit tentang melempar pengecualian jika Optional kosong.

public class OptionalExample {
public static void main(String[] args) {
Optional<String> emptyOptional = Optional.empty();

try {
String result = emptyOptional.orElseThrow();
} catch (NoSuchElementException e) {
System.out.println("Optional kosong!");
}
}
}

Dalam contoh ini, orElseThrow() melempar NoSuchElementException kerana Optional kosong. Method ini membantu membuat kod anda lebih ekspresif dan mudah dipahami.

Koleksi Tak Dapat Dimodifikasi

Java 10 memperkenalkan method pabrik baru untuk membuat salinan tak dapat dimodifikasi dari koleksi. Methods ini tersedia untuk List, Set, dan Map.

public class UnmodifiableCollectionsExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("Apple", "Banana", "Cherry");
List<String> unmodifiableFruits = List.copyOf(fruits);

try {
unmodifiableFruits.add("Date");
} catch (UnsupportedOperationException e) {
System.out.println("Tidak dapat memodifikasi senarai yang tak dapat dimodifikasi!");
}
}
}

Dalam contoh ini, List.copyOf() membuat salinan tak dapat dimodifikasi daripada senarai asal. Setiap cubaan untuk memodifikasi senarai ini akan mengakibatkan UnsupportedOperationException.

Peningkatan Prestasi

Java 10 juga membawa beberapa peningkatan di bawah penutup yang meningkatkan prestasi.

Full GC Paralel untuk G1

Pembersih pertama (garbage collection) Garbage-First (G1), yang menjadi default dalam Java 9, mendapat peningkatan dalam Java 10. Full GC untuk G1 sekarang paralel, yang dapat secara signifikan mengurangkan masa pause pada heap besar.

Walaupun anda mungkin tidak secara langsung berinteraksi dengan ciri ini dalam kod anda, itu baik untuk mengetahui bahawa aplikasi Java anda dapat berjalan lebih cepat dan lebih efisien.

Penyimpanan Data Kelas Aplikasi

Java 10 diperluas fitur Penyimpanan Data Kelas (CDS) yang sedia ada untuk membolehkan kelas aplikasi ditempatkan dalam arkib bersama. Ini dapat meningkatkan masa startup dan mengurangkan jejak memori, terutama saat beberapa JVM menjalankan aplikasi yang sama di mesin yang sama.

Untuk menggunakan ciri ini, anda perlu menjalankan aplikasi anda dengan argumen JVM tertentu. Berikut contohnya:

# Langkah 1: Buat arkib bersama
java -Xshare:dump -XX:+UseAppCDS -XX:DumpLoadedClassList=classes.lst -cp myapp.jar MyApp

# Langkah 2: Jalankan aplikasi menggunakan arkib bersama
java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=classes.jsa -cp myapp.jar MyApp

Ciri ini sangat berguna untuk mikroservis dan aplikasi berdasarkan kontainer di mana masa startup cepat sangat penting.

Kesimpulan

Java 10, walaupun merupakan pelepasan yang kecil, membawa beberapa ciri yang berharga yang dapat meningkatkan pengalaman pengodingan anda. Dari kemudahan inferensi tipe variabel tempat hingga peningkatan prestasi dengan full GC paralel untuk G1 dan penyimpanan data kelas aplikasi, ciri-ciri ini menambahkan keefisienan dan keadilan pengembangan bagi Java.

Ingat, cara terbaik untuk belajar ciri-ciri ini adalah dengan mengamalkannya. Cobalah menggabungkannya ke dalam projek anda, dan anda akan segera melihat bagaimana mereka dapat meningkatkan kod anda. Selamat mengoding, dan semoga perjalanan Java anda penuh dengan penemuan yang menarik!

Credits: Image by storyset