Java 11 - Fitur Baru

Halo teman-teman pemrogram Java yang bersemangat! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ini ke dunia Java 11. Sebagai seseorang yang telah mengajar ilmu komputer selama tahun-tahun, saya telah melihat banyak siswa berubah dari pemula menjadi pemrogram yang percaya diri. Jadi, jangan khawatir jika Anda mulai dari nol - kita akan mengambil langkah demi langkah, dan sebelum Anda tahu, Anda akan menulis kode Java seperti seorang pro!

Java 11 - New Features

Statement Kontrol Java

mari mulai dengan dasar. Statement kontrol mirip seperti lampu lalu lintas dalam pemrograman - mereka mengarahkan aliran kode Anda. Di Java 11, kita memiliki beberapa cara menarik untuk mengontrol eksekusi program kita.

Statement If-Else

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

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

Dalam kode ini, kita memeriksa apakah variabel age sama dengan atau lebih dari 18. Jika benar, kita mencetak bahwa orang itu bisa voting. Jika tidak, kita memberitahunya bahwa mereka terlalu muda. Itu saja!

Statement Switch

Statement switch sangat cocok ketika Anda memiliki banyak kondisi untuk diperiksa. Pictorialnya seperti menulis beberapa statement if-else secara lebih efisien. Java 11 memperkenalkan beberapa peningkatan menarik ke statement switch. Ini adalah contoh:

String day = "Monday";
switch (day) {
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 day dan mencetak apakah itu adalah hari kerja atau akhir pekan. Sinkronisasi panah (->) adalah hal 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 objek yang berbeda untuk berinteraksi satu sama lain untuk membentuk program Anda.

Kelas dan Objek

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

public class Car {
String make;
String model;
int year;

public void startEngine() {
System.out.println("Vroom! The " + year + " " + make + " " + model + " is starting.");
}
}

Sekarang, mari kita buat objek dari kelas ini:

Car myCar = new Car();
myCar.make = "Toyota";
myCar.model = "Corolla";
myCar.year = 2021;
myCar.startEngine();

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

Kelas Bawaan Java

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

Kelas String

Kelas String digunakan untuk memanipulasi teks. Ini adalah contoh:

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

Kelas ArrayList

ArrayList adalah array dinamis yang dapat bertambah atau berkurang sesuai kebutuhan:

import java.util.ArrayList;

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

Penanganan File di 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 content = "Hello, Java 11!";
Path filePath = Path.of("example.txt");
Files.writeString(filePath, content);

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

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

Kesalahan dan Ekscepsi di Java

Kesalahan dan eksepsi adalah seperti lubang dan gores di jalan pemrograman. Java membantu kita menanganinya secara halus:

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

Kode ini mencoba untuk membagi dengan nol (yang adalah tabu dalam matematika), menangkap eksepsi yang timbul, dan mencetak pesan yang ramah daripada menghancurkan.

Multithreading di Java

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

class MyThread extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getId() + " Value " + 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 secara bersamaan, masing-masing mencetak ID thread dan nilai.

Sinkronisasi di Java

Ketika beberapa thread mengakses sumber daya bersama, kita perlu mensinkronisasikan mereka untuk menghindari konflik. Itu seperti having lampu lalu lintas di persimpangan:

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

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

Jaringan di Java

Java membuatnya mudah untuk menciptakan aplikasi jaringan. 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 di Java

Koleksi Java adalah seperti jenis kontainer berbeda untuk menyimpan objek. Mari kita lihat beberapa di antaranya:

List

import java.util.*;

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

Set

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

Map

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

Antarmuka di Java

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

interface Animal {
void makeSound();
}

class Dog implements Animal {
public void makeSound() {
System.out.println("Woof!");
}
}

class Cat implements Animal {
public void makeSound() {
System.out.println("Meow!");
}
}

Kedua Dog dan Cat mengimplementasikan antarmuka Animal, setuju untuk menyediakan metode makeSound.

Struktur Data di Java

Struktur data adalah cara mengatur 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 add(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 print() {
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.add(1);
list.add(2);
list.add(3);
list.print();  // Mencetak: 1 2 3
}
}

Kode ini mengimplementasikan struktur data linked list.

Algoritma Koleksi di Java

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

import java.util.*;

List<Integer> numbers = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5));
Collections.sort(numbers);
System.out.println(numbers);  // 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 seperti itu adalah ekspresi lambda, yang diperkenalkan di Java 8 dan diperbaiki di Java 11:

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

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

Java Lain-lain

Java 11 memperkenalkan beberapa fitur lain-lain. Salah satu di antaranya adalah kata kunci var untuk inferensi tipe variabel lokal:

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

Kompiler menyimpulkan bahwa message 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 root.

Referensi Kelas di Java

Java memungkinkan Anda mendapatkan referensi ke kelas pada saat 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 menanyakan pertanyaan

Fitur Baru

Java 11 memperkenalkan beberapa fitur baru. Berikut adalah tabel yang menggabungkan beberapa di antaranya:

Fitur Deskripsi
Sinkronisasi Variabel Lokal Memungkinkan var dalam ekspresi lambda
HTTP Client (Standar) API pelanggan HTTP standar
Peluncuran Program Single-File Menjalankan file sumber code 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 untuk mengoding adalah seperti belajar bahasa baru - itu memerlukan latihan, kesabaran, dan kekerasan. Jangan frustasi jika Anda tidak mengerti segala sesuatu segera. Terus coding, terus mencoba, dan terus bersenang-senang! Sebelum Anda tahu, Anda akan menulis aplikasi Java yang kompleks dan bertanya-tanya bagaimana hal itu terlihat sulit pada awalnya. Selamat coding!

Credits: Image by storyset