Java 11 - Ciri-ciri Baru

Hai sana, para pemrogram Java yang sedang berkembang! Saya sangat senang menjadi panduan Anda dalam perjalanan yang menarik ke dunia Java 11. Sebagai seseorang yang telah mengajar ilmu komputer selama bertahun-tahun, saya telah menyaksikan banyak murid berubah dari pemula sepenuhnya menjadi pemrogram yang Percaya diri. Jadi, jangan khawatir jika Anda baru mulai – kita akan mengambil langkah demi langkah, dan sebelum Anda tahu, Anda akan menulis kode Java seperti seorang pro!

Java 11 - New Features

Statement kendali Java

Ayo mulai dari dasar. Statement kendali adalah seperti lampu lalu lintas dalam pemrograman – mereka mengarahkan aliran kode Anda. Dalam Java 11, kita memiliki beberapa cara yang menarik untuk mengendalikan eksekusi program kita.

Statement If-Else

Statement if-else mungkin adalah struktur kendali yang paling umum Anda gunakan. Itu seperti membuat keputusan dalam kehidupan nyata. Ini adalah contoh yang sederhana:

int umur = 18;
if (umur >= 18) {
System.out.println("Anda bisa pemilih!");
} else {
System.out.println("Maaf, Anda terlalu muda untuk pemilih.");
}

Dalam kode ini, kita memeriksa apakah variabel umur sama dengan atau lebih dari 18. Jika ya, kita cetak bahwa orang tersebut bisa pemilih. Jika tidak, kita memberitahunya bahwa dia terlalu muda. Itu saja!

Statement Switch

Statement switch sangat baik saat Anda memiliki banyak kondisi untuk diperiksa. Pensejukkan itu seperti cara yang lebih efisien untuk menulis beberapa statement if-else. Java 11 memperkenalkan beberapa pengembangan menarik pada statement switch. Ini adalah contoh:

String hari = "Monday";
switch (hari) {
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" -> System.out.println("Hari Kerja");
case "Saturday", "Sunday" -> System.out.println("Weekend");
default -> System.out.println("Hari Tidak Valid");
}

Statement switch ini memeriksa variabel hari dan mencetak apakah itu adalah hari kerja atau akhir minggu. Sinkronisasi panah (->) adalah baru di Java 11 dan membuat kode lebih ringkas.

Pemrograman Berorientasi Objek (OOP)

Pemrograman Berorientasi Objek (OOP) adalah konsep dasar di Java. Itu seperti membangun dengan blok LEGO – Anda menciptakan berbagai objek yang saling berinteraksi untuk membentuk program Anda.

Kelas dan Objek

Sebuah kelas adalah seperti rancangan untuk menciptakan objek. Ini adalah kelas sederhana yang mewakili mobil:

public class Mobil {
String merk;
String model;
int tahun;

public void mulaiMesin() {
System.out.println("Vroom! The " + tahun + " " + merk + " " + model + " is starting.");
}
}

Sekarang, mari kita buat objek dari kelas ini:

Mobil myCar = new Mobil();
myCar.merk = "Toyota";
myCar.model = "Corolla";
myCar.tahun = 2021;
myCar.mulaiMesin();

Ketika Anda menjalankan kode ini, itu akan mencetak: "Vroom! The 2021 Toyota Corolla is starting."

Kelas Bawaan Java

Java datang dengan set kelas bawaan yang kaya yang membuat hidup kita mudah. Mari kita lihat beberapa di antaranya:

Kelas String

Kelas String digunakan untuk memanipulasi teks. Ini adalah contoh:

String salam = "Hello, World!";
System.out.println(salam.length());  // Mencetak: 13
System.out.println(salam.toUpperCase());  // Mencetak: HELLO, WORLD!

Kelas ArrayList

ArrayList adalah array dinamis yang dapat tumbuh atau menyusut sesuai kebutuhan:

import java.util.ArrayList;

ArrayList<String> buah = new ArrayList<>();
buah.add("Apple");
buah.add("Banana");
buah.add("Cherry");
System.out.println(buah);  // Mencetak: [Apple, Banana, Cherry]

Penanganan File Java

Penanganan file sangat penting untuk membaca dan menulis ke file. Java 11 memperkenalkan beberapa metode baru untuk membuat ini mudah:

import java.nio.file.Files;
import java.nio.file.Path;

String isi = "Hello, Java 11!";
Path pathFilePath = Path.of("example.txt");
Files.writeString(pathFilePath, isi);

String readIsi = Files.readString(pathFilePath);
System.out.println(readIsi);  // Mencetak: Hello, Java 11!

Kode ini menulis string ke file dan kemudian membacanya kembali. Metode writeString dan readString adalah baru di Java 11 dan membuat I/O file lebih sederhana.

Kesalahan dan Ekscepsi Java

Kesalahan dan eksepsi adalah seperti bump dan lubang di jalan pemrograman. Java membantu kita menangani ini dengan lembut:

try {
int hasil = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Ups! Anda tidak dapat membagi dengan nol.");
} finally {
System.out.println("Ini selalu berjalan, kesalahan atau tidak.");
}

Kode ini mencoba untuk membagi oleh nol (yang adalah禁忌 dalam matematika), menangkap eksepsi yang timbul, dan mencetak pesan yang ramah daripada崩溃。

Multithreading Java

Multithreading adalah seperti jongkok – itu memungkinkan program Anda untuk melakukan beberapa hal secara bersamaan. Ini adalah contoh yang sederhana:

class MyThread extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getId() + "Nilai " + i);
}
}
}

public class Main {
public static void main(String args[]) {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.start();
t2.start();
}
}

Ini menciptakan dua thread yang menjalankan bersamaan, masing-masing mencetak ID thread dan nilai.

Sinkronisasi Java

Ketika beberapa thread mengakses sumber daya bersama, kita perlu mensinkronisasi mereka untuk menghindari konflik. Itu seperti having traffic lights at an intersection:

class Counter {
private int hitung = 0;
public synchronized void increment() {
hitung++;
}
public int getHitung() {
return hitung;
}
}

Kata kunci synchronized memastikan bahwa hanya satu thread dapat menjalankan metode increment pada saat yang bersamaan.

Jaringan Java

Java membuatnya mudah untuk menciptakan aplikasi berjaringan. Ini adalah contoh server sederhana yang mendengarkan koneksi:

import java.net.*;
import java.io.*;

public class SimpleServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Server sedang mendengarkan di port 8080");
Socket socket = serverSocket.accept();
System.out.println("Klien terhubung");
}
}

Server ini mendengarkan di port 8080 dan mencetak pesan saat klien terhubung.

Koleksi Java

Koleksi Java adalah seperti jenis berbagai wadah untuk menyimpan objek. Mari kita lihat beberapa:

List

import java.util.*;

List<String> buah = new ArrayList<>();
buah.add("Apple");
buah.add("Banana");
System.out.println(buah);  // Mencetak: [Apple, Banana]

Set

Set<Integer> angka = new HashSet<>();
angka.add(1);
angka.add(2);
angka.add(1);  // Duplikat, tidak akan ditambahkan
System.out.println(angka);  // Mencetak: [1, 2]

Map

Map<String, Integer> usia = new HashMap<>();
usia.put("Alice", 25);
usia.put("Bob", 30);
System.out.println(usia.get("Alice"));  // Mencetak: 25

Antarmuka Java

Antarmuka adalah seperti kontrak yang kelas dapat setuju untuk mengikuti. Ini adalah contoh:

interface Hewan {
void buatSuara();
}

class Anjing implements Hewan {
public void buatSuara() {
System.out.println("Woof!");
}
}

class Kucing implements Hewan {
public void buatSuara() {
System.out.println("Meow!");
}
}

Kedua Anjing dan Kucing mengimplementasikan antarmuka Hewan, setuju untuk menyediakan metode buatSuara.

Struktur Data Java

Struktur data adalah cara untuk mengorganisir dan menyimpan data. Mari kita lihat linked list sederhana:

class Node {
int data;
Node next;

Node(int d) { data = d; }
}

class LinkedList {
Node head;

public void tambah(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
}

public void cetak() {
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
}

public class Main {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.tambah(1);
list.tambah(2);
list.tambah(3);
list.cetak();  // Mencetak: 1 2 3
}
}

Kode ini mengimplementasikan struktur data linked list sederhana.

Algoritma Koleksi Java

Java menyediakan banyak algoritma yang berguna untuk bekerja dengan koleksi. Ini adalah contoh pengurutan:

import java.util.*;

List<Integer> angka = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5));
Collections.sort(angka);
System.out.println(angka);  // Mencetak: [1, 1, 2, 3, 4, 5, 5, 6, 9]

Java Tingkat Lanjut

Sekiranya Anda terus maju, Anda akan menghadapi konsep Java yang lebih tingkat lanjut. Salah satu konsep itu adalah ekspresi lambda, diperkenalkan di Java 8 dan diperbaiki di Java 11:

List<Integer> angka = Arrays.asList(1, 2, 3, 4, 5);
angka.forEach(n -> System.out.println(n * 2));

Kode ini menggunakan ekspresi lambda untuk mengalikan setiap nilai dengan 2 dan mencetaknya.

Java Misc

Java 11 memperkenalkan beberapa fitur kecil. Salah satunya adalah kata kunci var untuk inferensi jenis variabel lokal:

var pesan = "Hello, Java 11!";
System.out.println(pesan);

Kompiler menginfer bahwa pesan adalah String.

API dan Kerangka Kerja Java

Java memiliki ekosistem luas dari API dan kerangka kerja. Salah satu kerangka kerja populer adalah Spring Boot. Ini adalah contoh aplikasi "Hello World" Spring Boot:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class HelloWorldApplication {

public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}

@GetMapping("/")
public String hello() {
return "Hello, World!";
}
}

Ini menciptakan aplikasi web yang menjawab dengan "Hello, World!" saat Anda mengunjungi URL utama.

Referensi Kelas Java

Java memungkinkan Anda mendapatkan referensi ke kelas di runtime. Ini adalah contoh:

Class<?> stringClass = String.class;
System.out.println(stringClass.getName());  // Mencetak: java.lang.String

Sumber Daya Java yang Berguna

Berikut adalah beberapa sumber daya yang berguna untuk belajar Java:

  1. Dokumentasi resmi Oracle Java
  2. Kursus Java di Codecademy
  3. Buku "Head First Java"
  4. Stack Overflow untuk bertanya

Fitur Baru

Java 11 memperkenalkan banyak fitur baru. Berikut adalah tabel ringkasan beberapa di antaranya:

Fitur Deskripsi
Syntax Variabel Lokal untuk Lambda Parameters Memungkinkan var dalam ekspresi lambda
HTTP Client (Standard) API pelanggan HTTP standar
Peluncuran Program Sumber Code Single-File Menjalankan file sumber Java secara langsung
Metode String Baru Metode baru seperti isBlank(), lines(), strip(), dll.
Metode Files Baru Metode baru seperti readString(), writeString()

Itu saja untuk perjalanan singkat kita ke Java 11! Ingat, belajar pemrograman adalah seperti belajar bahasa baru – itu memerlukan latihan, kesabaran, dan kegembiraan. Jangan frustasi jika Anda belum mengerti segala sesuatu segera. Terus coding, terus percobaan, dan terutama, terus bersenang-senang! Sebelum Anda tahu, Anda akan menulis aplikasi Java yang kompleks dan berpikir bagaimana itu bisa sulit pada awalnya. Selamat coding!

Credits: Image by storyset