| 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> |