Androidで使用可能なJavaのバージョン一覧

導入

Androidアプリの開発をしており,Java SE 8で導入されたjava.timeパッケージによる日時処理を行おうとしたら,minSdkVersionを26にしないといけないという警告が出ていることに気付いた。

minSdkVersionに指定するAndroid APIに応じて使用可能なJavaのバージョンが異なることに気付いた。せっかく新しいJavaの機能を勉強しても,使えないのならば意味がない。

そこで,Android APIとJavaのバージョンの対応を調べた。

対応一覧

最初に調査結果のバージョンの対応一覧を以下に掲載する。

Android APIとJavaのバージョンの対応
Date Android version Android API level Java version
2008-09-23 1.0-1.1 01-02 1.4?
2009-04-27 1.5-2.2 03-08 5?
2010-12-06 2.3-4.3 09-18 6?
2013-10-31 4.4-6.0 19-23 7
2016-08-22 7.0- 24- 8

Android 4.4が安定しているという話を聞くので,だいたいAPIレベル19のJava 7が使用可能と考えてよさそうだ。

上記の一覧表の情報の調査過程を次節から記す。

Java 8はAndroid APIレベル24以上

軽く調べたくらいでは,Androidの公式サイトではバージョンの対応の情報がまとまっていない。唯一あるのが,Java 8に関する情報 (Java 8 言語機能の使用 | Android デベロッパー | Android Developers) だ。

Android Studio 3.0.0からJava 8に対応するようになったようだ。上記の情報にある通り,Android API 24以上でJava 8が対応している。

ただし,APIレベル24でJava 8の全機能が使えるわけではない。Android API 26以上であればだいたいの機能を使えるようだ。

Java 7はAndroid APIレベル19以上

上記の公式サイトの情報からはJava 8がAndroid API 24から使用可能ということだけが分かる。必然的に,Android API 23以下はJava 7ということになる。今度はJava 6とJava 7の境界が気になる。

調べたところ「java 7 – Does Android support JDK 6 or 7 – Stack Overflow」の回答が参考になった。

元々AndroidはJava 6しか対応していなかった。2013-10-31のAndroid Studio 0.3.2のアナウンス時 (Android Studio 0.3.2 Released – Android Studio Project Site) に,API 19からJava 7のtry-with-resourcesが使用可能との情報が出たようだ。

従って,APIレベル19以上でJava 7が対応している。

Java 6はAndroid APIレベル09以上,Java 5は03以上?

それでは今度はJava 5とJava 6の境界が気になる。調査を調べたところ,公式のAndroidのビルドページ「Supporting Older Versions | Android Open Source Project」を見つけた。

ここによると,Android 2.3.xから4.4.xまでJava JDK 6に対応しているとある。そのため,Android 2.3.xのAPIレベル09以上でJava 6が対応しているとみなしてよいだろう。

加えて,Android 1.5-2.2.xまでJava JDK 5に対応しているともあるので,Android 1.5のAPIレベル03以上でJava 5が対応しているのだろう。

ただ,Android 5.x-6.0までOpenJDK 7に対応しているとある。Andorid 5.xのAPIレベルは21であり,前節のAPIレベル19以上でJava 7が使用可能という情報と整合性が取れていないことが気になる。

そのため,Java 6以下のバージョンの対応については目安程度に考えることにする。

Java 4はAndroid APIレベル01以上?

Supporting Older Versions | Android Open Source Project」にはAndroid 1.5-2.2.xでJava JDK 5が対応していると記載されていた。では,それ以前のAndroid 1.0と1.1 (APIレベル01, 02) はどうなのかというのが最後の疑問として残る。

いろいろ探してみたのだが,根拠となる情報源が見つからなかった。そのため,あくまで憶測となるがAndroidの初期リリースの1.0 (APIレベル01) 以上ではJava 4 (1.4) に対応していると推測する。

情報源

最後に今回のバージョンの調査で参照したWebサイトや,直接参照しなかったが参考になりそうだったページのリンクを掲載する。

直接参照サイト
間接参照サイト

開発ブログでリリースがアナウンスされるが,記事のラベルに規則性がなくて,リリース日の根拠ページの特定手間がかかる。そのため,Wikipediaのリリース日を参考にした。

SDKのバージョンとAndroid APIレベルが対応していることが調査中にわかった。

結論

Android APIレベルに対応するJavaのバージョンを調査した。調査の結果,Android 4.4 (APIレベル19) に対応しているJava 7をベースに考えて開発すればよいということがわかった。

Java 8の日時APIを使えないのは開発者の視点としては少々残念だ。ただし,利用者の視点としては,少しでも多くのAndroid端末で動作するほうが重要だろう。

今後はJava 7の機能でAndroidアプリを開発する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です