blob: 4389184459029085ede569f99b8ba6b568fca8e9 [file] [log] [blame]
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} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
.class} --&gt; {@code .dex})
</li>
<li>Jack Toolchain baru:<br>
<b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@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>