第1回 Java Pet Storeで、J2EEを体験する(1)
丸山不二夫
稚内北星学園大学学長
(http://www.wakhok.ac.jp/)
2001/4/6
今回の内容
|
Webとデータベースを結ぶ技術としてのJ2EE この講座で、重点的に学ぶこと J2EEサーバとdeploytool Java Pet Storeデモを動かそう Web-DBアプリケーションとしてのJava Pet Store デモ J2EEサーバのほかの機能 |
この講座は、サーバ・サイドでのJava利用の代表的な手法の1つであるJ2EEの基礎を、できるだけ基本的なところから説明することを目的としています。この「J2EEの初等的な説明」にとっての一番の問題は、J2EEが非常に多くの要素技術からなる巨大なシステムだということです。以下に、J2EEを構成する基本的な技術の一覧を示します(これらの技術にバージョン番号が付いているのは、J2EE自身が変化を続けていることを示しています。このリストは、この原稿を書いている2001年3月時点でのJ2EE j2sdkee-1.3betaの構成を反映しています)。
|
さらに、個々の構成要素の細部の説明に入り込めば込むほど、J2EE全体の姿が見えにくくなることもあります。また、これらの技術の説明の総和がJ2EEの説明になるかといえば、そうではないという問題もあります。
「J2EE基礎」と名付けたこの講座では、J2EEの細部ではなく、J2EEがどのようなシステムであるかの具体的なイメージを、J2EEが利用される典型的なシナリオのもとで持ってもらうことを目標にしたいと思います。
Webとデータベースを結ぶ技術としてのJ2EE |
J2EEの全体像について語るには、実は幾つか方法があります。Model-View-Controller(MVC)というデザイン・パターンの応用としてJ2EEを語ることもできますし、Component/Container技法といった切り口からJ2EEを解説することもできます。また、多階層(マルチ・ティア)のネットワーク・アプリケーションとしてそれを説明することもよく行われています。
ただ、この基礎講座では、「J2EEは、Webとデータベースを結ぶ、サーバ・サイドのミドルウェア技術である」という観点から、J2EEの基礎を説明していきたいと思います。つまり、
J2EE = Webブラウザ + J2EEサーバ + データベース |
というわけです。また、図1のように示せば、J2EEがサーバ・サイドのミドルウェア技術であることもよく分かります。
図1 J2EEは、WebアプリケーションにおいてWebブラウザとデータベースを結びつけるミドルウェア技術として位置付けることができる |
こうした特徴づけはいささかの単純化を含んでいるのですが、J2EEという技術の基本的な狙いはよく押さえています。また、なによりもJ2EEに興味を持つ読者の多くの実践的な関心は、Webとデータベースの結合に置かれているはずです。こうしたJ2EEの定式化は、先に挙げた3ティア(階層)モデルやMVCの図式にも適合します。
図2 J2EEはMVCモデルに適合する |
この講座で、重点的に学ぶこと |
この基礎講座で重点的に学ぶべきものを、次のように設定しようと思います。
(1) | Webブラウザとサーバ・サイドをつなぐ技術としてのJSP/Servlet |
(2) | クライアント、あるいは、ミドルウェアサーバとデータベースをつなぐ技術としての JDBC |
(3) | 上記2つの技術を仲立ちする、J2EEの中核技術としてのEJB |
図3 この基礎講座で学ぶ3つの技術 |
この基礎講座では、J2EEをこの3つの技術を中心に学びます。そのほかの技術は、これら3つの技術との関連で副次的に取り上げることになると思います。このように、全体像の把握を優先して幾つかの中心的な技術に絞って、J2EEの説明をしたいと考えています。基本から初等的に説明することを目指しています。
J2EEサーバとdeploytool |
学ぶということに関しては、実はあと1つ、大事な領域があります。それは、先の要素技術のリストには登場してこなかった、狭い意味でJ2EE固有の技術です。これらには、Sunが提供しているJ2EEサーバの立ち上げ方とか、deploytoolの使い方といったJ2EE関連ツールの話題が含まれます。今回はむしろ、J2EEのデモ・サンプルとして提供されている、「Java Pet Store」 の立ち上げを通じて、これらの基本的な扱いを学びます。
Java Pet Storeデモを動かそう |
これからの目標は、Sunが提供する「Java Pet Store」デモが動く環境を構築して、J2EEを体験することです。Java Pet Storeは、ある意味ではJ2EEのシンボルです。「JPS(Java Pet Store」のことをこのように略しますが、Java Server Page のJSPと間違えないでください) を知らないでJ2EEのお勉強はできません。それに、見かけは、まったくToy Programのように見えるのですが、そうではありません。JPSは非常にキチンとしたつくりになっています。J2EEを一通り勉強したら、ぜひ、JPSのソースコードをしっかり読んで勉強してもらいたいと考えています。
Web-DBアプリケーションとしての |
まず、「Java Pet Store」の最初の画面1を見てみましょう。
画面1 Java Pet StoreのTOPページ |
基本的な確認なのですが、「JPS」は独立したアプリケーションとしてではなく、Webブラウザ上で動作するWebアプリケーションです。この最初の画面1で、例えば猫の画像をクリックすると、次のような画面2に変わります。
画面2 TOPページの猫の画面をクリックすると猫の種類が表示される |
この画面2で「Persian」のリンクをクリックすると、次の画面3に変わります。
画面3 さらに詳しい猫の種類が表示される |
さらに、「Adult Female Persian」を選んだときの画面4を示します。
画面4 選択した猫の写真が表示される |
こうした動作だけを見ていると、その背後にJ2EEサーバがあることは分かりません。同じ構成のWebページをJ2EEサーバなしで作ることは簡単です。例えば、画面2に対応したHTMLを作ることは難しくありません。ただ、こうしたHTMLでのページ作成には、こうした用途ではちょっとした問題があります。このページは、「Java Pet Store」で、2種類の猫を扱っていることを表しているのですが、もしもこのペット屋で新しい種類の猫を扱うようになれば、ページを作り変えなければなりません。小規模のWebサイトでしたら、こうした更新作業は、当然のことのように思われるかもしれません。しかし、大規模で本格的なeコマースのシステムをインターネット上で構築しようと思ったら、こうした手工業的なやり方では対応できなくなります。
「Java Pet Store」では、JSP(JavaServer Page)を使って、基本的なデータベースのデータからこれらのページを自動的に生成しています。ですから、データベースのデータを更新しさえすればページは自動的に更新されます。こうしたことを可能にするのがJ2EEの力なのです。
次の画面5は、「Java Pet Store」上部のテキスト・フィールドに“dog”という検索文字列を入力したときのものです。こうした働きも、データベースでの検索とJSPでのページ自動生成の能力が可能にしたものです。
画面5 “dog”で検索すると、さまざまな犬の種類が写真付きで表示される |
J2EEサーバのほかの機能 |
画面6〜8は、先の画面2で買いたいペットを選んで、「add to cart」を押して、買い物カゴに入れたものです。こうしたセッション中のページをまたいだ処理も、CGIやFormだけで行おうとすれば、Webサーバはクライアントの状態を保存しませんので、いろいろ面倒なものです。JSP/J2EEでは、こうしたセッション管理の機能が簡単に実現できます。
画面6 |
画面7 |
画面8 |
ここで、「Proceed to Checkout」を押したときには次の画面9が現れます。
画面9 |
実は、J2EEではユーザーのアカウントを管理したり、それぞれのユーザーがWebページにアクセスする権限を設定・管理することが可能です。この機能も、実用的には非常に便利なものです。次は、あらかじめ登録されていたユーザー情報の、提示画面(画面10)と注文の確認画面(画面11)です。
画面10 |
画面11 |
このように、J2EEにはWebベースのアプリケーション開発にとって便利な機能がいろいろと組み込まれています。
次回は、J2EEと「Java Pet Store」のデモをダウンロードしてJ2EEの環境設定を行い、実際にデモを動かしてみます。
連載内容 | |
J2EEの基礎 | |
第1回 Java Pet Storeで、J2EEを体験する(1) | |
第2回 Java Pet Storeで、J2EEを体験する(2) | |
第4回 J2EEアプリケーションを構成するコンポーネント | |
第5回 データベースのブラウザを作る | |
第6回 EJBにおけるコンテナとコンポーネント | |
第7回 J2EEのセキュリティのキホンを知る | |
第8回 J2EEのトランザクション処理 |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (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に関する基礎知識を解説する。
|
|