Apa Fitur Terbaru di Java 11?

Java 11 sudah dirilis pada tanggal 25 September 2018 kemarin.

Banyak ‘pembersihan’ yang terjadi pada versi ini.

Seperti:

Java EE, CORBA, Java applets, dan Java FX sudah dihapus di dalam JDK (Java Development Kit). 1

Tapi tenang saja… mereka masih bisa di-install dari repositori Mavan.

Lalu…

Apa saja fitur terbaru pada Java 11?

dan apa saja yang akan dihapus?

Sebelum kita migrasi atau upgrade ke Java 11, kita haurs tahu dua hal ini.

Agar aplikasi yang kita bangun dengan Java, bisa berjalan dengan lancar.

Mari kita bahas…

Download & Install Java 11

Sebelum itu… jika kamu ingin mencoba Java 11, silahkan download JDK-nya:

Saya akan download OpenJDK 11 untuk Linux.

Download JDK 11

Nanti kita akan mendapatkan sebuah file arsip tar.gz.

File arsip Java 11

Setelah itu ekstrak ke tempat yang aman.

Saya akan mengekstraknya ke direktori ~/apps/.

Ekstrak JDK 11

Apabila di komputermu sudah ada Java, kamu bisa gunakan fitur update-alternatives untuk menentukan versi Java yang akan digunakan.

Atau bisa juga dengan menambahkan path Java ke dalam Environtment Variable.

Saya akan menggunakan Environment Variable, karena lebih mudah.

Caranya:

Tambahkan alamat path Java ke dalam file .bashrc.

export JAVA_HOME=$HOME/apps/jdk-11
export PATH=$JAVA_HOME/bin:$PATH

Alamat path JAVA_HOME merupakan lokasi saya menginstal atau meng-ekstrak JDK yang sudah di-download.

Environment Variable di bashrc

Berikutnya, tutup terminal dan buka lagi.

Maka ketika kita cek dengan which dia akan mengarah ke sana.

Versi Java yang digunakan

Sekarang saya sudah menggunakan Java 11.

Mari kita coba fitur-fitur terbarunya.

1. Eksekusi Lansung Program Java

Ini yang menarik…

Di Java 11, kita bisa eksekusi langsung kode program Java, tanpa harus dikompilasi dengan perintah javac.

Contoh: ContohProgram.java

package com.petanikode;

public class ContohProgram {

    public static void main(String[] args) {

        System.out.println("Contoh Program dengan Java 11");
    }
}

Untuk menjalankannya, kita cukup ketik perintah:

java ContohProgram.java

Maka hasilnya:

Contoh Program Java denan JDK 11

Pada versi Java sebelumnya, kita harus kompilasi dulu souce code Java menjadi bytecode.

Barulah bisa dieksekusi.

Sekarang sudah tidak lagi…

Rasanya seperti menulis kode dengan bahasa Scripting seperti Javascript.

2. Javascript Nashorn engine akan Dihapus

Javascript Nashorn engine merupakan runtime engine—sama seperti V8 Engine pada Nodejs— untuk menjalankan Javascript di atas JVM (Java Virtual Machin).

Akan tetapi, tool ini sudah tidak akan digunakan lagi alias (deprecated).

Ketika kita coba jalankan jjs, maka akan muncul peringatan "The jjs tool is planned to be removed from a future JDK release".

Menjalankan JJS

3. Method Baru pada String

Pada rilis Java 11 ini, terdapat beberapa method pada string yang ditambahkan, diantaranya:

Method repeat()

Method ini digunakan untuk mengulang atau membuat perulangan dari sebuah String.

Hampir setiap bahasa pemrograman memiliki method atau fungsi repeat(). Sedangkan di Java, baru ditambahkan pada Java 11.

Pada Python dan Ruby, kita bisa gunakan operator * untuk mengulang sebuah string.

print("ha" * 30) # python
puts "ha" * 30 # ruby

Pada PHP, kita bisa gunakan fungsi str_repeat().

echo str_repeat("ha", 30);

Nah, pada Java…

…dia sama seperti Javascript, yaitu menggunakan method repeat().

Contoh:

var teks = "ha";
teks.repeat(50);

Percobaan pada jshell.

Method repeat()

Oya, jsehll (java shell) merupakan console Java. Fitur ini mulai ditambahkan pada Java 9.

Lalu kata kunci var untuk membuat variabel, baru ditambahkan pada Java 10.

Method strip()

Pernah dengar fungsi atau method trim()?

Ya, kurang lebih fungsi strip() sama seperti trim(). Yaitu: untuk menghapus white space pada String.

Tetapi method strip() punya dua (method) saudara lagi, yaitu: stripTrailing() dan stripLeading().

  • stripTrailing() akan menghapus white space yang ada di belakang;
  • stripKeadubg() akan menghapus white space yang ada di depan.
  • strip() akan menghapus white space yang ada di depan dan belakang.

Percobaan pada jshell.

method strip pada Java

Sebenarnya method ini sudah pernah ditanyakan 7 tahun yang lalu di Stack Overflow. 2 Mengapa baru sekarang ditambahkan ya…? 😊

Pertanyaan di stackoverflow

Method isEmpty() dan isBlank()

Kamu pasti sudah bisa menebak apa fungsi dari method ini.

Yap, keduanya untuk mengecek: apakah string-nya kosong atau tidak.

Apa perbedaan isEmpty() dan isBlank()?

Method isEmpty() hanya akan bernilai true saat sebuah string diisi dengan "". Apabila kita isi dengan spasi seperti ini: " ", maka method isEmpty() akan mengembalikan nilai false.

Sedangkan isBlank() lebih cerdas. Ia mampu mengetahui, kalau isi string tersebut adalah spasi (white space).

Mari kita coba:

isEmpty() dan isBlank()

Method lines()

Method ini berfungsi untuk mengekstrak sebuah string menjadi Stream berdasarkan garis baru.

Contoh:

var title = "Saya\nsedang\nbelajar\njava\ndi\nPetanikode";
var tiileStream = title.lines();

Perhatikan simbol \n yang ada di dalam string variabel title. Simbol ini berfungsi untuk membuat garis baru.

Saat kita menggunakan method lines() pada string ini, maka tiap-tiap kata aka menjadi sebuah stream.

Method lines() pada Java

4. Method Baru pada Class Files

Kalau tadi method-method yang baru ditambahkan pada Java 11 untuk operasi String. Maka yang ini untuk operasi File.

Ada dua method baru:

  1. readString() untuk membaca teks string dari File;
  2. writeString() untuk menulis teks string ke File.

Contoh:

Menulis string ke file dengan method writeString()

package com.petanikode;

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

public class TulisFile {

    public static void main(String[] args) throws IOException {

        var words = "Tutorial java untuk pemula\noleh: Petani Kode";

        Files.writeString(Path.of("words.txt"), words);
    }
}

Hasilnya:

Menulis Teks string ke file dengan Java

Membaca string dari file dengan method readString()

package com.petanikode;

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

public class BacaFile {

    public static void main(String[] args) throws IOException {

        var fileName = "words.txt";

        var data = Files.readString(Path.of("words.txt"));

        System.out.println(data);
    }
}

Hasilnya:

Membaca file pada Java 11

Kini kita lebih mudah untuk menulis dan membaca file di Java.

Tidak perlu lagi pakai ‘buffer-bufferan’ 😄 seperti ini:

import java.io.*;
public class ReadWriteFile {

   public static void main(String args[]) throws IOException {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");
         
         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

5. HTTP Client kini Menjadi Library Standar

Pada Java versi sebelumnya, Kita bisa melakukan HTTP Request dengan class HttpURLConnection.

Akan tetapi, HttpURLConnection memiliki beberapa masalah:

  • Class ini didesain untuk berbagai macam protokol (seperti: ftp, gopher, dll.);
  • HttpURLConnection Sulit digunakan karena dokumentasinya minim;
  • HttpURLConnection bekerja pada mode blocking saja (seperti: 1 thread untuk requset/response);
  • HttpURLConnection sulit di-maintain;

Solusi alternatifnya:

Kita bisa menggunakan library pihak ketiga seperti Unirest, OkHTTP, Apache HTTP Client, Android Asynchronous Http Client, dll.

Kini, kita tidak perlu lagi menggunakan library pihak ketiga. Karena HTTP Client sudah menjadi library standar di Java 11.

Lokasinya ada di package:

java.net.http

Contoh:

package com.petanikode;

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class RequestPetanikode {

    public static void main(String[] args) {

        var client = HttpClient.newHttpClient();
        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://www.petanikode.com"))
            .build();
            
        client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
            .thenApply(HttpResponse::body)
            .thenAccept(System.out::println)
            .join();
    }
}

Hasilnya:

HTTP Request pada Java 11

Biasanya library ini sering digunakan untuk:

  • Mengakses RESTful API atau web service;
  • Melakukan Scrape data pada web;
  • Membuat Bot;
  • dan lain-lain.

Akhir Kata…

Itulah beberapa fitur terbaru pada Java 11. Untuk fitur dan infomrasi lainya, kamu bisa baca di release notes Java 11.

Apakah kamu sudah menggunakan Java 11?

Bagaimana pendapatmu tentang Java 11?

Yuk bagikan di kolom komentar!