subrutin
a sequence of programmer life

Advertisement

Memandang Masa Depan Java

0 632

Java, sebagai bahasa pemrograman nomer dua paling populer di tahun 2020 setelah C berdasarkan TIOBE index, suka tidak suka telah mendapat beragam kritik, terutama karena begitu verbose dan sebegitu banyak boilerplate code yang kudu dibuat di banyak kasus.

Advertisement

Di dalam berbagai forum seminar, Java sering dibandingkan kala misalnya membuat program Hello World, setidaknya memerlukan 20 baris code, sedangkan Ruby hanya memerlukan 2 baris, dan php cukup 1 baris.

Kritik tersebut memang tidak dapat disangkal, verbosity dari java terkadang cukup mengganggu bagi programmer dalam beberapa situasi. Memang, tidak ada bahasa pemrograman yang sempurna, sebagaimana adanya apapun di dunia ini. Itulah mengapa sebagai programmer harus cerdas untuk menimbang bahasa pemrograman mana yang sebaiknya dipilih berdasarkan project yang akan dikerjakan.

Namun Java sebagai bahasa pemrograman bukanlah bahasa pemrograman kolot yang tidak mau berubah. Semenjak diciptakan di tahun 1996, Java telah mengalami evolusi dari waktu ke waktu. Namun perubahan tersebut dipandang tidak begitu signifikan, hal tersebut mungkin dikarenakan Java pada era tersebut begitu mendominasi pasar, terlebih dengan fitur strong type safety yang disediakan dan konsep object oriented yang kuat, serta JVM (Java Virtual Machine) yang membuatnya dapat dijalankan di berbagai sistem operasi menjadikannya disukai untuk digunakan dalam membangun berbagai project besar.

Advertisement

Sampai akhirnya kemudian muncul bahasa pemrograman lain yang menggunakan JVM, dan menawarkan apa – apa yang Java tidak miliki. Penantang pertama yang muncul adalah  Groovy yang dirilis di tahun 2003, meskipun baru secara resmi dan distandarisasi pada versi 1.0 di Januari 2007. Groovy menawarkan keuntungan untuk digunakan sebagai bahasa scripting. Tidak seperti Java yang merupakan bahasa pemrograman static typed. Groovy bersifat dynamically typed, layaknya Python dan JavaScript, dimana tipe object diperiksa saat runtime

Bahasa pemrograman JVM berikutnya yang muncul dan populer adalah Scala yang dirancang oleh  Martin Odersky di École Polytechnique Fédérale de Lausanne (EPFL) pada tahun 2001 dan kemudian dirilis di 2004. Scala membawa paradigma bahasa pemrograman baru yang Java tidak miliki : Functional Programming dan pendekatan deklaratifnya. Dan memang, banyak rancangan bahasa pemrograman Scala yang  ditujukan sebagai antitesis dari “kelemahan – kelemahan” yang dimiliki Java.

Berikutnya, pada tahun 2007. Bahasa pemrograman JVM lain yaitu Clojure  – yang merupakan bahasa pemrograman fungsional murni, dirilis.  Bahasa pemrograman yang awalnya dibuat oleh Rich Hickey ini dibangun berdasarkan karakteristik dari  LISP. Hal ini ditandai dari kesederhanaan dan dialek fungsional yang digunakan. Clojure berifat dynamically typed, sama halnya dengan Groovy namun dengan learning curve yang lebih curam dikarenakan sintaks yang digunakan sangatlah berbeda dengan bahasa pemrograman JVM lain.

Advertisement

Bahasa pemrograman JVM  yang populer berikutnya adalah Kotlin yang dan dirilis di Februari 2016. Dirancang oleh JetBrains dengan satu tujuan yang jelas, mempertahankan fitur – fitur  baik  yang dimiliki Java, dan di saat yang sama memperbaiki mayoritas masalah populer pada Java. Itulah mengapa Kotlin begitu populer, terlebih dengan diumumkannya Kotlin sebagai bahasa pemrograman yang direkomendasikan untuk pemrograman Android oleh Google di tahun 2017.

  • Adaptasi Java

Iklim persaingan yang muncul dari bahasa pemrograman JVM, membuat Java kemudian berubah, hal ini ditandai dengan dirilisnya Java 8 pada Maret 2014, dengan fitur Java Lambda dan Stream, yang ditujukan untuk mengatasi popularitas dari pemrograman fungsional yang dibawa oleh Scala dan Groovy.

Java 8 memperkenalkan fitur baru yang menjadikannya juga dapat digunakan sebagai bahasa pemrograman fungsional. Tidak hanya object dan value, namun method dan lambda kini juga menjadi first class citizen dalam java, sehingga dapat digunakan sebagai sebuah argumen dari sebuah method .

Berikutnya, guna mengatasi popularitas dari Kotlin, mulai Java 15 yang dirilis pada September 2020 nanti, Java memperkenalkan banyak fitur baru yang mirip dengan fitur – fitur yang dimiliki Kotlin,  beberapa diantaranya adalah sebagai berikut

  • fitur baru record
  • text blocks (cara penulisan multi-line pada string yang diapit dengan triple quote)
  • statement switch yang baru (adaptasi dari statement when pada kotlin)

 

  • Java Record

Subrutin akan mengulas salah satu contoh fitur baru yang mengadaptasi Kotlin dan juga scala yaitu  Java Record fitur yang bisa dibilang merupakan fitur yang dinanti sejak lama oleh para programmer Java. Mungkin banyak programmer Java yang telah menggunakan Lombok untuk menghindari pembuatan getter dan setter secara tradisional untuk setiap field yang existing 

Di Kotlin terdapat class data yang digunakan untuk menyeleseikan masalah ini. Dan Java, menggunakan pendekatan yang sama dengan class record, hal yang sama dilakukan dengan scala dengan class case

Tujuan dari class ini adalah untuk menampung data immutable di dalam sebuah object. Perhatikan class Employee berikut jika  ditulis menggunakan Java

package com.subrutin.dto;

public class Employe {

    private final String firstName;
    private final String lastName;
    private final String address;
    
    
    public Employe(String firstName, String lastName, String address) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
    }
    
    public String getFirstName() {
        return firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public String getAddress() {
        return address;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((address == null) ? 0 : address.hashCode());
        result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
        result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Employe other = (Employe) obj;
        if (address == null) {
            if (other.address != null)
                return false;
        } else if (!address.equals(other.address))
            return false;
        if (firstName == null) {
            if (other.firstName != null)
                return false;
        } else if (!firstName.equals(other.firstName))
            return false;
        if (lastName == null) {
            if (other.lastName != null)
                return false;
        } else if (!lastName.equals(other.lastName))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "Employe [firstName=" + firstName + ", lastName=" + lastName + ", address=" + address + "]";
    }
    
    
    
    
}

Perhatikan, begitu verbose-nya untuk sesuatu fungsi yang sederhana. Namun dengan record, programmer cukup menuliskannya sebagai berikut

public record EmployeeRecord(String firstName, String lastName,String address) {}

Bayangkan, dengan menggunakan record berapa banyak baris code yang bisa dihemat, lebih sederhana dan enak dibaca.

  • Kesimpulan
Perubahan Iklim yang terjadi dalam dunia pemrograman dan munculnya bahasa pemrograman baru, turut pula mengubah Java dari waktu ke waktu, meski relatif lamban, adaptasi Java terus dilakukan sesuai dengan kebutuhan dunia industri dan dapat dipandang sebagai upaya Java untuk tetap mempertahankan popularitas mereka sebagai  salah satu bahasa pemrograman yang paling banyak digunakan. Hal  tersebut tentu kabar baik bagi mereka yang menekuni pekerjaan sebagai programmer yang kesehariannnya berkecimpung dengan Java.

 

 

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.