Why Java8?
lambdaやoptionalを使うために、Java8で開発したいという欲求からです。
kotlin使ってる人はkotlinの方がいいと思います。
Check current java version
java -version
で確認しましょう。
% java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
コンパイルバージョンも確認。
% javac -version
javac 1.7.0_71
インストールされている全てのJavaバージョンを確認。
% /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
1.7.0_71, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Java8をダウンロードとインストール
Oracleのページへ。 jdk-8u60-macosx-x64.dmg
でいいはずです。
ダウンロードしたdmgファイルを叩いてインストールを完了させると、javaバージョンが切り替わっているはずです。
% java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
% javac -version
javac 1.8.0_60
Set JAVA8_HOME
env
JAVA_HOME
を設定します。
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
AndroidはまだJava8に対応していないので、retrolambdaというライブラリを使います。retrolambdaをうまいことコンパイルするためにgradle-retlolambdaというgradleプラグインを使います。
gradle-retrolambdaは、 JAVA8_HOME
にpathを通すように言ってくるので設定します。
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME
環境変数は以下のように設定します。
export JAVA8_HOME=`/usr/libexec/java_home -v 1.8`
.zshrc
などに書いておいてもいいです。
.zshrc
export JAVA8_HOME=$/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
Pass JAVA8_HOME
env to Android
Android Studioに環境変数を渡すように設定しないと、 gradleで JAVA8_HOME
を読み取れないので設定します。
launchctl setenv JAVA8_HOME $JAVA8_HOME
以上です。