Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
生徒
「Spring Bootの最新バージョンって、Javaのどのバージョンと一緒に使えるんですか?」
先生
「良いところに気がつきましたね。Spring Bootのバージョンごとに、対応しているJavaのバージョンが決まっているんですよ。」
生徒
「へぇ〜!じゃあSpring Boot 3.5とか3.4は、Java 21とか使えるんですか?」
先生
「もちろん、それぞれに対応表があるので、一緒に確認していきましょう!」
1. Spring BootとJavaのバージョン互換性を知る重要性
Spring BootとJavaの組み合わせが合っていないと、ビルドは通っても本番で動かない、あるいは起動すらできない――という事故につながります。特に新しいSpring Bootでは対応するJavaが絞られるため、「どのBootに、どのJavaが合うか」を最初に押さえることが安定運用の近道です。
実務ではLTS(長期サポート)であるJava 21/17を使う場面が多く、互換性を把握しておけば、開発・テスト・本番の環境差で起こるトラブルを未然に防げます。例えば、ローカルをJava 21でコンパイルし、本番のJREがJava 17のままだと、次のような起動エラーが出ることがあります。
java.lang.UnsupportedClassVersionError: ... has been compiled by a more recent version of the Java Runtime
(Unsupported class file major version 65)
初心者向けの簡単チェック(小さなサンプル)
# 1) 実行中JDKのバージョンを確認
java -version
# 2) プロジェクトの設定ファイルで指定バージョンを確認
# - Gradle: build.gradle / gradle.properties
# - Maven : pom.xml
# 3) 記事内の「対応表(後述)」と見比べて合っているかを確認
ポイントは、〈実行するJRE〉と〈ビルドに使うJDK〉、そして〈Spring Bootの対応範囲〉の三つをそろえること。たったこれだけで、よくある「起動できない」「意味不明なエラーが出る」を大幅に減らせます。
2. Spring Boot 3.5/3.4/3.3 と Java 21/17 の対応表
まずは「どのSpring Bootに、どのJavaが対応しているか」を一覧で確認しましょう。表の見方はかんたんです。左があなたのSpring Bootの系(3.5・3.4・3.3など)、右が一緒に使えるJavaの系(21・17)です。自分の組み合わせが表に含まれていれば基本OK、含まれていなければ要見直しです。
| Spring Bootバージョン | 対応するJavaバージョン |
|---|---|
| 3.5.x | Java 21 / Java 17 |
| 3.4.x | Java 21 / Java 17 |
| 3.3.x | Java 21 / Java 17 |
| 3.2.x | Java 17(Java 21は一部非対応) |
| 3.1.x | Java 17 |
使い方のコツ(例):
「Boot 3.5 × Java 21」はOK/「Boot 3.4 × Java 17」もOK。いっぽう「Boot 3.2 × Java 21」は非対応の箇所が残るため避けるのが安全です。迷ったら、表で交差する組み合わせかどうかを最初に確認しましょう。
初心者向けミニサンプル(自分の環境を3ステップで照合)
# 1) Spring Bootの版をメモ(例: 3.4.2)
# build.gradle / pom.xml の指定値をチェック
# 2) Javaの版を確認
java -version # 例: "21" または "17"
# 3) 上の対応表で「行(Boot)」×「列(Java)」が合っていればOK
# 合わなければ、Bootを上げる or Javaを合わせる
ポイントは「表に載っている組み合わせを選ぶ」こと。これだけで起動エラーや不可解な挙動を避けやすくなります。次の章の詳細を見る前に、まずはあなたの現在値を表に当てて確認してみてください。
3. Javaバージョンごとの特徴と選び方
Spring Bootに対応しているJavaバージョンの中でも、Java 21とJava 17には違いがあります。
- Java 21:最新のLTS。レコードパターン、シーケンシャルなスレッド管理の改善などが含まれる。
- Java 17:従来のLTS。すでに多くの企業で実績あり。移行時の安定性重視ならこちら。
初めてSpring BootとJavaを扱うなら、現場の要件やライブラリ対応状況に応じて、Java 17から始めるのも安心です。すでにJava 21対応のプロジェクトやライブラリを使う場合は、Spring Boot 3.3以上を選ぶと良いでしょう。
4. GradleやMavenでのJavaバージョン指定方法
実際にSpring BootのプロジェクトでJavaのバージョンを指定するには、ビルドツールで設定します。
たとえば、GradleでJava 21を使うには以下のように設定します。
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
Mavenの場合はこちら:
<properties>
<java.version>21</java.version>
</properties>
こうした記述があるかどうかを確認することで、プロジェクトが使用するJavaバージョンを明確にできます。
5. Spring Bootのバージョン確認方法と変更方法
既存のプロジェクトでSpring Bootのバージョンを確認したい場合、build.gradleやpom.xmlファイル内のバージョン指定を見てみましょう。
plugins {
id 'org.springframework.boot' version '3.5.0'
}
バージョンを変更する際は、他の依存関係がそのバージョンに対応しているかも一緒に確認することが大切です。特にセキュリティ関連のライブラリや、テンプレートエンジン(Thymeleafなど)は注意が必要です。
6. Spring BootとJavaバージョンの注意点まとめ
- Spring Boot 3.5・3.4・3.3 は Java 21 / Java 17 に対応
- Java 21を使うにはSpring Boot 3.3以降が推奨
- プロジェクトの
build.gradleまたはpom.xmlでバージョン指定を確認 - Java 21を使うなら、ライブラリの対応状況にも注意
Spring BootのバージョンとJavaバージョンの互換性を意識しておくことで、よりスムーズにアプリケーション開発を進めることができます。
まとめ
本記事では、Spring Bootの各バージョン(3.5、3.4、3.3)がどのJavaバージョン(Java 21、Java 17)に対応しているのかを詳しく解説しました。特にSpring Boot 3.3以降であれば、Java 21という最新のLTSバージョンにも正式対応しており、今後の開発や運用において非常に重要なポイントになります。
Javaのバージョンを誤って選択すると、ビルドエラーやランタイムでの例外が発生する可能性があります。したがって、Spring BootとJavaの対応表を事前に確認し、開発環境に適したバージョンを選ぶことが、開発効率の向上やバグの削減につながります。
さらに、GradleやMavenなどのビルドツールを使って、JavaバージョンやSpring Bootのバージョンを正しく設定する方法も理解できたことで、実際のプロジェクトに応用できる力も身につきました。
また、Java 21とJava 17のどちらを使うべきかという選択も、LTSであることやライブラリ対応の状況などを踏まえた判断が必要です。現場の要件や将来のアップデートも視野に入れて選ぶことが求められます。
例えば、以下のようにGradleでJava 17に設定するコードを使えば、互換性のある環境を簡単に整えることができます。
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
逆に、Java 21を活用して最新機能を取り入れたい場合は、Spring Bootのバージョンも必ず3.3以降を選びましょう。以下はJava 21を指定した場合のMaven設定の一例です。
<properties>
<java.version>21</java.version>
</properties>
これらの情報を正しく理解しておけば、Spring Bootのアップグレード時やJavaバージョンの移行作業もスムーズに行えます。開発の品質とスピードを両立するためにも、互換性情報を定期的に確認する習慣を持つと良いでしょう。
生徒
「Spring Boot 3.5とか3.4がJava 21とちゃんと対応してるってわかって安心しました!」
先生
「そうですね。プロジェクトによってはJava 17を使い続ける選択もあるので、適材適所で選ぶことが大切ですよ。」
生徒
「Javaバージョンの指定って、GradleやMavenで簡単にできるんですね。今まであんまり意識してませんでした。」
先生
「ビルド設定はプロジェクトの土台ですから、しっかり理解しておくと開発全体が安定します。Spring BootとJavaの対応関係は、これからも重要なチェックポイントになりますよ。」
生徒
「これから新しくSpring Bootのプロジェクトを作るときは、バージョンの組み合わせにもちゃんと気をつけます!」
先生
「すばらしい心がけです。今後もJavaとSpringの関係を意識して、よりよい開発ができるように頑張っていきましょう。」