Webフレームワーク
Java Webフレームワークの種類
JavaのWebフレームワークはたくさんあり、それぞれ特徴があります。
Jakarta EE
Jakarta EE(旧 Java EE)は、Java SEにWeb開発に必要なサーバー関係のライブラリなどを追加したJava標準仕様のフレームワークです。Servlet、JSP、EJBなどWebシステムの開発に必要な機能がまとまっています。
Apache Struts
Apache Struts(アパッチ・ストラッツ)は、Servlet、JSP、MVCなどに対応した古くからシェアのあるWebフレームワークです。現在はセキュリティ脆弱性の問題で、新規のWeb開発では選択肢にあがりませんが、既存システムでいまだに動作し続けています。
JSF
JSF(JavaServer Faces) は、Java EE(Java Platform Enterprise Edition) に含まれるMVC対応のWebフレームワークです。XML方式のViewコンポーネントで作成するのが特徴です。
Spring Framework
Spring Frameworkは、Java Webフレームワークの1つで、単にことSpringと呼ばれたりします。高機能でシェアが高く情報が多いため、ビジネスでのグループ開発に向いています。

- シェアが高い(ビジネス向き)
- 拡張性が高い(高機能)
- 保守性 / 再利用性が高い
Springの各種プロジェクト
Springの機能はとてもたくさんありますが、代表的な機能は次のとおりです。
プロジェクト | 特徴 |
---|---|
Spring MVC | MVC(Model / View / Controller)フレームワークでWebAPI対応 |
Spring Cloud | 分散環境下でのアプリ開発に対応。「Cloud Config」「Clound Bus」「Cloud Connectors」など |
Spring WebFlux | リアクティブプログラミングでノンブロッキング処理に対応 |
Spring Security | 認証機能や脆弱性に対応 |
Spring Data | RDBやNoSQLなどのデータストア機能を持つ |
Spring Batch | バッチアプリ開発に必要な機能 |
Spring Session | Webアプリで状態を保持するセッション機能 |
Spring Integration | 複雑なシステム連携をサポートする処理に対応 |
Spring IO Platform | サードパティのライブラリの依存管理 |
Spring Boot | Spring Frameworkの最小限の構成 |
Spring Boot
最低限の構成
Spring Frameworkはとても高機能ですが、逆に複雑で学習コストが高いのがデメリットです。Spring BootはWeb開発に必要な設定があらかじめ定義されいるため、比較的簡単にWebアプリを構築できます。
Webサーバ構築が不要
Spring BootにはWebアプリケーション開発の基本となるSpring MVCがベースになっています。またTomcatがインストールされているため、面倒なWebサーバ構築も不要です。
Springをはじめる基礎知識
MVCとは
SpringではMVCアーキテクチャを採用しています。MVCについては、Webの基礎「9. MVCとルーティング」を参照してください。
JavaBeans
Javaで扱う1つ1つのデータを、コーヒー豆に例えてBeanといいます。 JavaBeansはBeanの集合体で、再利用可能なJavaコンポーネントクラスです。
JavaBeansのルール
JavaBeansでは3つのルールがあり、Webアプリケーションのデータ操作で利用します。
- プロパティのアクセサーとしての「getter/setter」
- 引数のないコンストラクタ
- 「java.io.Serializable」を実装
JavaBeanの例
import java.io.Serializable
//シリアライズの実装
public class User implements Serializable {
//引数のないコンストラクタ
User();
private long id;
private String name;
private String email;
private String password;
private boolean isActive;
//getter
public String getName() {
return name;
}
//setter
public void setName(String name) {
this.name = name;
}
...
}
POJO
POJO(Plain Old Java Object) は、クラス継承や依存関係がない、シンプルなJavaオブジェクトを指します。
EJBとPOJO
EJB (Enterprise JavaBeans) は、エンタープライズ向けJava EEの一部で、コンポーネントを組み合わせてWebアプリケーション開発し、実行できるようにする仕組みです。 POJOは複雑なEJBをシンプルにしようとする考え方や設計です。
Entity
Entity(エンティティ)は、データをプログラムで操作できるように落とし込んだ状態のことです。特にクラスファイル化したものをEntityクラスといいます。
データベース上のデータ
データベースにユーザデータがあったとします。
id | name | |
---|---|---|
1 | Alex | [email protected] |
2 | Bob | [email protected] |
3 | Chris | [email protected] |
プログラム上のデータ
このデータをプログラムで操作するデータのイメージです。
{
id: 1
name: "Alex"
email: "[email protected]"
},
{
id: 2
name: "Bob"
email: "[email protected]"
},
{
id: 3
name: "Chris"
email: "[email protected]"
}
Entityクラス
データを1つずつ操作できるようにEntityとした、Userクラスです。
class User {
private int id;
private String name;
private String email;
}
DIとAOP
Springは、大きく2つが大きな特徴です。
- DI(依存性注入)
- AOP(アスペクト指向プログラミング)
DIとAOPについては別の章で説明します。
演習
問題1
つぎのうち、JavaのWebフレームワークはどれですか?
- Bootstrap
- Servlet
- Spring Boot
- Tomcat
問題2
JavaBeansの説明で正しいのはどれですか?
- コーヒーの種類を示す列挙型(Enum)
- Javaプログラムのコードを静的に解析し、潜在的なエラーを検出するツール
- グラフィカルなユーザーインターフェース(GUI)コンポーネントを表すクラスの集合
- 再利用可能なクラスとカプセル化する、コーディング規約に従ったJavaコンポーネント