これまでクラス・継承・例外処理・コレクション・ラムダ式といった、Java言語そのものの基本を紹介してきました。実際に業務でJavaを使う場面では、言語の基本文法に加えて「フレームワーク」の知識が必要になります。ただ、「Spring」「Spring Boot」「Jakarta EE」「Quarkus」など、名前だけは聞くけれど何がどう違うのか分かりにくいのも事実です。
この記事では、Javaの主要なフレームワークを種類ごとに整理し、それぞれの立ち位置と特徴をまとめます。
過去記事
ラムダ式とStream API、Javaで整理してみた
コレクションとジェネリクス、Javaで整理してみた
例外処理の基本、Javaで整理してみた
対象読者
- Javaの基本文法・オブジェクト指向をひとまず理解している方
- 「Spring Boot」「Jakarta EE」などの名前は聞くが、それぞれが何を指すのか、どう違うのか整理したい方
- これから学ぶフレームワークをどれにするか検討している方
各フレームワークの具体的なチュートリアルや実装方法までは扱いません。それぞれの特徴と使い分けの目安を掴むための、俯瞰的な整理記事です。
本記事の情報について
フレームワークのバージョンやシェアの状況は変化が速い分野です。本記事の情報は2026年9月時点のものであり、各項目に確認した時点の出典を付けています。実際に採用を検討する際は、必ず各公式サイトで最新情報を確認してください。
そもそも「フレームワーク」とは何か
「ライブラリ」は、自分のコードから呼び出して使う部品です。一方「フレームワーク」は、アプリケーション全体の構造や処理の流れそのものを提供し、開発者はそのルールに沿って自分のコードを書き込んでいく、という関係になります。「自分が呼ぶ」か「相手(フレームワーク)から呼ばれる」かという、制御の主導権の違いがポイントです。
Webアプリケーション・バックエンド系フレームワーク
Spring / Spring Boot
Springは、Javaのエンタープライズ開発における事実上の標準フレームワークです。DI(依存性注入)コンテナを中心に、Web・データアクセス・セキュリティなど幅広い機能をカバーしています。Spring Bootは、Springの設定を「規約」としてあらかじめ用意し、最小限の設定でアプリケーションを起動できるようにしたものです。
2026年9月時点の最新版はSpring Boot 4.1.0(2026年6月10日リリース)で、Spring Boot 4系はSpring Framework 7・Jakarta EE 11をベースにしています1。Spring Boot 4ではJUnit 4のサポートが廃止されるなど、周辺のエコシステムも新しいバージョンへの移行が進んでいます1。
Jakarta EE(旧 Java EE)
Jakarta EEは、特定のベンダーが作ったフレームワークではなく、エンタープライズJavaのための標準仕様です。Servlet・JPA(データアクセス)・CDI(依存性注入)など、複数の仕様をまとめたもので、各ベンダーがこの仕様に準拠した実装(アプリケーションサーバーなど)を提供します。
もともとは「Java EE」という名前でしたが、SunからOracleに引き継がれた後、2017年にOracleからEclipse Foundationへ管轡が移り、「Jakarta EE」と改称されました。2026年9月時点の最新の安定版はJakarta EE 11で、次のJakarta EE 12は開発中です2。
Quarkus
QuarkusはRed Hatが開発する、クラウドネイティブ環境(特にKubernetes)向けのフレームワークです。GraalVMによるネイティブコンパイルと組み合わせることで、非常に高速な起動時間と低いメモリ消費を実現できる点が特徴です3。
Micronaut
MicronautもQuarkusと同様、クラウドネイティブ・サーバーレス環境を意識したフレームワークです。多くのフレームワークが実行時にリフレクションを使ってDIを解決するのに対し、Micronautはコンパイル時に依存関係を解決する設計になっており、これによって高速な起動を実現しています。AWS Lambdaのようなサーバーレス環境との相性の良さが特徴として挙げられます3。
起動速度・メモリ使用量の傾向
この分野は各フレームワーク側の改善が継続的に進んでいるため、できるだけ新しい計測結果を参照します。2025年10月に公開された検証では、Java 25・GraalVM 25環境で、Spring Boot 3.5.6・Micronaut 4.5.4・Quarkus 3.28.1を比較しており、次のような結果が報告されています4。
| 項目 | Spring Boot | Quarkus | Micronaut |
|---|---|---|---|
| 起動時間(JVM上) | 1.909秒 | 1.154秒 | 0.656秒 |
| 起動時間(Nativeイメージ) | 0.104秒 | 0.049秒 | 0.050秒 |
| メモリ使用量(JVM上、ヒープ確保量) | 86.0MB | 46.1MB | 50.3MB |
| メモリ使用量(Nativeイメージ) | 59.8MB | 8.4MB | 19.1MB |
JVM上で動かす場合でも、Quarkus・MicronautはSpring Boot(3.5.6)より起動時間・メモリ使用量の両方で優位にあり、GraalVMによるネイティブイメージ化まで行うと、いずれのフレームワークも起動時間が1秒未満(0.05〜0.1秒程度)まで短縮されます4。
なお、この検証はSpring Boot 3.5.6が対象で、2025年11月にリリースされたSpring Boot 4系(本記事の最新版として紹介したバージョン)を含めた比較ではありません。Quarkus自身も2026年3月時点のブログで、チューニングを施したSpring Bootとの比較において起動時間・メモリ使用量・スループットのいずれも数倍の差がついたと報告しており5、この領域の性能改善は継続して進んでいる状況がうかがえます。ただしこちらはQuarkus自身が公表したベンチマークで、具体的なバージョン番号が本文中に明記されておらず、比較対象も「チューニング済みのSpring Boot」である点には注意してください。フレームワーク間の性能差は年単位で縮まったり広がったりするため、採用検討時は必ず各公式サイトで直近のベンチマークを確認することをおすすめします。
選び方の目安
フレームワーク比較記事では、プロジェクトの性質に応じて次のような選び方の指針が示されています6。
| プロジェクトの性質 | 向いているフレームワークの傾向 |
|---|---|
| 複雑な業務ロジック、既存システムとの連携が多い | Spring Boot(エコシステムとドキュメントの充実度が強み) |
| スタートアップ・PoCなど、スピード重視の小規模開発 | Quarkus または Micronaut |
| サーバーレス・Kubernetes上でのクラウドネイティブ開発 | Quarkus または Micronaut |
データアクセス系フレームワーク
Hibernate / JPA
JPA(Java Persistence API)は、JavaのオブジェクトとRDBのテーブルを対応させる(O/Rマッピング)ための標準仕様です。Hibernateは、そのJPAの実装の中でもっとも広く使われているライブラリです。Spring Bootから使う場合は、これらをさらに使いやすくラップした「Spring Data JPA」という形で触れることが多くなります。
MyBatis
SQLをJava側で組み立てるのではなく、SQL自体を直接書きたい場合の選択肢として、MyBatisというSQLマッパー系のライブラリもよく使われます。JPA/Hibernateが「オブジェクト中心」の発想であるのに対し、MyBatisは「SQL中心」の発想に近いという違いがあります。
テスト系フレームワーク
JUnit
JUnitは、Javaのユニットテストにおける事実上の標準フレームワークです。現在主に使われているのはJUnit 5(Jupiter)系です。前述の通り、Spring Boot 4ではJUnit 4のサポート自体が廃止されており1、新しくJavaのテストを書く場合はJUnit 5を前提にするのが基本になっています。
Mockito
テスト対象のクラスが依存する他のクラスを「モック(偽物)」に置き換えてテストするためのライブラリがMockitoです。JUnitと組み合わせて使われることが多く、データベースや外部APIへの依存を切り離した単体テストを書きやすくします。
フレームワークではないが、合わせて知っておきたいツール
Maven / Gradle
Maven・Gradleは、依存ライブラリの管理やビルド(コンパイル・パッケージング)を行うためのツールです。厳密には「フレームワーク」ではありませんが、ほぼすべてのJavaプロジェクトで使われているため、フレームワークの選定と合わせて知っておく必要があります。
まとめ
- 「フレームワーク」は、アプリケーションの構造や処理の流れそのものを提供し、開発者側のコードがそれに沿って呼ばれる、という関係にある
- Webバックエンド系では、エコシステムの広さで選ぶならSpring Boot、起動速度やクラウドネイティブ環境を重視するならQuarkus・Micronautが主な選択肢
- Jakarta EEは特定の実装ではなく、複数の仕様をまとめた標準仕様であり、各ベンダーの実装がこれに準拠する
- データアクセス層ではHibernate/JPA(オブジェクト中心)とMyBatis(SQL中心)という異なる発想の選択肢がある
- テストではJUnitが事実上の標準、モックを使う場合はMockitoと組み合わせるのが一般的
- Maven・Gradleはフレームワークではないが、実質必須のビルドツールである
まずは、圧倒的なシェアと情報量を持つSpring Bootから触れてみて、必要に応じて起動速度やクラウドネイティブ性を重視するQuarkus・Micronautを検討する、という順番が学習コストの観点からも現実的だと思います。
脚注
参考資料
- Spring Boot 4とは?最新バージョン4.1の変更点・新機能とSpring Boot 3との違いを解説【2026年最新】 — 株式会社一創
- Jakarta EEリリース | The Eclipse Foundation
- Jakarta EE Platform 12 (Under Development) | The Eclipse Foundation
- Javaフレームワーク徹底比較:Spring Boot・Quarkus・Micronaut、あなたのプロジェクトに最適なのは? — DevWorks
- Java 25 Startup Performance for Spring Boot, Quarkus, and Micronaut — Gillius's Programming
- Quarkus has great performance – and we have new evidence — Quarkus公式ブログ
-
Spring Boot 4とは?最新バージョン4.1の変更点・新機能とSpring Boot 3との違いを解説【2026年最新】 — 株式会社一創。Spring Boot 4.0は2025年11月20日、4.1.0は2026年6月10日リリース。Spring Framework 7・Jakarta EE 11をベースとし、JUnit 4のサポートが廃止された。 ↩ ↩2 ↩3
-
Jakarta EEリリース | The Eclipse Foundation、Jakarta EE Platform 12 (Under Development) | The Eclipse Foundation。2026年9月時点でJakarta EE 11が最新の安定版、Jakarta EE 12は開発中。 ↩
-
Javaフレームワーク徹底比較:Spring Boot・Quarkus・Micronaut、あなたのプロジェクトに最適なのは? — DevWorks ↩ ↩2
-
Java 25 Startup Performance for Spring Boot, Quarkus, and Micronaut — Gillius's Programming(2025年10月)。Spring Boot 3.5.6・Micronaut 4.5.4・Quarkus 3.28.1、Java 25/Oracle GraalVM 25、macOS(M2 Pro)上での計測。アプリケーションを4回起動・停止し、最後の3回の平均値を採用。 ↩ ↩2
-
Quarkus has great performance – and we have new evidence — Quarkus公式ブログ(2026年3月2日公開) ↩
-
Javaフレームワーク徹底比較:Spring Boot・Quarkus・Micronaut、あなたのプロジェクトに最適なのは? — DevWorks ↩