[android] Java8 을 사용해보자! |
https://developer.android.com/studio/preview/features/java8-support.html
Android 에서 Java8 사용하기
-
Android Studio 2.4 Preview 4 이상부터 모든 Java7 과 Java8 언어 특성을 지원한다.
-
Java7 을 사용하더라도 JDK8 을 이용해서 컴파일하므로 JDK8 은 필요하다.
-
이전에는 Jack Compiler 를 사용해야 Java8 Compile 이 가능했는데,
이제는 desugar 라는 bytecode transformation 만 있으면 된다.
Jack 이 더 이상 필요하지 않다.
Jack 을 사용하고 있었다면 build.gradle 에서 그 녀석부터 없애라!
-
Java8 을 쓰기 위해서는 Android plugin 을 2.4.0-alpha4 이상으로 update 해야 한다.
-
build.gradle 에 다음을 설정하라.
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
-
만약 Jack, Retrolambda, DexGuard 등을 사용하고 있었다면, desugar 대신 설정된 tool 을 사용해서 compile 한다.
-
Android Studio 가 모든 Java8 언어 특성을 지원하는 것은 아니다.
minSdkVersion 에 따라 dependency 도 있다.
-
다음의 것들은 minSdk 상관 없이 쓸 수 있는 기능
Lambda expression ( lambda serialization 일부 제약이 있음 )
Method Reference ( ClassName::new 의 형태 )
Type Annotations ( 몇 가지 제약은 있음 )
Repeating annotations
-
다음의 것들은 minSdk 24 이상
Default and static interface methods
java.lang.annotation.Repeatable
AnnotatedElement.getAnnotationsByType(Class)
java.util.stream
java.lang.FunctionalInterface
java.lang.reflect.Method.isDefault()
java.util.function
참고 : Type Annotations
https://docs.oracle.com/javase/tutorial/java/annotations/type_annotations.html
https://docs.oracle.com/javase/tutorial/java/annotations/basics.html
더 강력한 type checking 을 위해 Java8 부터 생겼다.
이전에는 정의부(선언부)에만 사용할 수 있었다.
new @Interned MyObject()
myString = (@NonNull String) str;
class UnmodifiableList<T> implements @Readonly List<@Readonly T>{ … }
void monitorTemperature() throws @Critical TemperatureException{ … }
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Gradle Tutorial #1 (0) | 2018.10.04 |
---|---|
[정리] 안드로이드 전문가 되는 법 (0) | 2018.10.03 |
[android] Shared Element Transition Tutorial ( with transparent bg ) (0) | 2018.09.28 |
[도서 정리] 안드로이드 앱 성능 최적화 #8 최종 사용자 모니터링 (0) | 2018.06.29 |
[도서 정리] 안드로이드 앱 성능 최적화 #7 네트워크 성능 (2) | 2018.06.28 |
댓글