カテゴリ: Spring 更新日: 2026/03/13

Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?

Spring Boot × Javaバージョン対応表:3.5/3.4/3.3 と Java 21/17の互換性
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のバージョン互換性を知る重要性

「1. Spring BootとJavaのバージョン互換性を知る重要性」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. Spring BootとJavaのバージョン互換性を知る重要性
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 の対応表

2. Spring Boot 3.5/3.4/3.3 と Java 21/17 の対応表
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バージョンごとの特徴と選び方

3. Javaバージョンごとの特徴と選び方
3. Javaバージョンごとの特徴と選び方

同じSpring Bootでも、使うJavaで「書きやすさ」「性能」「周辺ライブラリの対応」が変わります。まずはJava 21とJava 17の性格をざっくり把握し、あなたの現場に合わせて選びましょう。迷ったら、下の「かんたんチェックリスト」で当てはめると決めやすくなります。

  • Java 21:LTS。仮想スレッド(virtual threads)で軽量な並行処理、switchのパターンマッチングなど最新言語機能が安定利用可。新規開発や性能・保守性を伸ばしたい場合に有力。
  • Java 17:LTS。企業での実績が厚く、ミドルウェアやプラグインの対応情報が豊富。既存資産の移行・安定稼働を最優先するならこちらが無難。

初心者向けミニサンプル:Java 21の書き方と、Java 17でも動く書き方


// 【Java 21】switchのパターンマッチング例(21でコンパイル)
static String kind(Object o) {
    return switch (o) {
        case Integer i -> "整数: " + i;
        case String s  -> "文字列: " + s;
        case null      -> "null";
        default        -> "その他";
    };
}

// 【Java 17】同じ意図をif/elseで表現(17でもコンパイル)
static String kind(Object o) {
    if (o == null) return "null";
    if (o instanceof Integer i) return "整数: " + i;
    if (o instanceof String s)  return "文字列: " + s;
    return "その他";
}

かんたんチェックリスト

  • 新規開発で最新言語機能を使いたい/高負荷の並行処理を軽くしたい → Java 21
  • 既存システムや社内標準がJava 17に固定/利用ライブラリが17中心 → Java 17
  • Spring Bootは3.3以上でJava 21を想定、3.1〜3.2系ならまずは17で安定運用

要するに、新規×攻め=21、既存×安心=17という考え方でOK。チーム方針と依存ライブラリの対応状況を見て、無理なく選択しましょう。

4. GradleやMavenでのJavaバージョン指定方法

「4. GradleやMavenでのJavaバージョン指定方法」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. GradleやMavenでのJavaバージョン指定方法
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のバージョン確認方法と変更方法

5. Spring Bootのバージョン確認方法と変更方法
5. Spring Bootのバージョン確認方法と変更方法

既存のプロジェクトでSpring Bootのバージョンを確認したい場合、build.gradlepom.xmlファイル内のバージョン指定を見てみましょう。


plugins {
    id 'org.springframework.boot' version '3.5.0'
}

バージョンを変更する際は、他の依存関係がそのバージョンに対応しているかも一緒に確認することが大切です。特にセキュリティ関連のライブラリや、テンプレートエンジン(Thymeleafなど)は注意が必要です。

6. Spring BootとJavaバージョンの注意点まとめ

6. Spring BootとJavaバージョンの注意点まとめ
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バージョンの互換性を意識しておくことで、よりスムーズにアプリケーション開発を進めることができます。

7. 実務で遭遇する「起動エラー」とその解決策

「7. 実務で遭遇する「起動エラー」とその解決策」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. 実務で遭遇する「起動エラー」とその解決策
7. 実務で遭遇する「起動エラー」とその解決策

互換性表の通りに設定しても、いざ実行するとエラーで動かないことがあります。最も多い原因は、コンパイルしたJavaのバージョン(JDK)と、実際に動かす場所(サーバーや実行用JRE)の不一致です。以下のエラーメッセージが出たら、まずはバージョン設定を疑いましょう。

よくある致命的なエラー:UnsupportedClassVersionError

java.lang.UnsupportedClassVersionError: ... has been compiled by a more recent version of the Java Runtime (class file version 65.0)

この「version 65.0」という数字はJava 21を指しています。「Java 21でビルドしたのに、実行環境がJava 17以下のままである」という矛盾が起きている証拠です。この場合、実行環境のJavaを上げるか、ビルド設定を17に落とす必要があります。

初心者向けチェックリスト:エラーを即座に消す3ステップ


# 1) サーバー(実行環境)のJava版を確認
java -version 

# 2) ビルドツール(Gradle/Maven)の targetCompatibility を1に合わせる

# 3) 再ビルドして反映。これだけで「意味不明なエラー」の8割は解決します。

ポイントは、「Spring Boot 3.3以上をフルに活かすなら、実行環境もJava 21(または17)で揃える」こと。ここを徹底するだけで、環境構築による無駄なタイムロスを劇的に減らせます。

8. Spring Boot 3.3以降 × Java 21 で得られる「現場の恩恵」

8. Spring Boot 3.3以降 × Java 21 で得られる「現場の恩恵」
8. Spring Boot 3.3以降 × Java 21 で得られる「現場の恩恵」

互換性があるから仕方なくバージョンを合わせるのではなく、あえて「最新の組み合わせ」を選ぶメリットも知っておきましょう。特にSpring Boot 3.3以降とJava 21の組み合わせは、**「仮想スレッド(Virtual Threads)」**という強力な武器が使えます。

これまでのJavaでは、アクセスが増えるとサーバーのスレッドが枯渇し、動作が重くなるのが悩みでした。しかしJava 21からは、軽量なスレッドを数百万規模で扱えるようになり、設定一つでパフォーマンスを劇的に向上させることが可能です。

最新環境で仮想スレッドを有効化する魔法の一行(application.properties)


# Spring Boot 3.2以上 + Java 21の環境なら、これだけで爆速化を狙えます
spring.threads.virtual.enabled=true

この一行を追加するだけで、大量のリクエストを捌けるようになります。「どのJavaでも動く」ではなく「Java 21だからこそ実現できる速さ」を追求することで、現場での開発力が格段にレベルアップします。

9. 開発環境(IDE)でJavaバージョンを正しく認識させるコツ

9. 開発環境(IDE)でJavaバージョンを正しく認識させるコツ
9. 開発環境(IDE)でJavaバージョンを正しく認識させるコツ

build.gradlepom.xml を書き換えても、IntelliJやEclipseなどのツール側が古いJavaを覚えていると、エディタ上に赤い波線が出てしまいます。設定を書き換えた後は、必ず「ツール側のプロジェクト設定」も同期させましょう。

IDE別の再同期ショートカットと確認ポイント

  • IntelliJ IDEA:Ctrl + Shift + O(またはGradle/Mavenパネルのリロードボタン)を押して最新設定を読み込む。
  • Eclipse:プロジェクトを右クリック > Maven/GradleUpdate Project を実行。
  • 共通:プロジェクト設定(Project Structure)で、SDKが指定のバージョン(21や17)になっているか目視で確認。

設定の「その先」を体感しませんか?

バージョンの整合性はあくまでスタートラインです。実際の現場では、ここから「安全なデータベース設計」や「保守性の高いコードの書き方」が求められます。

スタースクールでは、こうした「現場で役立つ実践スキル」を職業訓練講師がリアルタイムでレクチャーするセミナーを開催中。初心者から実務レベルへ、最短距離で駆け上がりたい方をサポートします。

技術の進化は早いですが、土台となる互換性をしっかり押さえておけば怖くありません。まずは今回の対応表を参考に、あなたの開発環境を最新の状態にアップデートしてみてください!

まとめ

「まとめ」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

まとめ
まとめ

本記事では、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の関係を意識して、よりよい開発ができるように頑張っていきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Spring Boot 3.5はJava 21と完全に互換性がありますか?

はい、Spring Boot 3.5はJava 21に正式対応しており、Java 17とも互換性があります。両方のバージョンで使用することが可能です。

Spring Boot 3.4とJava 17を組み合わせて使うのは問題ないですか?

問題ありません。Spring Boot 3.4はJava 17に対応しており、安定して動作します。

Spring Bootのバージョンによって使えるJavaのバージョンは決まっていますか?

はい、Spring Bootにはそれぞれ対応しているJavaのバージョンがあり、バージョン間の互換性を意識して使うことが重要です。
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「Is」と「Equals」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「Or」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「And」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Distinct」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleafのth:checkedの使い方!チェックボックスON/OFFを動的に制御する方法
No.3
Java&Spring記事人気No3
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
No.4
Java&Spring記事人気No4
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.5
Java&Spring記事人気No5
Thymeleaf
Thymeleafのth:blockの使い方を完全ガイド!初心者でもわかるテンプレートブロック管理
No.6
Java&Spring記事人気No6
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.7
Java&Spring記事人気No7
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方