概要: 本記事では2026年8月時点のGradle 8系の最新版とサポート状況、Javaバージョンごとの互換性を整理します。さらに、Java 21〜24を使う場合に必要なGradleバージョンの選定方法や、build.gradleでの正しいJavaバージョン指定、Configuration Cacheなどの高速化設定まで実践的に解説します。
Gradle 8系の最新バージョンと、いま確認すべきサポート状況
Gradle 8系の最新安定版は8.14.5
Gradle 8系の最新安定版は8.14.5です。2025年8月にリリースされた8.14系の5つ目のパッチリリースで、Gradle公式は8.14.5へのアップグレードを推奨しています。(出典:Gradle「Gradle 8.14.5 Release Notes」)
8系の主要なマイルストーンを振り返ると、8.0が2023年2月、8.5が2023年11月、8.8が2024年4月、8.10が2024年8月、そして8.14.0でJava 24サポートが追加されました。パッチリリースを重ねて安定性が高まっている段階です。
記事公開時点ではより新しいパッチが公開されている可能性もあるため、Gradle公式のリリースページで最新版を確認することをおすすめします。
8系はサポート中だが、新機能追加は縮小傾向
Gradle 8系は2025年8月時点でサポート中のバージョンラインです。しかし、最新メジャー版は9.x系(9.6.1)であり、8系の新機能追加やバグ修正は縮小・終了傾向にあります。(出典:Gradle「Gradle Releases」)
情報源によって8系のActive Support終了時期に差異があり、2025年7月31日とするものと、2025年後半以降もサポート継続とするものが混在しています。断定は避け、「セキュリティ修正を除き保守が縮小される可能性がある」と理解しておくのが安全です。
新規プロジェクトでは9.x系の利用を検討しつつ、既存プロジェクトで8系を使い続ける場合も最新の8.14.5に更新しておくことが重要です。
8系を選ぶべき理由と9系への移行判断
Gradle 8系を選択する最大の理由はJava 8〜16でGradle自体を実行できる最後のメジャーラインであることです。Gradle 9.0.0以降はJava 17以上が実行環境の最低要件となったため、古いJDKで動かす必要があるプロジェクトは8系を使い続ける必要があります。(出典:Gradle「Compatibility Matrix」)
一方、Java 17以上で問題なく動作するプロジェクトであれば、長期的な保守を受ける観点から9.x系への移行を検討する価値があります。移行のタイミングは、使用中のプラグインがGradle 9系に対応しているかどうかも判断材料になります。
いずれの場合も、8系を使うなら最新の8.14.5に更新しておくことで、既知の不具合やセキュリティ問題を回避できます。
要点:8系の最新版は8.14.5。サポートは継続中だが新機能追加は縮小傾向にあり、新規プロジェクトは9系を検討。Java 8〜16でGradleを実行する必要がある場合は8系が必須。
Gradle 8.xで動くJavaバージョン一覧と実行環境の選び方
Gradle本体を実行できるJavaバージョン
Gradle 8系はJava 8〜24を実行環境としてサポートしています。Gradle 9系はJava 17以上が最低要件のため、8系は古いJDKでも動作する最後のメジャーバージョンです。(出典:Gradle「Compatibility Matrix」)
Javaバージョンごとに必要な最小Gradle 8.xは以下のとおりです。
| Javaバージョン | Gradle実行に必要な最小バージョン |
|---|---|
| Java 8〜20 | 8.0以前(8系すべてで実行可能) |
| Java 21(LTS) | Gradle 8.5 |
| Java 22 | Gradle 8.8 |
| Java 23 | Gradle 8.10 |
| Java 24 | Gradle 8.14 |
| Java 25以降 | 8系では実行不可(9.1.0以降が必要) |
Java 25以降を使う場合はGradle 9系への移行が必要です。
実行環境とコンパイル対象は別物
GradleにおけるJavaバージョンには2つの意味があります。1つはGradle自体を動かすJVM(実行環境)、もう1つはプロジェクトのソースコードをコンパイル・テストするJVM(ツールチェーン)です。これらは分離できます。
たとえば、Gradle 8.5をJava 17で実行しながら、Java 8向けのバイトコードを生成する設定が可能です。逆に、Java 21でGradleを実行するには8.5以降が必要ですが、コンパイル対象はJava 8のままにすることもできます。
この分離を実現するのがJava Toolchainsです。ツールチェーンを使えば、ローカルにインストールされたJDKのバージョンに縛られず、指定したJavaバージョンでコンパイルやテストを実行できます。(出典:Gradle「Java Toolchains」)
Java 21 LTS環境では8.5以降を選ぶ
Java 21は広く使われているLTSです。Java 21でGradleを実行する場合、最小バージョンは8.5ですが、実務では8.14.5など8系の最新版を使うことをおすすめします。パッチリリースにより安定性やセキュリティが向上しているためです。
Java 17環境の場合も同様に、Gradle 7.3以降であれば実行可能ですが、現在の8系プロジェクトでは最新の8.14.xを選ぶのが安全です。古い8.xを使い続けると、既知の不具合やパフォーマンス問題に直面する可能性があります。
実行環境のJDKを選ぶ際は、プロジェクトで使うライブラリやプラグインが要求するJavaバージョンもあわせて確認してください。Gradle本体とプラグインの要件が異なる場合があるためです。
要点:Gradle 8系はJava 8〜24で実行可能。Java 21なら8.5、Java 22なら8.8、Java 23なら8.10、Java 24なら8.14が必要。実行環境とコンパイル対象はJava Toolchainsで分離できる。
Java 21から24対応に必要なGradle 8.5、8.8、8.10、8.14の使い分け
Javaバージョンごとの必要Gradle早見表
Java 21以降を使う場合、Gradle 8系ではJavaのバージョンが上がるごとに必要な最小Gradleバージョンも上がります。以下の表で整理します。
| 使用するJava | 最低Gradle | 実務推奨 | リリース時期 |
|---|---|---|---|
| Java 21(LTS) | 8.5 | 8.14.5 | 2023年11月 |
| Java 22 | 8.8 | 8.14.5 | 2024年4月 |
| Java 23 | 8.10 | 8.14.5 | 2024年8月 |
| Java 24 | 8.14 | 8.14.5 | 2025年8月頃 |
(出典:Gradle「Compatibility Matrix」)
8.5未満のバージョンをJava 21環境で実行しようとすると起動に失敗します。Javaのバージョンを上げる際は、必ずGradleのバージョンも確認してください。
新しめのJavaを使う場合の注意点
Java 21〜24のいずれを使う場合も、最新の8.14.5に統一するのが最も安全です。8.5や8.8でなければ動かないという制約は「最低バージョン」であり、それ以上の8系なら問題なく動作します。
特にJava 24は8.14.0でサポートが追加されたばかりであるため、パッチリリースで修正された不具合が含まれている可能性があります。最新パッチを使うことで安定性が高まります。
また、Gradleを実行するJDKと、コンパイル対象のJavaバージョンが異なる場合は、Java Toolchainsを設定することで両者を独立に管理できます。たとえばGradle自体はJava 17で実行しつつ、Java 21向けのコードをコンパイルする構成が可能です。
Java 25以降は8系では対応できない
Java 25以降を使う場合、Gradle 8系では実行できません。Java 25はGradle 9.1.0、Java 26はGradle 9.4.0以降が必要です。(出典:Gradle「Compatibility Matrix」)
つまり、8系に留まりながら使えるJavaは24が上限です。Java 25以降への移行を予定しているプロジェクトは、Gradle 9系へのアップグレードも同時に計画する必要があります。
8系から9系への移行は、プラグインの互換性確認、非推奨APIの解消、設定ファイルの見直しなどが必要になる場合があります。移行前に使用中プラグインのGradle 9対応状況を確認しましょう。
要点:Java 21→8.5、Java 22→8.8、Java 23→8.10、Java 24→8.14が必要。実務では8.14.5に統一するのが安全。Java 25以降は8系では実行不可のため9系への移行が必要。
build.gradleでのJavaバージョン指定と注意点(toolchainとrelease)
Javaバージョン指定の3つの方法
Gradle 8系でJavaバージョンを指定する方法は、推奨順にJava Toolchains、releaseプロパティ、sourceCompatibility/targetCompatibilityの3つがあります。
- Java Toolchains(推奨):コンパイル・テスト・javadoc生成までプロジェクト全体で統一できる
- releaseプロパティ:Java 10以降で利用可能。API制約も含めて指定できる
- sourceCompatibility/targetCompatibility:従来型。現在は非推奨
Toolchainsを使う場合は以下のように設定します。
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
releaseを使う場合は以下のとおりです。
tasks.withType(JavaCompile) {
options.release = 17
}
(出典:Gradle「Building Java Projects」)
sourceCompatibilityとreleaseの違い
sourceCompatibility/targetCompatibilityはライブラリのAPIレベルを制限しません。たとえばtargetCompatibility=8に設定しても、ソースコード内でJava 11のAPIを使ってしまうとコンパイルは通るものの、実行時にエラーになる可能性があります。
一方、releaseプロパティはJavaのAPI制約も含めてコンパイル時にチェックします。新しいJDKのAPIを誤って使うことを防げるため、より安全です。Java 10以降が対象である点のみ注意してください。
Java Toolchainsを使えば、Gradleを実行するJDKとコンパイルに使うJDKを分離しつつ、プロジェクト全体で統一したJavaバージョンを使えます。複数モジュールがあるプロジェクトでも設定が一元化され、管理が容易になります。
ツールチェーンの自動ダウンロードとKotlin併用時の注意
Gradle 8.0以降、ツールチェーンの自動ダウンロードはデフォルトで無効です。必要なJDKがローカルにない場合は、Foojay Resolver Pluginを明示的に設定する必要があります。
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.4.0"
}
ダウンロードされたJDKは~/.gradle/jdksにキャッシュされ再利用されます。
KotlinとJavaを併用する場合、JavaのtargetとKotlinのjvmTargetが一致していないとエラーになります。Gradle 8.0以降、不一致は警告ではなくエラーとして扱われるため、Kotlin側ではkotlin { jvmToolchain(17) }のようにツールチェーンで統一するのが安全です。どうしても一時的に回避したい場合はkotlin.jvm.target.validation.mode = IGNOREを設定できますが、非推奨です。
要点:Javaバージョン指定はToolchainsが最推奨。releaseはAPI制約を含めてチェックできる。sourceCompatibility/targetCompatibilityはAPIレベルを制限しないため注意。Kotlin併用時はjvmTargetの一致が必須。
Gradle 8系でビルドを高速化する設定と、Kotlin併用時の注意点
Configuration Cacheで設定フェーズを高速化
Configuration Cache(構成キャッシュ)は、ビルドの設定フェーズの結果をキャッシュして後続ビルドを高速化する機能です。Gradle 8.1で安定版となり、8系での実運用が推奨されています。(出典:Gradle「Configuration Cache」)
有効化するにはgradle.propertiesに以下を追加します。
org.gradle.configuration-cache=true
問題を警告として扱いたい場合はorg.gradle.configuration-cache.problems=warn、最大問題数を設定する場合はorg.gradle.configuration-cache.max-problems=<数値>を指定します。コマンドラインで一時的に無効化するにはgradle --no-configuration-cache buildを使います。
Gradle 8.0ではConfiguration Cache有効時に初回ビルドからタスクの並列実行が有効になるという改善もありました。
Build Cacheとの違いと併用ポイント
Configuration CacheとBuild Cacheはキャッシュする対象が異なります。Configuration Cacheは設定フェーズ、Build Cacheはタスクの出力(コンパイル結果やテスト結果など)をキャッシュします。両方を有効にすることで、設定と実行の両面で高速化が期待できます。
| 項目 | Configuration Cache | Build Cache |
|---|---|---|
| キャッシュ対象 | 設定フェーズの結果 | タスクの出力 |
| 有効化する設定 | org.gradle.configuration-cache=true | org.gradle.caching=true |
| 主な効果 | 設定時間の短縮 | タスク実行のスキップ |
| Gradle 8系での扱い | 8.1で安定版 | 従来から利用可能 |
Build Cacheはgradle.propertiesにorg.gradle.caching=trueを追加するだけで有効化できます。リモートキャッシュを利用する場合はsettings.gradleでbuildCache { remote(HttpBuildCache) { ... } }のように設定します。
Kotlin併用プロジェクトでの注意点と高速化
KotlinとJavaを併用するプロジェクトでは、JavaのtargetとKotlinのjvmTargetの不一致がGradle 8.0以降エラーになります。たとえばJava側が17、Kotlin側が1.8のままだとビルドが失敗するため、ツールチェーンで統一してください。
kotlin {
jvmToolchain(17)
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
この設定により、コンパイル対象のJavaバージョンがJavaとKotlinで自動的に揃い、不一致によるエラーを防げます。
Kotlin DSLを使っている場合、Gradle 8.0でKotlin DSLのコンパイルが約20%高速化されました。さらにConfiguration Cacheを有効にすると、Kotlin DSLのスクリプトコンパイル結果もキャッシュされるため、2回目以降のビルドが高速になります。ただし、自作タスクや一部のプラグインがConfiguration Cacheに対応していない場合があるため、導入時は警告を確認しながら進めてください。
要点:Configuration Cache(設定フェーズ)とBuild Cache(タスク出力)を組み合わせて高速化する。Kotlin併用時はjvmToolchainでJavaとKotlinのターゲットを統一し、不一致エラーを防ぐ。
まとめ
よくある質問
Q: Gradle 8系の最新バージョンは何ですか?
A: 2026年8月時点のGradle 8系の最新版は8.14.5です。2026年5月7日にリリースされた8.14系のパッチリリースで、Gradle公式も8.14.5へのアップグレードを推奨しています。
Q: Java 21でGradleを実行するにはどのバージョンが必要ですか?
A: Java 21でGradleを実行するにはGradle 8.5以降が必要です。Java 22なら8.8以降、Java 23なら8.10以降、Java 24なら8.14以降がそれぞれ必要です。Java 25以上ではGradle 8系では実行できず、9.1.0以降が必要になります。
Q: Gradle 8系でJava 8を実行環境として使えますか?
A: はい、Gradle 8系はJava 8〜24でGradle自体を実行できます。ただしGradle 9.0.0以降はデーモンの実行にJava 17以上が必須となるため、Java 8〜16でGradleを動かせるのは8系が最後です。
Q: Gradle 8系でJava 8向けのバイトコードを生成するにはどうすればいいですか?
A: Java Toolchainsを使う方法が推奨されます。build.gradleの「java { toolchain { languageVersion = JavaLanguageVersion.of(8) } }」のように指定します。または「options.release = 8」をJavaCompileタスクに設定する方法もあります。
Q: Gradle 8系でConfiguration Cacheを有効にするにはどう設定しますか?
A: gradle.propertiesに「org.gradle.configuration-cache=true」を追加します。8.1以降で安定版となり実運用が推奨されています。なお、Configuration Cacheはビルドの設定フェーズをキャッシュする機能で、タスクの出力をキャッシュするBuild Cacheとは別物です。
