Google I/0 2017 beberapa bulan lalu menjadi momen spesial tersendiri bagi para Android developer. Di acara akbar tahunan tersebut, Google mengumumkan bahwa mereka akan memberikan first-class-support untuk Kotlin di Android. Ini artinya, Kotlin, berdampingan dengan Java, akan menjadi official programming language untuk Android, dan Google akan memberikan komitmen penuh agar Kotlin dapat digunakan sebagai bahasa pemograman dalam mengembangkan aplikasi Android.

Jadi, apa yang membuat Kotlin begitu istimewa sehingga Google mendapuknya sebagai official programming language untuk Android? Di bawah ini akan saya rangkum beberapa poin penting yang menurut saya dapat dijadikan landasan kenapa kita, para Android developer, layak untuk mencoba Kotlin sebagai bahasa pemograman pertama untuk mengembangkan aplikasi di Android.

Fully Interoperate dengan Java

Sintaks Kotlin memang tidak kompatibel dengan Java, dalam artian kita tidak dapat mencampur kode Kotlin dengan kode Java dalam satu file. Namun kode Kotlin dapat memanggil kode Java. Di Kotlin kita dapat membuat instance dari class Java serta menggunakan semua library yang ada di JVM (seperti List, HashMap, dll). Ini akan sangat memudahkan kita dalam melakukan migrasi dari Java ke Kotlin, dengan melakukan rewrite secara perlahan dan bertahap. Perhatikan penggalan kode di bawah ini:

// Person.java

class Person {

    private String name;
    private int age;

    public Person(String name, int age) {
        this.setName(name);
        this.setAge(age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Kita dapat membuat instance dari class diatas di Kotlin dengan cara:

// Main.kt

import java.util.HashMap
fun main(args: Array<String>) {
    // Membuat instance dari class Java
    var person = Person("Anton", 15)
    println(person.name)

    // Memanfaatkan libary Java dari JVM
    var map = HashMap<Int, String>()
    map.put(1, "Glend Maatita")
    map.put(2, "Nurissa Maatita")
}

Concise

Sejujurnya, inilah alasan paling masuk akal kenapa kita bisa mulai migrasi dari Java ke Kotlin. Kotlin, secara sintaksis, sangat consise dibandingkan dengan Java yang sangat verbose. Kotlin menghilangkan banyak hal, yang dapat dihilangkan, tanpa mengurangi clarity dari suatu kode. Hal ini secara dramatis mengurangi banyaknya baris kode yang harus ditulis di Kotlin dibandingkan dengan Java, untuk mencapai tujuan yang sama.

Perhatikan perbedaan dua bahasa pemograman di bawah ini. Keduanya memiliki tujuan yang sama, dan menghasilkan value yang sama, namun sangat jomplang dalam hal banyaknya kode yang harus ditulis.

Di Java:

// Membuat instance baru
Person person = new Person("Glend Maatita", 40);

Di Kotlin

// Membuat instance
var me = Person("Anton", 15)

Di kasus pertama, untuk membuat instance dari suatu class, satu hal yang pasti adalah variable yang digunakan untuk menyimpan object dari instance class Person, dalam hal ini me, sudah tentu memiliki type data Person. Di Java, variable me tetap harus dideklarasikan dengan tipe data Person walaupun hal ini sudah pasti dan sebenarnya tidak perlu ditulis.

Kita lihat lagi contoh di bawah, bagaimana Kotlin mengeliminasi keyword seperti break yang tanpa keyword tersebut pun, sebenarnya maksud kita sudah jelas, yaitu hentikan pengecekan di dalam switch-case ketika suatu case terpenuhi

Di Java

// switch-case
switch (num) {
    case 0:
        System.out.println("Num is zero");
        break;
    case 1:
        System.out.println("Num is one");
        break;
    case 2:
        System.out.println("Num is two");
        break;
    case 3:
        System.out.println("Num is three");
        break;
    default:
        System.out.println("Num is undefined");
        break;
}

Di Kotlin

// switch-case/when
when(num) {
    0 -> println("Num is zero")
    1 -> println("Num is one")
    2 -> println("Num is two")
    3 -> {
        println("Num is three")
    }
    else -> {
        println("Num is undefined")
    }
}

No more NullPointerException

Exception ini terjadi ketika kita mengakses suatu properti atau method dari object yang belum didefinisikan atau null. Runtime Error ini merupakan error yang paling sering terjadi sekaligus paling mudah diatasi. Yap, sangat mudah diatasi dengan hanya menambahkan pengecekan apakah object tersebut bernilai null atau tidak sebelum mengakses properti/method di dalamnya. Sayangnya, di Java, ini adalah Runtime Error, error yang terjadi saat program sedang berjalan. Java Compiler tidak akan mendeteksi error saat proses kompilasi.

Di Kotlin, antisipasi untuk NullPointerException dilakukan di layer kompilasi. Kotlin Compiler akan menampilkan error ketika ada suatu variable yang digunakan dalam kondisi null.

Dukungan IDE

Siapapun, yang pernah melewati era dimana Java adalah bahasa pemograman multi-purpose paling relevan, pasti setuju bahwa IDE terbaik untuk Java adalah IntellijIDE dan official IDE untuk Android sendiri saat ini adalah AndroidStudio, setelah Google menghentikan dukungannya untuk Eclipse. JetBrains adalah perusahaan pembuat kedua IDE tersebut, dan juga perusahaan dibalik Kotlin itu sendiri. JetBrains tentu berkomitmen membuat IDE terbaik untuk Kotlin, selaras dengan bagaimana mengkondisikan Kotlin sebagai bahasa pemograman utama di AndroidStudio. Dukungan IDE ini menurut saya sangat penting, mengingat produktivitas seorang programmer juga dipengaruhi oleh tools apa yang digunakan untuk menulis kode.

Beberapa poin diatas setidaknya dapat dijadikan alasan untuk mulai mempertimbangkan Kotlin sebagai alternatif untuk Java dalam mengembangkan aplikasi Android.

Happy coding!