なぜ今フレームワーク選定を語るのか

Javaのサーバーサイド開発は、長らく Struts が事実上の標準でした。その結果、いまも多くの業務システムがStrutsベースで稼働しています。 一方でStrutsは新規開発で選ばれることがほぼなくなり、保守・刷新の対象として語られる存在になりました。

つまり中級者が直面する選定は、大きく2つの文脈に分かれます。ひとつは 新規構築で何を選ぶか、もうひとつは レガシー(Struts)からどこへ、どう移るか です。 本シリーズはこの両方に答えることをゴールとします。

💡 選定ミスのコストは後から効く

フレームワークの選定は、学習コスト・保守コスト・採用(人材確保)・スケール余地に長期にわたって影響します。「とりあえず動く」で選ぶと、数年後に技術的負債として跳ね返ります。だからこそ 評価軸を言語化してから 選ぶことが重要です。

本シリーズの想定読者

本シリーズは 実務経験のある中級者 を想定しています。具体的には次のような方です。

  • Javaでの開発経験があり、MVC・DI・テンプレートエンジンといった用語の説明は不要な方
  • 既存のStrutsシステムの保守や刷新を任されている、あるいはこれから関わる方
  • 新規プロジェクトの技術選定を検討する立場(リード・アーキテクト含む)の方

そのため各フレームワークの「入門的な紹介」は最小限にとどめ、設計思想・移行コスト・実務での判断材料に紙幅を割きます。

本記事における「フルスタック」の定義

「フルスタック」という言葉は文脈で意味が変わります。本シリーズでは、比較が崩れないよう次のように定義を固定します。

本シリーズの対象
サーバーサイドで HTML(ビュー)まで描画する構成。コントローラ+テンプレートエンジンでページを返す、いわゆる MPA(Multi Page Application)。
対象外
フロントを React / Vue 等の SPA で構築し、サーバーは JSON を返す API に徹する構成。これは別テーマ(API設計)として切り分ける。

フルスタック構成では、フレームワーク選定とあわせて テンプレートエンジン の選択も論点になります。代表的なものを整理しておきます。

テンプレート立ち位置備考
Thymeleaf現在のフルスタックJavaの主流素のHTMLとして表示でき、デザイナーとの協業がしやすい。Spring と相性が良い。
JSPレガシー構成で多用Struts や古い構成で広く使われた。新規では非推奨の流れ。
JSF(Facelets)標準仕様ベースJakarta EE のコンポーネント指向。状態を持つUI向き。
その他Mustache / FreeMarker / Qute 等軽量・用途特化。Quarkus は Qute を持つ。

扱うフレームワークとシリーズ構成

本シリーズでは、Struts をレガシーの代表=「なぜ移行が必要か」を示す引き合いとして位置づけ、移行先・新規構築の候補として Spring Boot を本命に、Quarkus / Micronaut / Jakarta EE(JSF)を比較します。全7回の構成は次のとおりです。

テーマ
PART 01はじめに — 前提と「フルスタック」の定義(本記事)
PART 02レガシーの象徴としての Struts — なぜ移行が必要か
PART 03選定の評価軸 — 中級者のための8つの実務軸
PART 04新世代フレームワークの選択肢 — Spring Boot / Quarkus / Micronaut / Jakarta EE
PART 05比較 — Struts vs 新世代(評価軸マトリクス)
PART 06Struts からの移行戦略
PART 07意思決定フローとまとめ

次の章では…

PART 02 では、本シリーズの論点の起点となる Struts を取り上げます。なぜ新規開発で選ばれなくなったのか、EOL(サポート終了)の状況と重大な脆弱性の歴史、そして設計思想の観点から「時代が変わった」ことを整理します。

→ PART 02 — レガシーの象徴としての Struts へ