2003年度 データベース論

2005年度 東京サテライト校
J2EE I
稚内北星学園大学
情報メディア学部
安藤 友晴
1
単位の認定について

最終回にレポート課題を提示します。



レポートを評価して単位を認定
すべてのレポートの提出が必須
「2005年度 サマースクール in 稚内 JSFからは
じめるWebアプリケーション開発」を受講された方
は、本講義の単位に読み替えることができます。

もちろん、本講義を受講していただいても構いません。
2
本講義のWebページ
http://www.wakhok.ac.jp/~tomoharu/j2ee1tokyo-2005/
3
J2EE概説 (2005年12月版)
J2EE I
第1回 / 2005-12-17
4
今回の内容







Java言語の特徴
J2EEとWebアプリケーション
Webアプリケーションの要素技術
B2B と B2C
HTTPとWebサービス
「Java EE 5」への流れの中で
講義予定
5
Java言語の特徴
6
Javaの特徴 (1)

インターネット時代に登場した新しい言語


正式リリースは1995年
ネットワークに強い


ネットワーク上で使う機能をはじめから用意
ネットワーク上で動かしても安全なプログラム
を作れる
7
Javaの特徴 (2)

どんなコンピュータでもそのまま使える



Windows, Linux (Unix), Mac OS X など
コンパイルしたプログラムをそのまま動かせる
どんな国・地域でも使える


アメリカで作られたソフトウェアを日本語化す
るようなことが手軽に行える
国や地域・使用する言語などに固有の情報を
追加するだけでよい
8
Javaの特徴 (3)

文法が簡単で、使いやすい


(ほかの言語と比べると) 簡単な文法
「オブジェクト指向」という考え方



機能別にプログラムを整理できる
プログラムの再利用が容易
既存のプログラムを簡単に自分のプログラム
で使える
9
3つのJava

J2SE (Java SE)


J2ME (Java ME)


PCなどで利用されるJava。Javaの基本部分。
携帯電話やPDAなどで利用されるJava。
J2EE (Java EE)


企業情報システムなど、アプリケーション・
サーバで利用されるJava。
B2B / B2C で用いられる。
10
Javaはどこで使われているか?

携帯電話




NTTドコモ 「iアプリ」
ボーダフォン 「Javaアプリ」
au 「ezplus」
アプリケーション・サーバ


Webからアプリケーションを操作する
ショッピングサイトなど
11
J2EEとWebアプリケーション
12
Webアプリケーション

Webアプリケーションとは、「ユーザがWeb
ブラウザを使って何かを入力し、必要な結
果を得る」Webページ。




サーチエンジン
本の検索
商品の購入
掲示板など
13
2種類のWebページ

静的なページ


普通のページ。見るだけのもの。
動的なページ


ユーザがWebページに何か入力して使うもの
サーチエンジンなど
14
サーチエンジンの動き
1.
2.
3.
4.
5.
サーチエンジンのページを呼び出す。
調べたい言葉を入力する。
検索ボタンを押す。
その言葉に関するWebページのリストが
出力される。
リストの中からWebページを選んで見て
みる。
15
サーチエンジンの動きを
整理すると・・・



調べたい言葉を入力すると、Webページの
リストが出てくる。
入力した言葉によって、出力されるページ
が違う。
そのためには、サーバ側で何かの処理が
行われている。
16
なぜWebアプリケーションか

アプリケーションを使う側の理由



特定のソフトをインストールしなくても、Webブ
ラウザがあれば良い。
操作は簡単。
アプリケーションを提供する側の理由

集中管理できるので楽。
17
データベースの利用

Webアプリケーションは「データ」を処理する。





図書データ
在庫リスト
掲示板の記事
「データ」は保存される (= 永続性を持つ)
データベースを使うと面倒がなくて良い。

データをただのファイルで保存しておくと、遅いし面倒。
18
J2EEの基本モデル

J2EEは「データベース」を使った「Webアプ
リケーション」の作成を念頭に置いている
技術
19
なぜJ2EEか (1)

ショッピングサイトのようなシステムでは、次の条
件を満たす必要がある。



たくさんアクセスがあっても大丈夫なこと。
セキュリティを保てること。例えば顧客の情報を盗ま
れないようにすること。
従来の技術 (例えば CGI) では、こうした条件を
満たすのはなかなか大変
20
なぜJ2EEか (2)



大規模な商用システムにも耐えうるシステムが
必要。
こうしてうまれたのが「アプリケーション・サーバ」
アプリケーション・サーバの多くがJ2EEで作られ
ている。

先に示したJavaの特徴が、アプリケーション・サーバを
作るうえで有利に働く
21
なぜ Javaを使うのか? (1)

Webアプリでは、CGIよりもJavaは速い



ライブラリ・ツールの充実


GUIも使ってないし、プログラムはJava VM 上で既に
立ち上がっている。いちいち起動する必要もない。
プロセスではなく、スレッドで処理
もともと揃っているうえに、最近は特に充実。
HTMLとプログラムの分離が容易

他ではなかなか難しい。
22
なぜ Javaを使うのか? (2)

Java言語そのものの信頼性



Cなどと違い、ポインタ演算がないので、暴走
する危険性が極めて少ない。
ガベージコレクションによる不要オブジェクトの
回収
セキュリティが考慮されている言語仕様
23
で、J2EEは実際どうよ? (1)



大規模なビジネスアプリの世界では、Javaベース
の「アプリケーション・サーバ」が流行。
Oracle, BEA, IBM, Sun, Apple など大手のベン
ダーが採用。
こんなところで使われています



Webを使った顧客サービスの提供
COBOLベースの事務情報システムの置き換え
銀行でも使われ始めている
24
で、J2EEは実際どうよ? (2)


現在、Javaがいちばんよく使われている分
野
ところが、J2EEがわかる技術者は非常に
少ない
25
欠点はないの?

個人ベースでは使いにくいかも



もともと大規模システム向き。
ユーザCGIのような仕組みはない。
教育コストがかなりかかる

勉強すべきことはけっこう多い
26
Webアプリケーションの
要素技術
27
3層モデル

J2EEの基本パターン

「Webブラウザ」から「データベース」を使う
28
J2EEサーバとコンテナ


3層モデルの中央に位置
大きく分けて、次の2つの機能を持つ



Webコンテナ
EJBコンテナ
2つのコンテナでは、それぞれJavaのプロ
グラムが動く
29
Servlet と JSP


J2EEでは動的なページを作成するためServletとJSP
を使う。
Servlet



JSP





HttpServlet を継承する Javaプログラム。
HTML を埋め込める (あまり使わないけど)
ほとんどHTML
Javaプログラムを埋め込める (あまり使わないけど)
「Webコンテナ」の内部ではServletに変換される
どちらも「Webコンテナ」で動く。
普通は Servlet と JSP を組み合わせて使う。
30
MVCモデル2とフレームワーク


ServletやJSPは、「MVCモデル2」という技
術で組み合わせる。
MVCモデル2に基づく「フレームワーク」を
使うと、Webアプリケーションの作成が楽
になる



JSF
Struts
Tapestry など
31
Javaからデータベースを利用

JDBC


JavaでSQLをラッピングしたもの
O/R Mapping



「ひとつのJavaオブジェクト」が「リレーショナルデータ
ベースのテーブルの1行分のデータ」と対応
Entity Bean / Hibernate / Cayenne など
2006年に Java Persistence API がリリース。O/R
Mapping の標準APIになっていく
32
B2B と B2C
33
B2C と B2B

B2C



Business to(2) Customer
企業と顧客のやりとり
B2B


Business to(2) Business
企業と企業のやりとり
34
WebアプリケーションとB2C

B2CでWebアプリケーションを使うのはもは
や当たり前


B2C = 企業と顧客のやりとり
やりとりの内容が完全に電子化されるので、
業務が効率化できる。
35
その次の目標

B2B間の情報のやりとりを、できるだけ自
動化したい。


B2B = 企業と企業のやりとり
同じ組織内(企業や大学)だけではなく、別
の組織にある情報システムを組み合わせ
て使いたい。
36
HTTPとWebサービス
37
プロトコル






ネットワークでの通信の仕方を定めたもの
Web の場合
 HTTP
メール送信
 SMTP
メール受信
 IMAP or POP
ファイル転送
 FTP
リモートログイン  TELNET
38
ホスト名とポート番号


インターネットでの通信に必要なもの
ホスト名 (= IPアドレス)


www.wakhok.ac.jp など
ポート番号


どのプログラムを使用するか識別する番号
HTTP を扱うプログラムは、たいてい 80 番
39
HTTPの利用 (1)


B2B や B2Cのプログラムは、それぞれ離
れたところにあることが想定されている。
しかし、離れたコンピュータにアクセスしよ
うと思っても、たいていのサイトではWebと
メール以外のポートは閉じている。

多くのサイトでは、セキュリティを保つため、ほ
とんどのポートを使えなくしている。
40
HTTPの利用 (2)



しかし、HTTP (80番) は使えるだろう。
そこで、HTTP を使ってB2BやB2Cの通信
をおこなう。
まれに、SMTP を使う場合もある。
41
「Webアプリケーション」の場合

「Webサーバ」が「Webブラウザ」と通信を
行う。
42
「Webサービス」の場合

「Webサーバ」が「プログラム」と通信を行う。
43
Webサービスとは何か

Webのブラウザを使わずに、プログラム中
から Web にアクセスして必要な情報を取
り出せるサービス。
44
Webサービスの例

Google Web APIs


自分のプログラムから、Googleのサービスを
呼び出す
エージェント

ある特定の商品について、いくつかの企業の
Webサービスにアクセスして見積を取得し、い
ちばん安価な企業の商品を発注する。
45
HTTP と Webサービス

HTTP によって B2B・B2C が繋がれる。

Webブラウザだけでなく、プログラムからも HTTP を利
用できる。
46
「Java EE 5」への流れの中で
47
Java EE 5

J2EEの次期バージョン



現行バージョンは 1.4
「J2EE」が「Java EE」に
2006年初頭にリリース予定
48
Java EE 5 の要点

Ease of Development = EoD




「開発の容易性」
いかにラクにソフトウェアを開発するか
JSF, EJB 3.0, Webサービス …
技術的なポイント



Annotation
POJO
「オブジェクト指向」から「サービス指向」への流れ
49
Annotation (1)
// Entity Bean である
@Entity
// EMPLOYEE テーブルと対応している
@Table(name="EMPLOYEE")
public class Employee implements Serializable {
……
}
50
Annotation (2)
// id プロパティは ID を示す
// テーブルが ID を生成
@Id(generate=TABLE)
// テーブルのID項目に該当。主キー。
@Column(name=ID, primaryKey=true)
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
51
Annotation (3)
// テーブル中の項目名は EMP_NAME
@Column(name="EMP_NAME", length=80)
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
52
Annotation (4)
// Employee と PhoneNumbers は一対多の関係
@OneToMany(
targetEntity="com.acme.PhoneNumber",
cascade=ALL, mappedBy="employee")
// EMP_ID と PhoneNumber の ID 項目を結合
@JoinColumn(name="EMP_ID” referencedColumnName="ID")
public Collection getPhoneNumbers() { return phoneNumbers; }
public void setPhoneNumbers(Collection phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
53
Annotation (5)

J2EEで提供されている各技術を使ってプ
ログラムを作成するのは、なかなか大変




「インタフェース」と「実装クラス」
「お決まりのパターン」の記述
設定ファイルの記述
……
54
Annotation (6)

Annotation を使うことで、プログラムと設定
情報の対応が明確になり、管理すべきファ
イル数も減らせる
↓
EoD
55
POJO


POJO (Plain Old Java Object)
特定の技術に依存しない、普通のJavaオ
ブジェクト


テストしやすい
使い回ししやすい
56
DIコンテナ



従来のEJB
 EJBがコンテナから必要な情報を取得する
EJB 3.0 では
 コンテナがEJBに必要な情報を与える (=
Dependency Injection = DI = 依存性注入)
コンポーネント間の依存性を減らすことができる
57
「サービス指向」への流れ




ソフトウェア開発の基本単位が「オブジェクト」か
ら「サービス」に移行しつつある
そのための基本的な思想が SOA (Service
Oriented Architecture)
ソフトウェアがネットワーク上に存在する
「出張旅費精算サービス」


「出張申請」「承認」「会計処理」「報告」をそれぞれ
Webサービスとして構築
これらのWebサービスを統合して「出張旅費精算サー
ビス」(BPELという技術を使う)
58
SOAの社会的な役割

ビジネス面での要請


企業の業務システムを「サービス」として構築す
ることで、さまざまな効率化が見込まれる



リストラによる企業の間接部門の削減
例えば、ある業務をすべて外注化 → 社外にあるその
業務の「サービス」を呼び出せばよい
その「サービス」を購入すれば、人を雇うよりもいいか
も
Microsoft, Sun, Oracle, IBM などの大手ITベンダ
が「本気」で取り組んでいる
59
Java Business Integration
(JBI)

情報システム上のさまざまなサービスを
Java EE 上に統合しようとする技術



BPEL, XSLT, EJB, JMS, RSS, FTP, …
"Java EE 6" の目玉技術
オープンソースの実装も

ServiceMix (http://servicemix.org/)
60
J2EEの再定義

J2EEは、B2B・B2Cで使われる技術を整理
したもの



Webアプリケーション
データベースの取り扱い
Webサービス など
61
講義スケジュール
62
本講義のスケジュール
第1日 (12/17)


J2EE概説
Webアプリケーション (1)


JavaServer Pages (JSP)
JavaBeans
63
本講義のスケジュール
第2日 (1/14)

リレーショナル・データベースとJDBC




リレーショナル・データベース
SQL (1)
SQL (2)
JDBC
64
本講義のスケジュール
第3日 (1/28)

Webアプリケーション (2)




HTTP (1)
HTTP (2)
Servlet
総合演習
65