ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Java フレームワークの全体像
Java の Web / アプリケーションフレームワークは大きく 「DI コンテナ + Web 層 + データアクセス」の三層を提供します。代表的なものを比較します:
| 名前 | 初版 | 特徴 | 主な用途 | 現在の立ち位置 |
|---|---|---|---|---|
| Spring / Spring Boot | 2003 / 2014 | DI + AOP + Web + Data + Security の総合 | 業務システム全般 | デファクト |
| Spring MVC | 2003 | Servlet ベース MVC | 従来の Web | Spring Boot 配下で現役 |
| Struts 1 | 2000 | 初期の MVC フレームワーク | レガシー保守 | EOL (2013) |
| Struts 2 | 2006 | WebWork ベース | レガシー保守 | 脆弱性多発で減少 |
| JSF (Jakarta Faces) | 2004 | コンポーネント指向 | Jakarta EE 標準 | 限定的 |
| Vaadin | 2009 | Java で書いてサーバーで描画 | 業務 UI | ニッチで根強い |
| Play Framework | 2007 | Scala/Java、非同期 | API・SPA バックエンド | 下火 |
| Quarkus | 2019 | GraalVM AOT、起動 0.05 秒 | K8s・Serverless | 急成長 |
| Micronaut | 2018 | コンパイル時 DI | マイクロサービス | 急成長 |
| Helidon | 2018 | Oracle 製、SE / MP の 2 系統 | クラウド | Oracle 寄り |
Spring Boot — デファクト選択肢
Spring Boot は 「設定より規約 (convention over configuration)」 に基づき、わずか数行で本番稼働可能な Web アプリを起動できます。
// pom.xml の依存
// spring-boot-starter-web
// spring-boot-starter-data-jpa
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final UserRepository repo;
@GetMapping("/{id}")
public User get(@PathVariable Long id) {
return repo.findById(id).orElseThrow();
}
@PostMapping
public User create(@RequestBody @Valid User user) {
return repo.save(user);
}
}
Spring Boot のメリット:
- 巨大エコシステム: Security / Batch / Cloud / WebFlux / Data など全部入り
- 豊富な情報: 日本語書籍・Qiita・公式ドキュメント
- 本番で枯れている: 大規模システムで実績多数
- spring-boot-starter-*: 依存関係を 1 行で追加
デメリット:
- 起動が遅い (数秒〜十数秒) → コンテナ・サーバーレスに不向き
- メモリ消費が大きい (200MB〜)
- リフレクション多用で GraalVM ネイティブ化が難しかった (Spring Boot 3 で改善)
Quarkus — クラウドネイティブの新星
Red Hat が開発する 「Kubernetes ネイティブな Java スタック」。GraalVM で AOT (Ahead-Of-Time) コンパイルすれば起動 0.05 秒・メモリ 30MB 級の小さなバイナリになります。
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from Quarkus";
}
}
// 開発: ./mvnw quarkus:dev (ホットリロード)
// ネイティブビルド: ./mvnw package -Pnative
// → target/app-runner (実行ファイル)
Micronaut — コンパイル時 DI
Spring と同じ DI を提供しつつ、リフレクションを使わずコンパイル時に注入コードを生成。起動高速・GraalVM 親和。
@Controller("/api")
public class UserController {
private final UserService service;
public UserController(UserService service) {
this.service = service;
}
@Get("/users/{id}")
public User get(Long id) {
return service.findById(id);
}
}
選定ガイド
| シナリオ | 推奨 | 理由 |
|---|---|---|
| 業務システム / 社内 Web | Spring Boot | 情報量・実績・採用しやすさ |
| マイクロサービス / K8s | Quarkus または Micronaut | 起動速度・低メモリ |
| サーバーレス (AWS Lambda) | Quarkus + GraalVM | コールドスタート最小化 |
| レガシー保守 | Struts → Spring 移行検討 | Struts は脆弱性・保守難 |
| Oracle DB 中心の業務 | Helidon または Spring Boot | Oracle 公式サポート |
| シングルページ UI を Java で書きたい | Vaadin | Java だけで完結 |
起動速度・メモリ比較 (Hello World)
| フレームワーク | 起動 (JVM) | 起動 (Native) | RSS メモリ |
|---|---|---|---|
| Spring Boot 3 | 2〜5 秒 | 0.1 秒 | 180 MB |
| Quarkus | 1 秒 | 0.02 秒 | 30 MB |
| Micronaut | 1 秒 | 0.03 秒 | 40 MB |
| Helidon SE | 1 秒 | 0.03 秒 | 35 MB |
FAQ
Q: Struts は今でも使われている?
A: 保守案件には残っていますが、新規採用はほぼゼロ。Struts 2 は度重なる脆弱性 (CVE) で評判が悪く、Spring Boot への移行が定番です。
Q: Spring Boot と Quarkus を両方学ぶ意味は?
A: 業務システムは Spring、マイクロサービスは Quarkus、と用途ごとに使い分けるのが現代の主流です。コンセプトは似ているので相互学習しやすい。
Q: JSF はもう死んだ?
A: Jakarta EE では現役ですが日本での採用は限定的。新規なら Spring MVC か Vaadin の方が情報が多いです。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?