Java2 Enterprise Editionの基礎知識 |
|
J2EEを特徴づけるもう1つのキャッチコピーとして「MVCモデル」というものがあります。MVCモデルという言葉自体は、J2EEで初めて登場したものではなく、Smalltalkというオブジェクト指向言語でのGUI設計に用いられた概念です。MVCとは、
- Model
- View
- Controller
の頭文字をとったものです。Webベースのアプリケーションも、WebブラウザというGUIを持ったアプリケーションと考えられるので、このモデルを適用することができます。では、それぞれについて説明しましょう。
![]() |
MVCモデルに従ってWebアプリケーションを構築したモデル例 |
●Model
モデルは、システムの中でビジネスロジックを担当する、いわばシステムの本体部分にあたります。モデルは入出力や表示といった処理を行うことはできません。J2EEでは、この部分をEJBで実装する(ちなみに、EJBでは表示に関する処理は仕様上できない)ことになっています。
●View
ビューは、表示、入出力といった部分を担当します。J2EEでは、この部分はServletやJSPで実装します。一般的なHTML表示に関してはJSP、そのほかの特殊なデータ(バイナリデータ)を出力する場合はServletを用いるのが標準的な使い方です。
●Controller
コントローラは、ViewとModelを制御します。自分自身では表示を行ったり、ロジックの実行は行わず、Viewからの入力に応じて、必要なロジックの実行をModelに依頼し、その結果表示をViewに依頼します。J2EEでは、ControllerはWeb層とEJB層の2つに分かれています。まず、Web層でViewからの入力を受け付けて、Webに依存しない形式に変換します。そしてその情報をEJB層に送信します。EJB層では、送信された内容に応じて、必要なロジックが実装されたModel(EJB)に処理を依頼します。処理結果は再びEJB層からWeb層へフィードバックされ、Web層がView(JSP)に表示処理を依頼し、クライアントへ結果が送信されます。
■MVCモデルの利点
このモデルに従うことで、開発者にとってはどのようなメリットがあるのでしょうか?まず、機能ごとの分離が明確になることによって、それぞれの独立性が確保されます。開発においては分業がしやすくなり、各機能の専門家は自分の得意分野の実装に集中することが可能となります。また、コンポーネント間の依存性が最小限に抑えられるため、ほかの部分の変更による影響を受けにくい実装にすることができます。こうすることによって、コンポーネントの再利用性が高まるわけです。また、ほかのコンポーネントの変更が原因で、複数の担当者が同一のソースに対してメンテナンスを行う、というような事態を避けることもでき、保守性も確保される、といったような多くのメリットがあります。
![]() |
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
||
|
||
![]() |
Java Agile 記事ランキング
- AIにJavaと開発環境について聞いてみた――AIコーディング時代に必要なプログラミング脳を強化しよう
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- COBOL/メインフレームのJava/マイクロサービス化サービスをデロイト トーマツが発表 どう実現しているのか
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- Springにおける「RestController」と「Controller」の違いとは
- Spring BootアプリをAWSにデプロイするには?
- 「Spring」「Spring Boot」「Spring Framework」、それぞれの特徴とは
- Oracle、「Java 23」を提供開始 機能強化と変更点をおさらい