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