1page.title=Fitur Bahasa Java 8 2page.keywords="android N", "Java 8", "Jack" 3@jd:body 4 5<div id="qv-wrapper"> 6 <div id="qv"> 7 <ol> 8 <li> 9 <a href="#supported-features">API dan Fitur Bahasa Java 8 yang didukung</a> 10 </li> 11 <li> 12 <a href="#configuration">Mengaktifkan Fitur Java 8 dan Jack Toolchain</a> 13 </li> 14 </ol> 15 </div> 16</div> 17 18<p>Android N memperkenalkan dukungan untuk fitur bahasa Java 8 19 yang bisa Anda gunakan saat mengembangkan aplikasi yang menargetkan Android N. 20 Halaman ini menjelaskan fitur bahasa baru yang didukung dalam Android N 21 Preview, cara menyiapkan proyek Anda dengan benar untuk menggunakannya, dan setiap masalah 22 yang diketahui yang mungkin Anda temui. 23</p> 24 25<p>Untuk mulai menggunakan fitur-fitur ini, Anda perlu mengunduh dan menyiapkan Android 26Studio 2.1 dan Android N Preview SDK, yang menyertakan 27Jack toolchain yang diperlukan dan Plugin Android untuk Gradle yang telah diperbarui. Jika Anda belum 28memasang Android N Preview SDK, lihat <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan untuk Android N</a>.</p> 29 30 31 32<p class="note"> 33 <strong>Catatan:</strong> Menggunakan fitur bahasa Java 8 yang baru bukanlah 34 persyaratan untuk mengembangkan aplikasi yang menargetkan platform Android N. Jika Anda 35 tidak ingin menulis kode dengan fitur bahasa Java 8, Anda bisa membiarkan nilai kompatibilitas 36 sumber dan target proyek disetel ke Java 7, namun Anda tetap harus 37 mengompilasi dengan JDK 8 untuk membangun pada platform Android N. 38</p> 39 40<h2 id="supported-features"> 41 API dan Fitur Bahasa Java 8 yang Didukung 42</h2> 43 44<p> 45 Saat ini tidak semua fitur bahasa Java 8 didukung Android. Akan tetapi, 46 fitur berikut sekarang tersedia saat mengembangkan aplikasi yang menargetkan 47 Android N Preview: 48</p> 49 50<ul> 51 <li> 52 <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Metode 53 antarmuka default dan statis</a> 54 </li> 55 56 <li> 57 <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html"> 58 Ekspresi Lambda</a> (juga tersedia pada API level 23 dan yang lebih rendah) 59 </li> 60 61 <li> 62 <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Anotasi 63 yang bisa diulang</a> 64 </li> 65 66 <li> 67 <a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html"> 68 Referensi Metode</a> (juga tersedia pada API level 23 dan yang lebih rendah) 69 </li> 70</ul> 71 72<p class="note"> 73 <strong>Catatan:</strong> Untuk menguji ekspresi lambda dan referensi metode pada 74 Android versi sebelumnya, bukalah file {@code build.gradle} 75 Anda, serta setel {@code compileSdkVersion} dan {@code targetSdkVersion} ke 23 atau 76 yang lebih rendah. Anda tetap perlu <a href="#configuration">mengaktifkan Jack 77 toolchain</a> untuk menggunakan fitur Java 8 ini. 78</p> 79 80<p> 81 Selain itu, API fitur bahasa Java 8 berikut ini sekarang tersedia: 82</p> 83 84<ul> 85 <li>Reflection API dan API terkait bahasa: 86 <ul> 87 <li> 88 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html"> 89 {@code java.lang.FunctionalInterface}</a> 90 </li> 91 92 <li> 93 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html"> 94 {@code java.lang.annotation.Repeatable}</a> 95 </li> 96 97 <li> 98 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isDefault--"> 99 {@code java.lang.reflect.Method.isDefault()}</a> 100 </li> 101 102 <li>dan Reflection API yang terkait dengan anotasi yang bisa diulang, seperti 103 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html#getAnnotationsByType-java.lang.Class-"> 104{@code AnnotatedElement.getAnnotationsByType(Class)}</a> 105 </li> 106 </ul> 107 </li> 108 109 <li>Utility API: 110 <ul> 111 <li> 112 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html"> 113 {@code java.util.function}</a> 114 </li> 115 116 <li> 117 <a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html"> 118 {@code java.util.stream}</a> 119 </li> 120 </ul> 121 </li> 122</ul> 123 124<h2 id="configuration"> 125 Mengaktifkan Fitur Java 8 dan Jack Toolchain 126</h2> 127 128<p> 129 Agar dapat menggunakan fitur bahasa Java 8 yang baru, Anda juga perlu menggunakan 130 <a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> yang baru. Toolchain Android 131 yang baru ini mengompilasi sumber bahasa Java menjadi dex 132 bytecode yang bisa dibaca Android, memiliki format pustaka {@code .jack} sendiri, dan menyediakan sebagian besar fitur toolchain 133 sebagai bagian dari alat bantu tunggal: pengemasan ulang, penciutan, pengaburan, dan 134 multidex. 135</p> 136 137<p>Inilah perbandingan dua toolchain yang digunakan untuk membangun file Android DEX:</p> 138<ul> 139 <li>Toolchain javac lawas:<br> 140 <b>javac</b> ({@code .java} --> {@code .class}) --> <b>dx</b> ({@code 141 .class} --> {@code .dex}) 142 </li> 143 144 <li>Jack Toolchain baru:<br> 145 <b>Jack</b> ({@code .java} --> {@code .jack} --> {@code .dex}) 146 </li> 147</ul> 148 149<h3> 150 Mengonfigurasi Gradle 151</h3> 152 153<p> 154 Untuk mengaktifkan fitur bahasa Java 8 dan Jack bagi proyek Anda, masukkan 155 yang berikut dalam file {@code build.gradle} level modul Anda: 156</p> 157 158<pre> 159android { 160 ... 161 defaultConfig { 162 ... 163 jackOptions { 164 enabled true 165 } 166 } 167 compileOptions { 168 sourceCompatibility JavaVersion.VERSION_1_8 169 targetCompatibility JavaVersion.VERSION_1_8 170 } 171} 172</pre> 173 174<h3 id="known-issues"> 175 Masalah yang Diketahui 176</h3> 177 178<p> 179 <a href="{@docRoot}tools/building/building-studio.html#instant-run">Instant 180 Run</a> saat ini tidak berfungsi pada Jack dan akan dinonaktifkan saat menggunakan 181 toolchain baru. 182</p> 183 184<p>Karena Jack tidak menghasilkan file kelas antara saat mengompilasi sebuah 185aplikasi, alat yang bergantung pada file-file ini sekarang tidak berfungsi pada Jack. Beberapa 186contoh alat ini adalah:</p> 187 188<ul> 189 <li>Pendeteksi lint yang beroperasi pada file kelas 190 </li> 191 192 <li>Alat dan pustaka yang mewajibkan file kelas aplikasi (misalnya 193pengujian instrumentasi dengan JaCoCo) 194 </li> 195</ul> 196 197<p>Jika Anda menemukan masalah lain saat menggunakan Jack, <a href="http://tools.android.com/filing-bugs">laporkan bug</a>.</p>