Webフレームワーク

Java Webフレームワークの種類

JavaのWebフレームワークはたくさんあり、それぞれ特徴があります。

Jakarta EE

Jakarta EE(旧 Java EE)は、Java SEにWeb開発に必要なサーバー関係のライブラリなどを追加したJava標準仕様のフレームワークです。Servlet、JSP、EJBなどWebシステムの開発に必要な機能がまとまっています。

Apache Struts

Apache Struts(アパッチ・ストラッツ)は、ServletJSPMVCなどに対応した古くからシェアのある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 BootWeb開発に必要な設定があらかじめ定義されいるため、比較的簡単にWebアプリを構築できます。

Webサーバ構築が不要

Spring BootにはWebアプリケーション開発の基本となるSpring MVCがベースになっています。またTomcatがインストールされているため、面倒なWebサーバ構築も不要です。

Springをはじめる基礎知識

MVCとは

SpringではMVCアーキテクチャを採用しています。MVCについては、Webの基礎「9. MVCとルーティング」を参照してください。

JavaBeans

Javaで扱う1つ1つのデータを、コーヒー豆に例えてBeanといいます。 JavaBeansBeanの集合体で、再利用可能な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 email
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(アスペクト指向プログラミング)

DIAOPについては別の章で説明します。

演習

問題1

つぎのうち、JavaのWebフレームワークはどれですか?

  1. Bootstrap
  2. Servlet
  3. Spring Boot
  4. Tomcat

問題2

JavaBeansの説明で正しいのはどれですか?

  1. コーヒーの種類を示す列挙型(Enum)
  2. Javaプログラムのコードを静的に解析し、潜在的なエラーを検出するツール
  3. グラフィカルなユーザーインターフェース(GUI)コンポーネントを表すクラスの集合
  4. 再利用可能なクラスとカプセル化する、コーディング規約に従ったJavaコンポーネント

Spring超入門