Langsung ke konten utama

Apa Saja yang Baru di Java 11?

Apa Saja yang Baru di Java 11?


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: ftpgopher, 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 UnirestOkHTTPApache HTTP ClientAndroid 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

Komentar

Postingan populer dari blog ini

Menghitung Akar Kuadrat dan Akar Kubik dengan Java

Menghitung Akar Kuadrat dan Akar Kubik dengan Java Pada pelajaran Matematika, kadang kita sering menemukan perhitungan akar. Contoh, akar kuadrat dari  25  adalah  5 , karena  5x5=25 , bisa ditulis:  √ 25 = 5 25 = 5 . Lalu kalau akar kubik dari  27  adalah  3 , karena  3x3x3=27 , bisa ditulis:  3 √ 27 = 3 27 3 = 3 . Bagaimana cara kita membuat perhitungan tersebu di Java? Perhitungan akar kuadrat dapat dilakukan dengan fungsi  sqrt() . Fungsi ini terdapat dalam  class   Math . Jadi untuk menghitung akar seperti di atas dalam kode java dapat dilakukan dengan cara berikut ini: Math . sqrt ( 25 ) ; Fungsi tersebut akan menghasilkan:  5 Sementara itu untuk perhitungan akar kubik dapat dilakukan dengan fungsi  cbrt() . Contoh: Math . cbrt ( 27 ) ; Akan menghasilkan:  3 Contoh Penerapannya dalam Program Sekarang mari kita coba membuat program untuk menghitung rumus pitagoras. Rum...

Contoh Program OOP

Contoh Program OOP Kita akan menggunakan Netbeans, silahkan buat project baru. Isi nama project-nya dengan  “BelajarOOP”  dan jangan centang  “Create Main Class” . Setelah itu, silahkan buat  package  baru. Klik kanan pada  <default package> , lalu pilih  New->Java Package . Isi nama  package  dengan  “dasar” : Setelah itu, di dalam package  dasar , silahkan buat  class  baru bernama  Player.java . Klik kanan pada package  dasar  lalu pilih  New->Java Class . Setelah itu, isi namanya dengan  Player.java . Silahkan tulis kode pada  Player.java  seperti ini: package dasar ; public class Player { // definisi atribut String name ; int speed ; int healthPoin ; // definisi method run void run ( ) { System . out . println ( name + " is running..." ) ; System . out . println ( "Speed: " + speed ) ; ...