13. Javaに関する知識 I

シラバス: 

1. 科目の概要

 Webアプリケーション構築で利用されることの多いJava言語について、基本的な仕組み、プログラミング文法、オブジェクト指向によるプログラム設計の概念、各種のアプリケーション開発を解説する。さらにWebアプリケーション開発やデータベースの利用についても述べる。

2. 習得ポイント

 本科目の学習により習得することが期待されるポイントは以下の通り。

3. IT知識体系との対応関係

「13. Javaに関する知識Ⅰ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_13.pdf]

<IT知識体系上の関連部分>

4. OSSモデルカリキュラム固有の知識

OSSモデルカリキュラム固有の知識として、Java言語の特徴、記述、開発手法、およびWebやデータベースを扱う手法がある。Webに関してはサーバ側のサービスを実現するServletやJSPを、データベースに関してはドライバであるJDBCを内容として含む。

(網掛け部分はIT知識体系で学習できる知識を示し、それ以外はOSSモデルカリキュラム固有の知識を示している)

I-13-1. Java言語の歴史、特徴、思想と背景

Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメリットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつわる様々なトピックを紹介する。

【学習の要点】

* Javaはサン・マイクロシステムズ社が1996年に発表した言語であり、現在ではオープンソースとして開発が続けられている。

* Javaには、オブジェクト指向、ポインタの廃止、ガベージコレクションを装備等の特徴がある。

* Javaは仮想マシンと中間言語を用い、Write Once、 Run Anywhere を実現している。

* 現在Javaは非常に広い分野で扱われており、技術者としては必須ともいえる言語である。

図I-13-1. Javaプログラムの実行環境

【解説】

1) Javaの歴史

Javaはサン・マイクロシステムズ社によって開発され、1996年に正式発表された。

初期はWebブラウザ上で動く、アプレットという動的なWebページを実現するアプリケーションとして使われていたが、このアプレットとしての役割は Flash などに取って代わられた。しかしその後、Java SEといった基本的な開発環境に加え、Java EEといったサーバサイドのアプリケーション開発に特化した開発環境や、Java MEといった組み込み機器用の開発環境がリリースされた。そして今では、主にサーバサイドの Web アプリケーションや、携帯電話等に搭載されている組み込み機器技術など、非常に幅広い分野で利用されている。

2) Javaの特徴

* 仮想マシンにより環境を問わず実行できるため、環境に依存しないアプリケーションが作れる。

* オブジェクト指向言語であり、コードの生産性が高い。

* ガベージコレクションを備えており、メモリ管理の手間が非常に少ない。

* ポインタを廃止したことにより、不正なメモリ参照が起きなくなった。

* 多重継承を禁止しているため、メソッド呼び出しの際のあいまいさが排除された。

* 静的な型づけを採用しているため、変数に型自体からして違う値などが入って起こるバグを最小限に抑えられる。

* コンパイルしたファイルは中間言語に変換され、Java仮想マシン上で実行される。

3) Javaの思想と背景

* Javaの思想を表す言葉で、『Write Once, Run Anywhere』という言葉がある。これは、プログラムを一度作ってしまえばそのプログラムがどこの環境でも動くということを意味する。

* 大人数でプログラムを作る際、オブジェクト指向であることにより各自が作ったソースを統合するのが簡単になる。

* メモリ管理は非常に複雑でバグの原因やパフォーマンスの低下につながっていたが、ガベージコレクションによってそれらの問題が軽減される。

* ポインタを廃止したことで、ポインタ起因のバグが出なくなった。

* オブジェクトの扱いのあいまいさや複雑さを防ぐため、多重継承を禁止した。

* バグの原因の多くは変数に意図しない値が入ることだが、それを防ぐために静的な型づけが採用された。

I-13-2. Javaを用いたプログラミング方法

Javaプログラムの例を示し、Javaプログラムの記述からコンパイル、実行までの手順を紹介する。さらに様々なJavaのエディションや実行環境の整備など、Javaを用いたプログラミングを実施する際に留意すべき点について述べる。

【学習の要点】

* Javaの開発環境を整えるには、通常SunのサイトからJava SE Development Kit (JDK)をダウンロードする。これは無償で利用できる。

* Javaのソースコードをコンパイルすると、中間言語で記述されたクラスファイルが作成され、それを仮想マシン上で実行することができる。

図I-13-2. Javaプログラミングの流れ

【解説】

1) Javaプログラミング環境の整え方

SunのJavaのページ、http://java.sun.com/にアクセスして、JDK (Java SE Development Kit) をダウンロードする。特に理由がなければ、最新版をダウンロードするとよい。通常のJavaアプリケーションを開発したい場合はJava SE SDKを、Web用のJavaアプリケーションを開発したい場合はJava EE SDKを、モバイル用のJavaアプリケーションを開発したい場合はSun Java Wireless Toolkitを、ダウンロードする。通常はJava SE SDKをダウンロードすればよい。

2) Javaプログラムの記述の仕方

* プログラムは、テキストエディタで記述する。

* プログラム中でコメントとして扱われる部分は次の2通りがある。

- 「//」から行末までの間

- 「/*」から「*/」までの間

* プログラム中の各命令は、一般に「;」で終わる。

* ファイルを保存するときは、拡張子を「.java」とする。

3) Javaプログラムのコンパイルの仕方

Linuxの場合、以下のような手順でコンパイルをする。

* ターミナルを起動しソースファイルが保存されているディレクトリに移動する。

* javac <ソースファイル名>と入力してコンパイルを実行する。ソースファイル名には、.java まで含める。

* ソースファイルが保存されているディレクトリに、 .class という拡張子が付いたファイルが作成されていることを確認する。

4) Javaプログラムの実行の仕方

Linuxの場合、以下の手順でコンパイルしたファイルを実行する。

* ターミナルを起動し、クラスファイルが保存されているディレクトリに移動する。しかし、コンパイルをした直後で既にラスファイルが保存されているディレクトリにいるなら移動する必要はない。

* java <クラス名>と入力してJVMを起動する。例えば、クラスファイルが Sample.class という名前だったら、java Sample と入力する。最後の .class は含めないことに注意する。

I-13-3. Java言語の基本的な構造、型、演算子、制御構文

Javaの基本的なしくみ、特徴、構造を説明する。基本的なプログラム要素として、識別子、変数、型、クラス、演算子、制御構文について解説する。またアプレットやサーブレットといった形態、クラスライブラリの利用についても言及する。

【学習の要点】

* Javaには、識別子、変数、型、クラス、演算子、制御構文が基本的な仕組みとして存在する。

* JavaプログラムにはWebブラウザ上で動作するアプレットやWebサーバー上で動作するサーブレットといった形態がある。

* Javaにはクラスライブラリが用意されており、それを利用することでプログラムの生産性の向上が見込める。

図I-13-3. 演算子と変数の種類

【解説】

1) 識別子とは

Javaでいう識別子とは、変数などを人間が読みやすい英数字などの名前で識別するものである。void、classなどJavaの予約語は識別子として用いることはできない。

2) Javaの型

Javaは静的な型づけを採用しているため、変数を用いる際には必ず型の宣言が必要になる。

3) 演算子について

プログラムは主に値を計算することによって様々な機能を果たす。値をどのように計算するのかを命令するためのものが演算子である。

4) 制御構文

Javaには制御構文が用意されている。これらの制御構文にデータを渡すと、そのデータの値によってプログラムの挙動が変わるようにすることができる。主な制御構文とその働きは以下のとおりである。

* if ~ else if ~ else:ある条件に当てはまった場合と、当てはまらなかった場合の挙動を制御する。

* switch:複数の条件とそれに対する挙動を制御できる。

* for:指示した回数だけ挙動を繰り返す。

* while:指示した条件に当てはまっている間だけ挙動を繰り返す。

* do ~ while:まず一度は挙動が実行され、その後指示した条件に当てはまっている間だけ挙動を繰り返す。

5) Javaプログラムの種類

Javaプログラムの実行形態にはコマンドラインで実行されるコンソールプログラム、Javaアプレット、Javaサーブレットといった種類がある。

Javaアプレットはネットワーク経由でダウンロードされ、クライアント(Webブラウザ)で実行されるJavaプログラムのことである。現在ではAdobe Flashなどの普及によりあまり利用されなくなった。

JavaサーブレットはWebサーバ上で実行されるJavaプログラムである。PerlやRubyなどスクリプトで処理されるCGIと比べると、様々なオーバーヘッドが無いために動作が速いという特徴がある。

6) クラスライブラリ

Javaのプログラムをを書くときに、すべてのクラスをいちから定義しなくとも、よく使われるクラスに関しては、クラスライブラリによってすでに用意されているものを利用すればよい。クラスライブラリを利用することによりコードの生産性を高めることができるうえ、十分にテストされたライブラリを利用すればバグを減らすことも可能となる。

I-13-4. Javaによるオブジェクト指向プログラミング

Javaの大きな特徴であるオブジェクト指向プログラミングについて、その基本的な特徴とメリットを説明する。クラス、オブジェクト、メソッド、コンストラクタなどオブジェクト指向の様々な概念を紹介し、オブジェクト指向による代表的なプログラミング手法を示す。

【学習の要点】

* オブジェクト指向プログラミングとは、データと関数を同時に扱うことによってコードの独立性を強くし、疎結合なプログラムを設計するプログラミング技法である。

* クラスはフィールドとメソッドによって成り立っている、ひな形の概念である。

* オブジェクトとはモノの概念であるクラスに実際の値を与えて作られる、クラスを実体化したものである。

* コンストラクタはオブジェクトを初期化する際に利用する。

図I-13-4. オブジェクトを使用したプログラミング例

【解説】

1) オブジェクト指向プログラミングとは

オブジェクト指向プログラミングとは、データと関数を同時に扱うことによってコードの独立性を強くし、疎結合なプログラムを設計するためのプログラミング技法である。オブジェクト指向により、コードの変更がしやすい柔軟なプログラムを作ることができる。

2) クラスとは

クラスとは、対象とするものに付随させる変数や関数(処理のまとまり)を定義したものである。クラスの変数をフィールド、クラスの関数をメ^ソッドと呼ぶ。また、フィールドやメソッドを、そのクラスのメンバと呼ぶ。例えばPersonというクラスを定義したい場合は以下のように記述する。

例)

class Person {

フィールドの宣言

メソッドの宣言と処理の記述

}

3) オブジェクト(インスタンス)とは

クラスの性質や機能を持った実体のことをオブジェクトという。

オブジェクトを利用するためには、次の処理を行う。

* 定義したクラスを型とする変数を宣言する。

* 定義したクラスのオブジェクトを生成し、宣言した変数にそのオブジェクトを代入する。

例)

Person person1;

person1 = new Person();

オブジェクトは、一つのクラスから複数作ることができる。クラスという型からオブジェクトという実体が複数生成されると考えれば分かりやすい。

4) コンストラクタとは

コンストラクタとは、オブジェクトの生成時に自動実行される処理を指す。Javaでは、クラス定義の中で、クラス名と同じ名前で処理を定義することで、その処理がコンストラクタとして扱われる。

I-13-5. Javaによるアプリケーション開発、各種リソースの利用

Javaによるアプリケーション開発の基本的な手順を解説する。既存のドキュメントへアクセスする方法、必要なライブラリの探し方、オブジェクト指向を活用したJavaプログラミング開発技法などを紹介する。

【学習の要点】

* 標準APIのリファレンスはSunの公式ページを参照する。

* リファレンスはクラスライブラリを配布しているサイトから入手、もしくはそのサイト上のWebページを検索することで見つける。

* 開発技法として、デザインパターンを調べる方法をマスターする。

* Javaの標準API、クラスライブラリはJDKがインストールされている環境ならどこでも利用することができる。

図I-13-5. Java SEのAPIドキュメント(http://java.sun.com/javase/ja/6/docs/ja/api/index.html)

【解説】

1) Javaのリソース、リファレンス

Javaのリソースおよびリファレンスが載っているサイトには、以下のようなものがある。

* Java Developer Connection

http://sdc.sun.co.jp/java/

Javaテクノロジーについての技術的な情報を掲載したサイト。

* Java Platform, Standard Edition (Java SE) 6 RC

http://java.sun.com/javase/ja/6/

Java SE 6 についてのドキュメントが掲載されているサイト。

* The Jakarta Project

http://jakarta.apache.org/ (英語)

主にWeb関連のJavaのオープンソースプロジェクトがまとめられているサイト。

* SourceForge.net

http://sourceforge.net/

様々なオープンソースプロジェクトがまとめられているサイト。

* The Codehaus

http://codehaus.org/

Javaのオープンソースプロジェクトがまとめられているサイト。

2) Javadoc

Javaのライブラリには、必ずリファレンスが用意されている。これを調べることで、そのライブラリの利用方法などが分かるようになっている。新しいライブラリを手に入れたら、まずそのリファレンスを調べてみるとよい。これらのリファレンスは、javadocと呼ばれるコマンドで作成されている。

3) デザインパターン

JavaやC++ などのオブジェクト指向型プログラミングが利用されるにつれ、そのプログラムの設計方法のノウハウが蓄積されてきた。それらのノウハウをまとめたものを総称してデザインパターンという。

重要なノウハウとして、再利用しやすいクラスを設計するための工夫がある。クラスの再利用性が高ければ、再利用性の高さが生産性の向上に直結するからである。それらのデザインパターンを正しく活用することによって、プログラミングの初学者でも再利用性の高いコードを作ることができる。

I-13-6. Eclipseを用いたJavaプログラミング

統合開発環境Eclipseを用いたJavaプログラミングを概説する。Eclipseの利用方法と活用のメリット、Eclipseのプラグインによる拡張など、Eclipseを活用したJavaアプリケーション開発に役立つ様々な話題についても触れる。

【学習の要点】

* Eclipseは統合開発環境であり、ソースの記述、ソースをコンパイル、プログラムのテスト実行、プログラムのデバッグが一つのアプリケーション上で行える。非常に効率よくプログラム開発ができる。

* Eclipseにはコード補完や自動コンパイルなど、開発効率を上げる機能が付いている。

* Eclipseのプラグインによって、さらに便利にEclipseが使えるようカスタマイズすることが可能である。

図I-13-6. Eclipseのスクリーンショット

【解説】

1) Eclipseの特徴

EclipseはJavaで作られた統合開発環境(IDE)である。その主な特徴は以下のとおりである。

* オープンソース

* プラグインによりJavaに限らずさまざまな言語の開発が可能

* テストツールなど、豊富な各種プラグインが無料で利用できる

* グラフィカルなデバッグツールが利用でき、初心者でもデバッグがしやすい

* コード編集支援機能を搭載した、プログラム開発に特化したエディタが使用できる

2) EclipseによるJavaプログラミングの流れ

* メニューバーのファイルから新規プロジェクトを選択し、プロジェクト名を入力して新しいプロジェクトを作る。

* パッケージエクスプローラーからプロジェクトの下にあるsrcフォルダを右クリックして、新規→クラスを選択、クラス名を入力して新しいクラスを作る。

* テキストエディタにソースを入力するためのエディタが開くので、そこにソースを記述する。

* ソースを書き終わったら保存をし、ウインドウ上部にある緑の丸に白い三角形が描かれた実行ボタンを押すと、自動的にソースをコンパイルし、コンパイルされたプログラムの実行が行われる。

3) Eclipseのプラグイン

Eclipseは世界中の開発者が作った豊富なプラグインによって、機能をカスタマイズすることができる。プラグインを利用することによって、Javaに限らずC言語やC++ 、Ruby、PHPの開発もできるようになる。ここでは、代表的なプラグインを紹介する。

* WTP(Web Tools Platform)

Webアプリケーション開発に有用なプラグイン。

* Pleiades

Eclipseプラグインを日本語化するためのプラグイン。

* FindBugs

バグが存在する可能性のあるコードを指摘するプラグイン。

* Visual Editor

GUIアプリケーション開発に有用なプラグイン。

I-13-7. Javaによるネットワークプログラミング

Javaによるネットワークプログラミングの概要、特徴を説明する。ネットワークプログラミングの基礎であるソケットを用いたセッション管理について、Javaを例題として説明する。またJavaのRMI (Remote Method Invocation)を活用した分散プログラミングも解説する。

【学習の要点】

* ネットワークプログラミングとは、複数のサーバーやクライアント間で情報をやり取りする働きを持つアプリケーションを作ることである。

* Javaによるネットワークプログラミングの特徴は、豊富なライブラリにより比較的短いコードでネットワークアプリケーションを作ることができる。

* ソケットを用いたセッション管理とは、クライアントとサーバーの間の接続を開始から終了まで確立するものである。

図I-13-7. ソケットによる通信

【解説】

1) ソケットを用いたセッション管理

ソケットは、ホスト名またはIPアドレスと、TCPポート番号とを利用して、リモートホストに接続するための仕組みである。

接続が確立されてから切断されるまでの間を、セッションという。TCP/IPの通信においては、サーバとクライアント間の通信が、他のクライアントとの通信と混じらないように、セッション管理の機構が必須である。

2) Javaによるネットワークプログラミング

URL、IPアドレスなどのネットワークの基礎知識は、Javaを用いてネットワークプログラムを書くときに必要になる知識である。これらを扱うクラスライブラリが、java.netパッケージである。ソケット関連のクラスは以下のようなものがある。

* ServerSocket

サーバーソケットのクラス。ポート番号を指定して生成すると、そのポートに対してサーバーソケットが作られる。

* Socket

ソケット接続のクラス。サーバではServerSocketクラスのaccept()メソッドにより待ち受けとして生成される。クライアントではホストとポート番号とを指定して生成する。

* InputStream

入力ストリームのクラス。SocketクラスのgetInputStream()メソッドにより生成される。

* InputStreamReader

入力ストリームからの読み取りのクラス。InputStreamクラスのオブジェクトを指定して生成する。

* BufferedReader

読み取りバッファのクラス。InputStreamReaderクラスのオブジェクトを指定して生成する。

* OutputStream

出力ストリームのクラス。SocketクラスのgetOutputStream()メソッドにより生成される。

* OutputStreamWriter

出力ストリームへの書き込みのクラス。OutputStreamクラスのオブジェクトを指定して生成する。

* BufferedWriter

書き込みバッファのクラス。OutputStreamWriterクラスのオブジェクトを指定して生成する。

3) RMIによるネットワークプログラミング

Javaを使ってネットワークプログラミングをするには、RMI(Remote Method Invocation)を用いる方法もある。RMIを使うことによって、トランスポート層を意識しなくてもネットワークプログラミングができるようになった。

I-13-8. ServletとJSPによるWebアプリケーション開発

ServletとJSPによるWebアプリケーション開発の手順と内容について解説する。また開発プラットフォームとしてのTomcatやJBossといった代表的なOSSの実装を紹介する。

【学習の要点】

* Servlet、JSPはJavaで作られたWebアプリケーションである。

* TomcatやJBossなどはWebコンテナと呼ばれる、Webアプリケーションの実行環境である。

図I-13-8. ServletとJSPのサンプルコード

【解説】

1) ServletとJSP

ServletもJSPも、共にJavaで作られたユーザーからのテキスト入力やボタン入力に応じてWebページを生成して返すWebアプリケーションの一種である。その特徴は、次のとおりである。

* Servlet

Javaにより動的なページを返すプログラム。PerlやPythonで記述されるCGIと比べると、サーブレットはメモリに常駐し待機しているため動作が高速という優位性を持つ。

その動作の概要を以下に示す。

- クライアントからページのリクエストを受ける。

- Webページがサーブレットによって動的に生成される。

- 生成されたWebページがリクエストに対するレスポンスとして返される。

* JSP

JSPはHTMLの中にプログラムが書かれている。クライアントがJSPページをリクエストすると、WebコンテナがJSPからServletのコードを呼び出して実行する。明示的なコンパイルは不要。

その動作の概要を以下に示す。

- クライアントからJSPページのリクエストを受ける。

- JSPページの中のプログラムから、Servletを呼び出す。

- JSPページをコンパイルする。

- ユーザーにコンパイルしたページを返す。

2) 開発プラットフォーム

代表的なオープンソースの開発プラットフォームとして、以下のようなものがある。

* Apache Tomcat

http://tomcat.apache.org/

サーブレットの実行環境であるWebコンテナ。

* JBoss Application Server

http://labs.jboss.com/jbossas/

クライアントとバックエンドの間にあるアプリケーションサーバ。

* Jetty

http://jetty.mortbay.org/

Webサーバーでありサーブレットコンテナでもあるソフト。

I-13-9. JDBCによるデータベースアクセス方法

Webアプリケーションではほぼ必須となるデータベースとの連携を実現する方式として、JDBCを用いたJavaアプリケーションとデータベースの接続方法を説明する。その基本的な概念、プログラミング方法、トランザクション処理などについて解説する。

【学習の要点】

* JDBCとは、Javaからデータベースを操作する時に使うAPIである。

* JDBCでは、クエリとしてSQL文を渡し、データベースからその結果が返ってくる。

* データベースを利用するには、JDBCドライバを用意してから接続し、用件が終わったら接続を閉じる。

図I-13-9. JDBCによるデータベースアクセスの概要

【解説】

1) JDBCとは

JDBCとは、Javaプログラムとデータベースを接続するためのAPIである。JDBCを使えば、SQL文をリレーショナルデータベースに送信することができる。

しかし、現実には各データベースによって必要とされるプロトコルは異なっている。これを解消するために、データベースごとにデータベースとJDBC API間の差異を吸収するJDBCドライバが必要になる。

2) JDBCドライバの種類

JDBCドライバにはその実装方法ごとに、大きく分けて4種類ある。

* JDBC-ODBCブリッジ・ドライバ

* ネイティブ・ブリッジ・ドライバ

* ネット・プロトコル・ドライバ

* ネイティブ・プロトコル・ドライバ

3) データベースを扱う手順

* DriverManagerクラスを利用し、getConnection()メソッドにデータベース接続情報を指定して、データベースに接続する。Connectionクラスのオブジェクトが生成される。

* ConnectionオブジェクトのcreateStatement()メソッドで、SQL文を扱うStatementクラスのオブジェクトを生成する。

* StatementオブジェクトのexecuteQuery()メソッドにSQL文を指定して、SQLを発行する。結果セットがResultSetクラスのオブジェクトに返される。

* Statementオブジェクト、Connectionオブジェクトをclose()メソッドでクローズする。

4) トランザクション処理について

トランザクションを適用することで、トランザクションの開始から終了までのすべてのデータ変更操作を、すべて反映(コミット)するか、すべて取り消し(ロールバック)することができ、トランザクション前後でのデータ整合性を確保できる。

JDBCでトランザクション管理をする場合は以下のような方法を用いる。

* トランザクションの開始

JDBCではデフォルトで自動コミットとなっているので、トランザクションを明示的に扱うには、ConnectionオブジェクトのsetAutoCommit()メソッドに「false」を指定して、自動コミットを解除する。トランザクションの開始は自動で行われる。

* コミット

Connectionオブジェクトのcommit()メソッドを実行する。

* ロールバック

Connectionオブジェクトのrollback()メソッドを実行する。

I-13-10. MVCアーキテクチャの基本と特徴

Javaアプリケーションを例題として、Webアプリケーションの基本アーキテクチャとして想定されるMVC (Model-View-Controller)モデルの内容とメリットについて解説する。それぞれを構成する要素技術を示し、モデルとの対応関係について説明する。

【学習の要点】

* MVCモデルとは、プログラムをモデル(Model)、ビュー(View)、コントローラー(Controller)という3つに分けて設計する手法のことをいう。

* Webアプリケーションを作る際にも、MVCモデルが適用できる。

* MVCモデルを用いることで、作業の分業が明確になり、開発効率の向上が望める。

図I-13-10. JavaにおけるMVCモデルの概要

【解説】

1) MVCモデルとは

MVCモデルとは、プログラムをモデル(Model)、ビュー(View)、コントローラー(Controller)という3つに分けて設計する手法である。

2) Model、View、Controller

* Model (EJB)

Modelはアプリケーションの根幹をなす部分である。アプリケーションの主たる処理内容とデータを表す。特定の環境に依存しない部分のため、EJBの担当箇所とする設計が適切である。

* View (JSP)

Viewはアプリケーションのユーザーインタフェースを定義する部分である。Webアプリケーションを例にとるならば、フォームやボタンなどの配置を決めてデザインを作る作業が、このViewに当たる。ViewはHTMLを生成しクライアントに送るもののため、JSP担当の設計が適切である。

* Controller (Servlet)

ControllerはViewとModelの間を取り持つ部分である。Viewのフォームなどから入力された値を受け取り、それをModelに送る。クライアントからの入力はJSPでも担当することができるが、Controllerにもロジックが必要なので、サーブレットに担当させる設計が適切である。

3) MVCモデルのメリット

このような手法を採用するメリットは、以下のようなものがある。

* デザイン作り、アプリケーションの根幹、表示とアプリケーションの根幹の間を取り持つ部分といったように開発作業の分業が明確にすることで、開発効率が上がる。

* Model、View、Controllerのそれぞれの独立性が高いので、仕様変更に対しても柔軟に対応することができる。

* ユーザーインタフェース部分を変更するのが容易である。

4) MVCモデルで作られたプログラムの動作の流れ

* クライアントからのリクエストをControllerが受け付ける。

* Controllerが該当するModelに処理を依頼する。もし必要があればViewにも表示の書き換えを指示する。

* Modelが処理結果をViewに渡す。

* Viewは出力(表示)用のデータを整える。

* クライアントにレスポンスを返す。