Home | History | Annotate | Download | only in preview
      1 page.title=Fitur Bahasa Java 8
      2 page.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
     26 Studio 2.1 dan Android N Preview SDK, yang menyertakan
     27 Jack toolchain yang diperlukan dan Plugin Android untuk Gradle yang telah diperbarui. Jika Anda belum
     28 memasang 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} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
    141  .class} --&gt; {@code .dex})
    142   </li>
    143 
    144   <li>Jack Toolchain baru:<br>
    145   <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@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>
    159 android {
    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
    185 aplikasi, alat yang bergantung pada file-file ini sekarang tidak berfungsi pada Jack. Beberapa
    186 contoh 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
    193 pengujian 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>