Apa Saja yang Baru 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.
Nanti kita akan mendapatkan sebuah file arsip
tar.gz
.
Setelah itu ekstrak ke tempat yang aman.
Saya akan mengekstraknya ke direktori
~/apps/
.
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.
Berikutnya, tutup terminal dan buka lagi.
Maka ketika kita cek dengan
which
dia akan mengarah ke sana.
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:
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"
.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
.
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
.
Sebenarnya method ini sudah pernah ditanyakan 7 tahun yang lalu di Stack Overflow. 2 Mengapa baru sekarang ditambahkan ya…?
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:
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.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:
readString()
untuk membaca teks string dari File;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:
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:
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:
Komentar
Posting Komentar