Gunakan Fitur Bahasa Java 8

Android mendukung semua fitur bahasa Java 7 dan subset fitur bahasa Java 8 yang berbeda tiap versi platform. Laman ini menjelaskan fitur bahasa baru yang bisa digunakan, bagaimana mengonfigurasi dengan benar proyek Anda untuk digunakan, dan masalah yang diketahui yang mungkin Anda temukan.

Catatan: Bila mengembangkan aplikasi untuk Android, menggunakan fitur bahasa Java 8 adalah pilihan. Anda bisa menyimpan sumber proyek dan nilai kompatibilitas target yang ditetapkan untuk Java 7, tapi Anda tetap harus mengompilasi menggunakan JDK 8.

Platform Android N menambahkan dukungan untuk fitur bahasa Java 8, yang memerlukan compiler baru bernama Jack. Jack hanya didukung pada Android Studio 2.1 dan yang lebih tinggi. Jadi, jika Anda ingin menggunakan fitur bahasa Java 8, Anda harus menggunakan Android Studio 2.1 untuk membangun aplikasi.

Jika Anda sudah memasang Android Studio, pastikan Anda memperbaruinya ke versi terbaru dengan mengeklik Help > Check for Update (pada Mac, Android Studio > Check for Updates). Jika Anda belum memiliki IDE yang terpasang di stasiun kerja Anda, unduh Android Studio di sini.

API dan Fitur Bahasa Java 8 yang didukung

Saat ini tidak semua fitur bahasa Java 8 didukung Android. Akan tetapi, fitur-fitur berikut tersedia ketika mengembangkan aplikasi yang menargetkan Android 7.0 (API level 24):

Catatan: Informasi anotasi jenis hanya tersedia pada waktu kompilasi, dan tidak selama waktu proses.

Untuk menguji ekspresi lambda, referensi metode, dan anotasi jenis pada Android versi sebelumnya, bukalah file build.gradle Anda, serta setel compileSdkVersion dan targetSdkVersion ke 23 atau yang lebih rendah. Anda tetap perlu mengaktifkan Jack toolchain untuk menggunakan fitur Java 8 ini.

Selain itu, API bahasa Java 8 berikut juga tersedia:

Mengaktifkan Fitur Java 8 dan Jack Toolchain

Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan Jack toolchain. Android Toolchain baru ini mengompilasi sumber bahasa Java menjadi DEX bytecode yang bisa dibaca Android, memiliki format pustaka .jack sendiri, dan menyediakan sebagian besar fitur toolchain sebagai bagian dari alat bantu tunggal: pengemasan ulang, penciutan, pengaburan, dan multidex.

Inilah perbandingan dua toolchain yang digunakan untuk membangun file Android DEX:

  • Toolchain javac lawas:
    javac (.java.class) → dx (.class.dex)
  • Jack Toolchain baru:
    Jack (.java.jack.dex)

Mengonfigurasi Gradle

Untuk mengaktifkan fitur bahasa Java 8 dan Jack bagi proyek Anda, masukkan yang berikut dalam file build.gradle level modul Anda:

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Masalah yang diketahui

Instant Run saat ini tidak berfungsi pada Jack dan akan dinonaktifkan saat menggunakan toolchain baru.

Karena Jack tidak menghasilkan file kelas antara saat mengompilasi sebuah aplikasi, alat yang bergantung pada file-file tersebut saat ini tidak berfungsi pada Jack. Beberapa contoh alat ini adalah:

  • Pendeteksi lint yang beroperasi pada file kelas
  • Alat dan pustaka yang mewajibkan file kelas aplikasi (misalnya pengujian instrumentasi dengan JaCoCo)

Jika Anda menemukan masalah lain saat menggunakan Jack, laporkan bug.