page.title=Fitur Bahasa Java 8 page.keywords="android N", "Java 8", "Jack" @jd:body <div id="qv-wrapper"> <div id="qv"> <ol> <li> <a href="#supported-features">API dan Fitur Bahasa Java 8 yang didukung</a> </li> <li> <a href="#configuration">Mengaktifkan Fitur Java 8 dan Jack Toolchain</a> </li> </ol> </div> </div> <p>Android N memperkenalkan dukungan untuk fitur bahasa Java 8 yang bisa Anda gunakan saat mengembangkan aplikasi yang menargetkan Android N. Halaman ini menjelaskan fitur bahasa baru yang didukung dalam Android N Preview, cara menyiapkan proyek Anda dengan benar untuk menggunakannya, dan setiap masalah yang diketahui yang mungkin Anda temui. </p> <p>Untuk mulai menggunakan fitur-fitur ini, Anda perlu mengunduh dan menyiapkan Android Studio 2.1 dan Android N Preview SDK, yang menyertakan Jack toolchain yang diperlukan dan Plugin Android untuk Gradle yang telah diperbarui. Jika Anda belum memasang Android N Preview SDK, lihat <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk Android N</a>.</p> <p class="note"> <strong>Catatan:</strong> Menggunakan fitur bahasa Java 8 yang baru bukanlah persyaratan untuk mengembangkan aplikasi yang menargetkan platform Android N. Jika Anda tidak ingin menulis kode dengan fitur bahasa Java 8, Anda bisa membiarkan nilai kompatibilitas sumber dan target proyek disetel ke Java 7, namun Anda tetap harus mengompilasi dengan JDK 8 untuk membangun pada platform Android N. </p> <h2 id="supported-features"> API dan Fitur Bahasa Java 8 yang Didukung </h2> <p> Saat ini tidak semua fitur bahasa Java 8 didukung Android. Akan tetapi, fitur berikut sekarang tersedia saat mengembangkan aplikasi yang menargetkan Android N Preview: </p> <ul> <li> <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Metode antarmuka default dan statis</a> </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html"> Ekspresi Lambda</a> (juga tersedia pada API level 23 dan yang lebih rendah) </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Anotasi yang bisa diulang</a> </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html"> Referensi Metode</a> (juga tersedia pada API level 23 dan yang lebih rendah) </li> </ul> <p class="note"> <strong>Catatan:</strong> Untuk menguji ekspresi lambda dan referensi metode pada Android versi sebelumnya, bukalah file {@code build.gradle} Anda, serta setel {@code compileSdkVersion} dan {@code targetSdkVersion} ke 23 atau yang lebih rendah. Anda tetap perlu <a href="#configuration">mengaktifkan Jack toolchain</a> untuk menggunakan fitur Java 8 ini. </p> <p> Selain itu, API fitur bahasa Java 8 berikut ini sekarang tersedia: </p> <ul> <li>Reflection API dan API terkait bahasa: <ul> <li> <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html"> {@code java.lang.FunctionalInterface}</a> </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html"> {@code java.lang.annotation.Repeatable}</a> </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isDefault--"> {@code java.lang.reflect.Method.isDefault()}</a> </li> <li>dan Reflection API yang terkait dengan anotasi yang bisa diulang, seperti <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html#getAnnotationsByType-java.lang.Class-"> {@code AnnotatedElement.getAnnotationsByType(Class)}</a> </li> </ul> </li> <li>Utility API: <ul> <li> <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html"> {@code java.util.function}</a> </li> <li> <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html"> {@code java.util.stream}</a> </li> </ul> </li> </ul> <h2 id="configuration"> Mengaktifkan Fitur Java 8 dan Jack Toolchain </h2> <p> Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan <a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> yang baru. Toolchain Android yang baru ini mengompilasi sumber bahasa Java menjadi dex bytecode yang bisa dibaca Android, memiliki format pustaka {@code .jack} sendiri, dan menyediakan sebagian besar fitur toolchain sebagai bagian dari alat bantu tunggal: pengemasan ulang, penciutan, pengaburan, dan multidex. </p> <p>Inilah perbandingan dua toolchain yang digunakan untuk membangun file Android DEX:</p> <ul> <li>Toolchain javac lawas:<br> <b>javac</b> ({@code .java} --> {@code .class}) --> <b>dx</b> ({@code .class} --> {@code .dex}) </li> <li>Jack Toolchain baru:<br> <b>Jack</b> ({@code .java} --> {@code .jack} --> {@code .dex}) </li> </ul> <h3> Mengonfigurasi Gradle </h3> <p> Untuk mengaktifkan fitur bahasa Java 8 dan Jack bagi proyek Anda, masukkan yang berikut dalam file {@code build.gradle} level modul Anda: </p> <pre> android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } </pre> <h3 id="known-issues"> Masalah yang Diketahui </h3> <p> <a href="{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a> saat ini tidak berfungsi pada Jack dan akan dinonaktifkan saat menggunakan toolchain baru. </p> <p>Karena Jack tidak menghasilkan file kelas antara saat mengompilasi sebuah aplikasi, alat yang bergantung pada file-file ini sekarang tidak berfungsi pada Jack. Beberapa contoh alat ini adalah:</p> <ul> <li>Pendeteksi lint yang beroperasi pada file kelas </li> <li>Alat dan pustaka yang mewajibkan file kelas aplikasi (misalnya pengujian instrumentasi dengan JaCoCo) </li> </ul> <p>Jika Anda menemukan masalah lain saat menggunakan Jack, <a href="http://tools.android.com/filing-bugs">laporkan bug</a>.</p>