blob: 8ab6c48304850baaccd8bc65bc907fa5062b4d70 [file] [log] [blame]
page.title=Tính năng ca Ngôn ng Java 8
page.keywords="android N", "Java 8", "Jack"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<ol>
<li>
<a href="#supported-features">Các tính năng và API ca Ngôn ng Java 8 được h trợ</a>
</li>
<li>
<a href="#configuration">Kích hot các tính năng ca Java 8 và Jack Toolchain</a>
</li>
</ol>
</div>
</div>
<p>Android N cung cp h tr cho các tính năng ca ngôn ng Java 8
mà bn có th s dng khi phát trin các ng dng nhm mc tiêu Android N.
Trang này mô t các tính năng ngôn ng mi được h tr trong Bn xem trước
Android N, cách thiết lp d án đúng để s dng chúng và các vn đề
đã biết mà bn có th gp phi.
</p>
<p>Để bt đầu s dng các tính năng này, bn cn ti xung và cài đặt Android
Studio 2.1 (bn xem trước) và SDK ca Bn xem trước Android N gm có Jack toolchain
cn thiết và B tr Android được cp nht cho Gradle. Nếu bn chưa
cài đặt SDK Bn xem trước Android N, hãy xem <a href="{@docRoot}preview/setup-sdk.html">Thiết lp để Phát trin dành cho Android N</a>.</p>
<p class="note">
<strong>Lưu ý:</strong> S dng các tính năng mi ca ngôn ng Java 8 không phi là mt
yêu cu để phát trin các ng dng nhm mc tiêu nn tng Android N. Nếu bn
không mun viết mã vi các tính năng ca ngôn ng Java 8 thì bn có đặt các giá tr
mã ngun và tương thích mc tiêu thành Java 7. Tuy nhiên, bn vn
phi biên dch vi JDK 8 để dng cho nn tng Android N.
</p>
<h2 id="supported-features">
Các tính năng và API ca Ngôn ng Java 8 được h tr
</h2>
<p>
Hin thi, Android không h tr tt c các tính năng ca ngôn ng Java 8. Tuy nhiên,
các tính năng sau s s dng được khi phát trin ng dng nhm mc tiêu
Bn xem trước Android N:
</p>
<ul>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Các
phương thc giao din mc định và tĩnh</a>
</li>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
Biu thc Lambda</a>
</li>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Chú gii
lp li</a>
</li>
</ul>
<p>
Ngoài ra, các API tính năng ca ngôn ng Java 8 cũng được h trợ:
</p>
<ul>
<li>Các API phn chiếu và liên quan đến ngôn ngữ:
</li>
<li style="list-style: none; display: inline">
<ul>
<li>{@code java.lang.FunctionalInterface}
</li>
<li>{@code java.lang.annotation.Repeatable}
</li>
<li>{@code java.lang.reflect.Method.isDefault()}
</li>
<li>và các API Phn chiếu liên quan ti các chú gii lp li, như
{@code AnnotatedElement.getAnnotationsByType(Class)}
</li>
</ul>
</li>
<li>Các API tin ích:
</li>
<li style="list-style: none; display: inline">
<ul>
<li>{@code java.util.function}
</li>
</ul>
</li>
</ul>
<p class="note">
<strong>Lưu ý:</strong> Android N kế tha vic trin khai các
biu thc lambda trên các lp n danh. Phương pháp này cho phép chúng
tương thích ngược và có th chy trên các phiên bn Android cũ hơn. Để kim th
các biu thc lambda trên các phiên bn cũ hơn, hãy nh vào tp {@code
build.gradle} và đặt {@code compileSdkVersion} và {@code
targetSdkVersion} thành 23 hoc thp hơn.
</p>
<h2 id="configuration">
Kích hot các tính năng ca Java 8 và Jack Toolchain
</h2>
<p>
Để s dng các tính năng mi ca ngôn ng Java 8 bn cũng cn s dng
<a class="external-link" href="https://source.android.com/source/jack.html">Jack toolchain</a> mi. Toolchain Android
mi s biên dch mã ngun ca ngôn ng Java sang mã bytecode
dex đọc được ca Android, có định dng thư vin {@code .jack} riêng ca nó và cung cp hu hết các tính năng
toolchain dưới dng mt phn ca công c riêng lẻ: đóng gói li, thu gn, làm ri mã và
multidex.
</p>
<p>Sau đây là phn so sánh hai toolchain được s dng để dng các tp DEX Android:</p>
<ul>
<li>Javac toolchain cũ:<br>
<b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
.class} --&gt; {@code .dex})
</li>
<li>Jack toolchain mi:<br>
<b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
</li>
</ul>
<h3>
Cu hình Gradle
</h3>
<p>
Để kích hot các tính năng ngôn ng Java 8 và Jack cho d án ca bn, hãy nhp
ni dung sau vào tp {@code build.gradle} theo mô-đun:
</p>
<pre>
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
</pre>
<h3>
Vn đề đã biết
</h3>
<p>
Instant Run, được gii thiu trong Android Studio 2.0 (Beta), hin không hot động
vi Jack và s b vô hiu hóa khi s dng toolchain mi.
</p>
<p>Bi vì Jack không to ra các tp lp trung gian khi biên dch mt
ng dng, các công c ph thuc vào nhng tp này hin thi không hot động vi Jack. Mt s
ví d v các công c này là:</p>
<ul>
<li>B dò Lint hot động trên các tp lp
</li>
<li>Các công c và thư vin đòi hi các tp lp ca ng dng (như JaCoCo
và Mockito)</li>
</ul>
<p><a href="http://tools.android.com/filing-bugs">Vui lòng thông báo li</a> nếu bạn phát hiện các vấn đề khác khi sử dụng Jack.</p>