候補の全体像

フルスタック(サーバーサイドでビューまで描画)構成での主な候補は次の4つです。結論を先に言えば、フルスタックの本命は Spring Boot + Thymeleaf です。残りは特定の要件が強い場合の選択肢になります。

Spring Boot
事実上のデファクト。Spring MVC + Thymeleaf でフルスタックの標準構成。エコシステム・情報量・人材すべてが厚い。
Quarkus
クラウドネイティブ志向。GraalVM ネイティブイメージで高速起動・低メモリ。テンプレートは Qute。
Micronaut
DI をコンパイル時に解決し、リフレクションを避ける設計。軽量・低メモリ・高速起動。
Jakarta EE / JSF
標準仕様ベース。JSF はコンポーネント指向のフルスタックUI。アプリケーションサーバー前提の文化。

Spring Boot — フルスタックの本命

Spring Boot は、Spring Framework に自動構成(auto-configuration)と組み込みサーバーを加え、「設定より規約」で素早く立ち上げられるようにしたものです。 フルスタックでは Spring MVC + Thymeleaf の組み合わせが定番で、コントローラがモデルを準備し、Thymeleaf テンプレートが HTML を描画します。

Java — Spring MVC コントローラ
@Controller
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {  // コンストラクタインジェクション
        this.userService = userService;
    }

    @GetMapping("/users")
    public String list(Model model) {
        model.addAttribute("users", userService.findAll());
        return "users/list";   // → templates/users/list.html (Thymeleaf)
    }
}

ポイントは、DI が言語レベルで自然に組み込まれていること、アノテーション中心で XML 設定が要らないこと。Struts の struts.xml によるアクション定義と比べると、設定量と見通しの差は明確です。

💡 現況

Spring Boot は世代を重ね、エンタープライズJavaのマイクロサービスの過半で採用されているとされます。LTS・セキュリティ更新・日本語情報・求人すべてが厚く、「迷ったらこれ」が成立する数少ない選択肢です。

Quarkus — クラウドネイティブ志向

Quarkus は「Kubernetes ネイティブ」を掲げ、ビルド時に多くの処理を済ませることで 起動の速さとメモリ消費の小ささ を実現します。GraalVM によるネイティブイメージ化と相性が良く、サーバーレスやコンテナ密度を上げたい場面で輝きます。

フルスタックでは Qute というテンプレートエンジンを備えますが、フルスタックMPAの実績・情報量は Spring Boot に及びません。Quarkus の主戦場は API・マイクロサービスです。

Micronaut — 軽量・低メモリ

Micronaut は DI をコンパイル時に解決 し、実行時リフレクションを極力使わない設計が特徴です。これにより起動が速く、メモリのベースラインが小さくなります。 思想は Quarkus と近く、リソース制約の強い環境やサーバーレスで選ばれます。フルスタックMPAというより、軽量サービス指向の選択肢です。

Jakarta EE / JSF — 標準仕様ベース

Jakarta EE(旧 Java EE)は、特定ベンダーに縛られない 標準仕様 の集合です。フルスタックUIとしては JSF(Jakarta Faces) がコンポーネント指向で状態を持つUIを提供します。 アプリケーションサーバー(WildFly / Payara 等)上で動かす文化が根強く、既存のEE資産がある組織では選択肢になります。

⚠️ 「新世代」の中での温度差

Quarkus・Micronaut・Jakarta EE はいずれも有力ですが、フルスタックMPAの本命は依然 Spring Boot です。特別な性能要件や既存資産がない限り、フルスタック新規開発で迷う必要はありません。Quarkus / Micronaut は「軽量・高速起動が要件として明確なとき」に検討します。

次の章では…

PART 05 で、PART 03 の8軸を使って Struts vs 新世代 をマトリクスで比較します。Struts を基準点に置くことで、新世代が何を解決したのかを可視化します。

→ PART 05 — 比較:Struts vs 新世代へ