Java Web

35  Download (0)

Full text

(1)

© 2003 Marty Hall, http://www.coreservlets.com

Java:

ソフトウェア革

ソフトウェア革

ソフトウェア革

ソフトウェア革

?

Marty Hall

http://www.coreservlets.com

CasaReal, Inc.

http://www.casareal.co.jp

www.coreservlets.com

アジェンダ

アジェンダ

アジェンダ

アジェンダ

Java の迷信と実像の迷信と実像の迷信と実像の迷信と実像

– Java は Web が使用可能?

– Java は安全?

– Java はクロス・プラットフォーム?

– Java は簡単?

– Java は強力?

• 共通共通共通共通 Java プロトコルプロトコル &プロトコルプロトコル &&& パッケージパッケージパッケージパッケージ

Java の未来の未来の未来の未来

• JavaJavaJavaJava の実用例の実用例の実用例の実用例

• サンプルサンプルサンプルサンプル Java プログラムプログラムプログラムプログラム

(2)

www.coreservlets.com

Java

Web

が使用可能

が使用可能

が使用可能

が使用可能

?

• 実像実像実像実像: Web ブラウザはブラウザはブラウザはブラウザは Java “アプレットアプレットアプレットアプレットを起を起を起を起 動可能

動可能 動可能 動可能

– Web はドキュメントの配信と表示だけでなく、ソ

フトウェアの配信と実行も可能

– インストールやアップデートが不要;ブックマー

クするだけ

– 大きく、複雑なアプレットはイントラネットに最

適。概して WWW ではなく、APL モデルに適し

ている

• 実像実像実像実像: Java のネットワークライブラリは使いやのネットワークライブラリは使いやのネットワークライブラリは使いやのネットワークライブラリは使いや すい

すい すい すい

– 普通の人でもソケットプログラミングが可能

標準分散オブジェクトプロトコルと DBMS API

www.coreservlets.com

ハッブル宇宙望遠鏡のモニタリング

ハッブル宇宙望遠鏡のモニタリング

ハッブル宇宙望遠鏡のモニタリング

ハッブル宇宙望遠鏡のモニタリング

:

“NASA ゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功した

ソフトウェアプロジェク ソフトウェアプロジェクソフトウェアプロジェク ソフトウェアプロジェク ト

(3)

www.coreservlets.com

Java

Web

が使用可能

が使用可能

が使用可能

が使用可能

?

• 迷信迷信迷信迷信: Java はははは Web 専用専用専用専用

– Java “アプレット” は Web ページ内で起動

– Java “アプリケーション”はスダンドアローンで起

– 現在の用途 (概算)

• Client (アプレット): 5%

• Desktop (アプリケーション): 45%

• Server (サーブレット/JSP/EJB): 50%

www.coreservlets.com

Star Office

(4)

www.coreservlets.com

Java

は安全

は安全

は安全

は安全

?

JAVA: Just Another Virus Architecture?

www.coreservlets.com

Java

は安全

は安全

は安全

は安全

?

• 実像実像実像実像: 許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限 は可能

は可能 は可能 は可能

– メモリーを(直接または間接的にも) “生” での操

作しない。

• よって、禁止操作の発見が容易。

– アプレットはデフォルトで以下のことが禁止され

ている:

• ローカルディスクの読み込み • ローカルディスクへの書き込み • ローカルプログラムの実行

• HTTP サーバ以外へのネットワーク接続

• ユーザのプライベート情報(ユーザ名、ディレクト

リ、OS パッチレベル、インストールされたアプリケ

(5)

www.coreservlets.com

Java

は安全

は安全

は安全

は安全

?

• 迷信迷信迷信迷信: アプレットはコンピュータに害を及ぼさアプレットはコンピュータに害を及ぼさアプレットはコンピュータに害を及ぼさアプレットはコンピュータに害を及ぼさ

ない ない ない ない

– サービス妨害 (Denial of service)

– 不適切なブラウザ設定 – バグの実装

• 迷信迷信迷信迷信: Java は制限が多く使いづらいは制限が多く使いづらいは制限が多く使いづらいは制限が多く使いづらい

– 制限はアプレットにのみ適用。通常の Java プログ

ラムに制限はない

– 電子署名のサポートにより、制限が緩まった

• 迷信迷信迷信迷信: 電子署名付きアプレットの安全性は電子署名付きアプレットの安全性は電子署名付きアプレットの安全性は電子署名付きアプレットの安全性は

ActiveX と変わらないと変わらないと変わらないと変わらない

– アプレットのセキュリティは緩くなったが、

ActiveX のように“全て”か“なし”かではない

www.coreservlets.com

Java Source Code

Java Bytecode Compiler

(javac)

Java Bytecode

Execution JIT Compiler or Interpreter

Compile Time Run Time

Java

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

?

• 実像実像実像実像: Java プログラムはマシン固有のバイトコプログラムはマシン固有のバイトコプログラムはマシン固有のバイトコプログラムはマシン固有のバイトコ ードにコンパイル可能

ードにコンパイル可能 ードにコンパイル可能 ードにコンパイル可能

• 実像実像実像実像: ほとんどのオペレーティングシステムにほとんどのオペレーティングシステムにほとんどのオペレーティングシステムにほとんどのオペレーティングシステムに

は は は

Java 動作環境が備わっている動作環境が備わっている動作環境が備わっている動作環境が備わっている

– 通常バンドルされている

(6)

www.coreservlets.com

火星探査機のデータ・ビューア

火星探査機のデータ・ビューア

火星探査機のデータ・ビューア

火星探査機のデータ・ビューア

www.coreservlets.com

Java

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

?

• 迷信迷信迷信迷信: パフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性と

マシンの独立性の達成が可能 マシンの独立性の達成が可能 マシンの独立性の達成が可能 マシンの独立性の達成が可能

– 既存のシステムは C++ よりも約 20% 遅い

– 次期リリースでそのギャップは減少、解消される

と言われている

– 個人的には 10% 以上のギャップになると考えてい

– 無償コンパイラよりも商用コンパイラの方が早い

場合がある

• 迷信迷信迷信迷信: Java は解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)され ている

ている ている ている

– 初期リリースでは解釈されていた – 多くの“Just in Time” (JIT) コンパイラ

(7)

www.coreservlets.com

•実像実像実像実像: Java には移植できるグラフィック・ライブには移植できるグラフィック・ライブには移植できるグラフィック・ライブには移植できるグラフィック・ライブ

ラリがある ラリがある ラリがある ラリがある

“OSネイティブな操作感(ルック・アンド・フィール)ネイティブな操作感(ルック・アンド・フィール)ネイティブな操作感(ルック・アンド・フィール)ネイティブな操作感(ルック・アンド・フィール)” -- Java 1.1 UI ががががOS への適合を制御するへの適合を制御するへの適合を制御するへの適合を制御する

プラッグ可能な操作感(ルック・アンド・フィール)プラッグ可能な操作感(ルック・アンド・フィール)プラッグ可能な操作感(ルック・アンド・フィール)プラッグ可能な操作感(ルック・アンド・フィール)” -- Java 2 がががが

見た目の変更を制御する 見た目の変更を制御する 見た目の変更を制御する 見た目の変更を制御する

•迷信迷信迷信迷信: グラフィックライブラリには、大体のアプグラフィックライブラリには、大体のアプグラフィックライブラリには、大体のアプグラフィックライブラリには、大体のアプ

リケーションで必要なものが揃っている リケーションで必要なものが揃っている リケーションで必要なものが揃っている リケーションで必要なものが揃っている

AWT (Java 1.0 and 1.1) は力不足だったが、は力不足だったが、は力不足だったが、は力不足だったが、JFC/Swing (Java 2) はよはよはよはよ

り完全で、パワーがある り完全で、パワーがある り完全で、パワーがある り完全で、パワーがある

Java

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

?

www.coreservlets.com

Java

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

?

• 真実真実真実真実: (意見意見意見意見) ネイティブな操作感(ルック・アネイティブな操作感(ルック・アネイティブな操作感(ルック・アネイティブな操作感(ルック・ア ンド・フィール)の選択は正しかった

(8)

www.coreservlets.com

Java Foundation Classes (JFC)

によりグラフィックスが格段に向

によりグラフィックスが格段に向

によりグラフィックスが格段に向

によりグラフィックスが格段に向

• 更なる更なる更なる更なるGUI の制御の制御の制御の制御

• 更なるカスタマイズ化が可能更なるカスタマイズ化が可能更なるカスタマイズ化が可能更なるカスタマイズ化が可能 • プラグ可能な操作性プラグ可能な操作性プラグ可能な操作性プラグ可能な操作性

• ネイティブなフォントネイティブなフォントネイティブなフォントネイティブなフォント • より豊富なより豊富なより豊富なより豊富な

描画操作 描画操作 描画操作 描画操作

www.coreservlets.com

Java

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

はクロス・プラットフォー

?

• 迷信迷信迷信迷信: Write Once Run Anywhere

– クロス・プラットフォームなコードは可能だが、

使用する全てのプラットフォームでテストする必 要がある

• Java アプリケーションはローカルコードで実行可能

• グラフィックライブラリは異なるプラットフォーム

では若干異なる振舞いをする

• スレッドスケジューラの振舞いは、緩くしか定義さ

れていない

• 迷信迷信迷信迷信: Java がががが Microsoft を倒すを倒すを倒すを倒す

– 逆(Microsoft が Java を今すぐ倒す)ような危険

性はなくなった

– Microsoft は Java と戦うのか、仲良くしマーケッ

(9)

www.coreservlets.com

Sun

のスローガン

のスローガン

のスローガン

のスローガン

:

“100% Pure Java”

パットを見てください。

パットはプログラムを一度だけ書きました 全てのプラットフォームで動作が可能です

プログラムを書くのに、

パットは100% Pure Java を使いました。

動けプログラム、動け!

www.coreservlets.com

Java

は簡単

は簡単

は簡単

は簡単

?

• 実像実像実像実像: Java は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単 にする

にする にする にする

– Java は自動メモリ管理機能を持つ

• Windows はゴミを捨ててくれますか?

• ぶら下がっているポインタがない。メモリーリーク

がない。

– Java はポインタ処理を簡単にする

• 明示的な参照/参照渡しの操作がない – メイクファイルがいらない 

– ヘッダーファイルがいらない – C++ の構文を合理化

– C# は Java と同等、ただし言語の核心に関して言

(10)

www.coreservlets.com

Java

による迅速な

による迅速な

による迅速な

による迅速な

アプリケーション開発

アプリケーション開発

アプリケーション開発

アプリケーション開発

– 数ギガバイトのテキストコーパスの情報回収 (APL RTDC)

– 分散シミュレーションの (APL STD)

www.coreservlets.com

Java

は簡単

は簡単

は簡単

は簡単

?

• 迷信迷信迷信迷信: Java ののののプログラミングプログラミングプログラミングプログラミングは簡単は簡単は簡単は簡単

– プログラミングは常に難しい

• Java は HTML ではない;

JavaScript に少し似ているだけ

– プログラマは大抵、複雑さを追求してしまう

• マルチスレッド、およびネットワークプログラミン

(11)

www.coreservlets.com

Java

は強力

は強力

は強力

は強力

?

• 実像実像実像実像: Java は豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えてい る

る る る

– ネットワーク 

– スレッド  (軽いプロセス)

– 分散オブジェクト  – データベースアクセス

– グラフィックス:GUI 制御と描画 

– データ構造ライブラリ 

– 任意の正確積分および固定小数点式の算術 – 電子署名 

– シリアライズ化  (データ構造の送信/再構築)

– ファイルとストリームの圧縮 

www.coreservlets.com

MEL - Master Environmental

(12)

www.coreservlets.com

Java

は強力

は強力

は強力

は強力

?

• 迷信迷信迷信迷信: 全てのアプリケーションに対して、全てのアプリケーションに対して、全てのアプリケーションに対して、全てのアプリケーションに対して、Java はプログラマの生産性を

はプログラマの生産性を はプログラマの生産性を

はプログラマの生産性をXXX%%%%向上させる向上させる向上させる向上させる • 迷信迷信迷信迷信: Java はははは C++ をなくすをなくすをなくすをなくす

• 迷信迷信迷信迷信: 全てのソフトウェアを全てのソフトウェアを全てのソフトウェアを全てのソフトウェアを Java で書くべきで書くべきで書くべきで書くべき

– Unix :C 言語を活用

– 中小規模の Windows 専用プログラム: Visual Basic

– 文字列の構文解析: Perl

– 高パフォーマンス、単一プラットフォームのオブ

ジェクト指向システム:C++ 

– 航空交通完成、航空機飛行ソフトウェア: Ada

– 知識ベースシステム: Lisp/CLOS

– Java はこれらのプログラムの良い代替プログラム

である 

www.coreservlets.com

Java

C++

Java は C++ を駆逐することは

ないが、Java と C++ は同じ土

俵で競い合う。

The C++ Report では Java にポ

ートすることで C++ を頑強で

(13)

www.coreservlets.com

鍵となる

鍵となる

鍵となる

鍵となる

Java

パッケージとプロト

パッケージとプロト

パッケージとプロト

パッケージとプロト

コル

コル

コル

コル

Key Java Packages and

 

 

 

 

Protocols

• コアテクノロジー コアテクノロジー コアテクノロジー コアテクノロジー 

– JDBC

– RMI (and Jini)

– JavaBeans

– Swing

– Java 2D

• 標準拡張標準拡張標準拡張標準拡張    

– Servlets

(及び JavaServer Pages)

– Struts

– Enterprise Java Beans (and JNDI)

– Java 3D

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

JDBC (Java DataBase Connectivity)

• データベースサーバへ接続する仕組みを標準化データベースサーバへ接続する仕組みを標準化データベースサーバへ接続する仕組みを標準化データベースサーバへ接続する仕組みを標準化

– クライアント側にサーバ固有のドライバが必

要。

サーバの設定には変更なし

• クエリー送信の仕組みを標準化クエリー送信の仕組みを標準化クエリー送信の仕組みを標準化クエリー送信の仕組みを標準化

– 正規またはパラメータ化されたクエリー

 (ストアドプロシージャ)

• クエリー結果のデータ構造を標準化クエリー結果のデータ構造を標準化クエリー結果のデータ構造を標準化クエリー結果のデータ構造を標準化

– リレーショナルデータが前提の為、データ構

造はテーブル

• 「「「「SQL 構文の標準化」ではない構文の標準化」ではない構文の標準化」ではない構文の標準化」ではない – クエリーは簡単なストリング

(14)

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Remote Method Invocation (RMI)

• 組み込まれた分散オブジェクト・プロトコル組み込まれた分散オブジェクト・プロトコル組み込まれた分散オブジェクト・プロトコル組み込まれた分散オブジェクト・プロトコル

– 開発者は RMI を使用することで普通に Java オブジェ

クトにアクセスし、操作する。その裏で実際のファン クション呼び出しはネットワークを介してリモートオ ブジェクトに行く

– Java の “シリアライズ化”機構により、特別のパッケー

ジングをほとんど使わずに、どんなJavaのデータ構造

でも、

ネットワークを介して送信することが可能

– 簡略化された CORBA に類似、しかし Java 同士のや

り取りに制限される

Jini

– RMI ベースの自己文書化サービス向けプロトコル

– 正真正銘の“プラグ&プレイ”を可能にする —別ドライバ不要

今後の成功はこれからにかか ている セキ リティ

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

JavaBeans

JavaBeans とととと Java の関係はの関係はの関係はの関係は   

     

  ActiveX とととと Visual C++の関係と同等の関係と同等の関係と同等の関係と同等.

– Java プログラムをソフトウェアの

“コンポーネント”としてパッケージできる

– ビジュアルのツールにより、事前に詳細を 知らなくても、変更/操作が可能

• 例えば、Bean を Visual Café, IBM VisualAge for Java,

Inprise (Borland) JBuilder, Sybase PowerJ, Metrowerks CodeWarrior, Sun JavaWorkshop,

などにドロップするだけで、ツールパレットから ドラッグ&ドロップの開発が可能

– ActiveX よりも優れたセキュリティと移植性

(15)

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Swing

Java 2 標準標準標準標準 GUI 制御制御制御制御

• より多くの組み込まれた制御より多くの組み込まれた制御より多くの組み込まれた制御より多くの組み込まれた制御

• より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能

• 商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む

– ツールチップ、タブ枠、

オンラインヘルプ、HTMLサポート、

ドック可能なツールバー、

マルチ-ドキュメントインタフェースなど

• 起動時に操作性(ルック・起動時に操作性(ルック・起動時に操作性(ルック・起動時に操作性(ルック・ アンド・フィール)が変わる アンド・フィール)が変わる アンド・フィール)が変わる アンド・フィール)が変わる 場合がある

場合がある 場合がある 場合がある

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Java 2D

Java 2222 標準描画ライブラリ標準描画ライブラリ標準描画ライブラリ標準描画ライブラリ

• 多くの新しい描画属性多くの新しい描画属性多くの新しい描画属性多くの新しい描画属性

– 塗りつぶしパターンと画像 – 任意のフォント

– ペンの太さとパターン – 色の混合規則と透過性

• 座標変換 座標変換 座標変換 座標変換 

– 浮動小数点の 座標システム 

– メモリ座標からスクリーン座標または プリンタ座標へのマッピング 

(16)

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Java 3D

Java の標準拡張機能の標準拡張機能の標準拡張機能の標準拡張機能

– Java 2D のように、Java 言語の”コア”ではない

• プラットフォームにより、プラットフォームにより、プラットフォームにより、プラットフォームにより、Direct3D、、、、またはまたはまたはまたは OpenGL 上に構築上に構築上に構築上に構築

Scene-graph に基づいたモデル。に基づいたモデル。に基づいたモデル。に基づいたモデル。

リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Servlets

• クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込

む む む む

(フォームデータフォームデータフォームデータフォームデータ)

• クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込

む む む む

(リクエストヘッダリクエストヘッダリクエストヘッダリクエストヘッダ)

• 結果の生成結果の生成結果の生成結果の生成

• 明示的データをクライアントに返す明示的データをクライアントに返す明示的データをクライアントに返す明示的データをクライアントに返す(HTML)

• 暗示的データをクライアントに返す暗示的データをクライアントに返す暗示的データをクライアントに返す暗示的データをクライアントに返す

(17)

www.coreservlets.com

既存

既存

既存

既存

CGI

に対するサーブレッ

に対するサーブレッ

に対するサーブレッ

に対するサーブレッ

トの利点

トの利点

トの利点

トの利点

• 効率性 効率性 効率性 効率性 Efficient

– OS プロセスの代わりにスレッドを利用、

1サーブレットのコピー、パーシスタンス

• 便利 便利 便利 便利 Convenient

– 多くの高レベルユーティリティ  • 強力 強力 強力 強力 Powerful

– データ共有、プーリング、パーシスタンス • 移植性 移植性 移植性 移植性 Portable

– ほとんどのオペレーティングシステムとサーバで動作 • 安全 安全 安全 安全 Secure

– シェルエスケープがない、バッファフローがない • 安価 安価 安価 安価 Inexpensive

– 多くの無償、低価格サーバが存在

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

JavaServer Pages (JSP)

• アイディアアイディアアイディアアイディア:

– ページの大部分では通常のHTMLを使用

– サーブレットコードを特別なタグでマーク

– JSP ページ全体がサーブレットに変換(一回)され、

各リクエストで、実際に呼び出されるのは そのサーブレット

• 例えば例えば例えば例えば:

– JSP

• Thanks for ordering

<I><%= request.getParameter("title") %></I>

– URL

• http://host/OrderConfirmation.jsp ?title=Core+Web+Programming

– 結果

(18)

www.coreservlets.com

JSP

の利点

の利点

の利点

の利点

• 技術的に技術的に技術的に技術的にJSPはサーブレットで出来ないことははサーブレットで出来ないことははサーブレットで出来ないことははサーブレットで出来ないことは 出来ない。しかし、

出来ない。しかし、 出来ない。しかし、

出来ない。しかし、JSP は以下を簡単にするは以下を簡単にするは以下を簡単にするは以下を簡単にする : – HTML の作成

– HTML の読み込みと保守

JSP が可能にすることが可能にすることが可能にすることが可能にすること:

– Allaire HomeSite, Macromedia DreamWeaver, or Adobe GoLive などの標準的な HTML の使用.

– HTML レイアウトとJava プログラミングの分

JSP によって推奨されること によって推奨されること によって推奨されること によって推奨されること 

– コンテンツを作成する (Java) コードと、それ

www.coreservlets.com

Servlets

JSP:

業界への導入 

業界への導入 

業界への導入 

(19)

www.coreservlets.com

Struts

Servlet およびおよびおよびおよび JSP のフレームワークのフレームワークのフレームワークのフレームワーク

• 無償無償無償無償

• オープンソースオープンソースオープンソースオープンソース

Apache Software Foundation で提供で提供で提供で提供

• 大規模、中規模の大規模、中規模の大規模、中規模の大規模、中規模の サーバーサイドサーバーサイドサーバーサイドサーバーサイド

Java システムの管理を簡単にするシステムの管理を簡単にするシステムの管理を簡単にするシステムの管理を簡単にする

• 業界で広く導入されている業界で広く導入されている業界で広く導入されている業界で広く導入されている

www.coreservlets.com

Java

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

パッケージとプロトコル

:

Enterprise JavaBeans (EJB)

• 通常の通常の通常の通常のJavaBeans がアプリケーションのがアプリケーションのがアプリケーションのがアプリケーションの

コンポーネントであるように、 コンポーネントであるように、 コンポーネントであるように、 コンポーネントであるように、

EJB はサーバのコンポーネントはサーバのコンポーネントはサーバのコンポーネントはサーバのコンポーネント

• ロードバランシング、パーシスタンス、ロードバランシング、パーシスタンス、ロードバランシング、パーシスタンス、ロードバランシング、パーシスタンス、

フォールオーバーなどのサービスへの フォールオーバーなどのサービスへの フォールオーバーなどのサービスへの フォールオーバーなどのサービスへの アクセスを標準化

アクセスを標準化 アクセスを標準化 アクセスを標準化

• 中身は中身は中身は中身は JavaBeans、、、、CORBA、および、、、およびおよびおよびRMIで構築で構築で構築で構築

• 非非非非 Java プログラムからのアクセスも可能プログラムからのアクセスも可能プログラムからのアクセスも可能プログラムからのアクセスも可能

EJB をサポートするアプリケーションサーバをサポートするアプリケーションサーバをサポートするアプリケーションサーバをサポートするアプリケーションサーバ

– BEA WebLogic, IBM WebSphere, Netscape, Oracle, Progress SW

(20)

www.coreservlets.com

Java

の未来

の未来

の未来

の未来

• 言語の核言語の核言語の核言語の核

– Windows 向け Java 2(別名 JDK 1.2-1.4 )は 1998年12月にリリース。豊富なGUI制御、描画

モデルの改善、多数のデータ構造ライブラリ(“

コレクション”)、オーディオサポートの改善、

標準 CORBA インタフェース、パフォーマンス

の改善

– 徐々に進化 

• 標準拡張機能標準拡張機能標準拡張機能標準拡張機能

– Servlets, JSP, Jini, JAXP, など

– 急速に進化 

• サーバ上のサーバ上のサーバ上のサーバ上の Java

– 現在最も伸びている分野 

www.coreservlets.com

Java

の未来 

の未来 

の未来 

の未来 

(

続き

続き

続き

続き

)

• 小さなデバイス、組み込み式小さなデバイス、組み込み式小さなデバイス、組み込み式小さなデバイス、組み込み式

アプリケーション向けの アプリケーション向けの アプリケーション向けの アプリケーション向けの

Java

– Java 2 Micro Edition

• PDA、 携帯電話など

– JavaCard

• Smart cards

– Real-Time Java の未来は

まだ不明

(21)

www.coreservlets.com

Java

の未来

の未来

の未来

の未来

:

パフォーマンスの改善

パフォーマンスの改善

パフォーマンスの改善

パフォーマンスの改善

0 50 100 150 200 250

1.1.3 1.1.5 1.2B2 1.2B3 1.2B4

JHU/APL Information Retrieval Benchmark

www.coreservlets.com

Java

の未来

の未来

の未来

の未来

:

更なる成長

更なる成長

更なる成長

更なる成長

0 100,000,000 200,000,000 300,000,000 400,000,000 500,000,000 600,000,000 700,000,000 800,000,000 900,000,000 1,000,000,000

1996 1997 1998 1999 2000

0 200,000 400,000 600,000 800,000 1,000,000 1,200,000 1/ 96 5/ 96 9/ 96 1/ 97 5/ 97

(22)

www.coreservlets.com

Java

の未来

の未来

の未来

の未来

:

より多くの仕事

より多くの仕事

より多くの仕事

より多くの仕事

• 不景気に関わらず、大量のソフトウェア開発を不景気に関わらず、大量のソフトウェア開発を不景気に関わらず、大量のソフトウェア開発を不景気に関わらず、大量のソフトウェア開発を 行うほとんどの企業では、優良な

行うほとんどの企業では、優良な 行うほとんどの企業では、優良な

行うほとんどの企業では、優良な Java 開発者開発者開発者開発者 が不足している

が不足している が不足している が不足している

IBM ではではではでは2,,,,500名以上のプロフェッショナル名以上のプロフェッショナル名以上のプロフェッショナル名以上のプロフェッショナル を

を を

Java製品開発に従事させている製品開発に従事させている製品開発に従事させている製品開発に従事させている

JavaOne カンファレンスのビデオクリップのカンファレンスのビデオクリップのカンファレンスのビデオクリップのカンファレンスのビデオクリップの 背景に書かれているコード:

背景に書かれているコード: 背景に書かれているコード: 背景に書かれているコード:

if (you.canRead(this))

you.canGet(new Job(!problem));

© 2003 Marty Hall, http://www.coreservlets.com

サンプル

サンプル

サンプル

サンプル

Java

プログラ

プログラ

プログラ

プログラ

(23)

www.coreservlets.com

デスクトップ

デスクトップ

デスクトップ

デスクトップ

Java

プログラム

プログラム

プログラム

プログラム

Desktop Java Program

File ShowArgs.java:

public class ShowArgs {

public static void main(String[] args) { for(int i=0; i<args.length; i++) {

System.out.println("Arg " + i +

" is " + args[i]); }

} }

www.coreservlets.com

デスクトップ

デスクトップ

デスクトップ

デスクトップ

Java

プログラム

プログラム

プログラム

プログラム

:

結果

結果

結果

結果

Compiling and Running:

> javac ShowArgs.java

> java ShowArgs fee fie foe fum Arg 0 is fee

(24)

www.coreservlets.com

Web

で使用可能な

で使用可能な

で使用可能な

で使用可能な

Java

プログラ

プログラ

プログラ

プログラ

(Applet)

import java.applet.Applet; import java.awt.*;

public class Message extends Applet { private int fontSize;

private String message; public void init() {

setBackground(Color.black); setForeground(Color.white);

fontSize = getSize().height - 10;

setFont(new Font("SansSerif", Font.BOLD, fontSize)); // Read heading message from PARAM entry in HTML. message = getParameter("MESSAGE");

}

public void paint(Graphics g) { if (message != null)

g.drawString(message, 5, fontSize+5); }

}

www.coreservlets.com

Web

で使用可能な

で使用可能な

で使用可能な

で使用可能な

Java

プログラ

プログラ

プログラ

プログラ

(Applet)

:続き

続き

続き

続き

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD><TITLE>The Message Applet</TITLE></HEAD> <BODY BGCOLOR="WHITE">

<H1>The <CODE>Message</CODE> Applet</H1> <P>

<APPLET CODE="Message.class" WIDTH=325 HEIGHT=25> <PARAM NAME="MESSAGE" VALUE="Tiny">

<B>Sorry, these examples require Java</B> </APPLET>

<P>

<APPLET CODE="Message.class" WIDTH=325 HEIGHT=50> <PARAM NAME="MESSAGE" VALUE="Small">

<B>Sorry, these examples require Java</B> </APPLET>

...

(25)

www.coreservlets.com

Web

で使用可能な

で使用可能な

で使用可能な

で使用可能な

Java

プログラ

プログラ

プログラ

プログラ

(Applet) :

結果

結果

結果

結果

www.coreservlets.com

サーバサイド

サーバサイド

サーバサイド

サーバサイド

Java

プログラム

プログラム

プログラム

プログラム

(Servlet)

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter(); out.println("Hello World");

(26)

www.coreservlets.com

サーバサイド

サーバサイド

サーバサイド

サーバサイド

Java

プログラム

プログラム

プログラム

プログラム

(Servlet):

結果

結果

結果

結果

www.coreservlets.com

サーバサイド

サーバサイド

サーバサイド

サーバサイド

Java

プログラム

プログラム

プログラム

プログラム

(JSP)

<!DOCTYPE HTML PUBLIC

"-//W3C//DTD HTML 4.0 Transitional//EN">

<BODY>

<H2>JSP Expressions</H2> <UL>

<LI>Current time: <%= new java.util.Date() %> <LI>Your hostname: <%= request.getRemoteHost() %> <LI>Your session ID: <%= session.getId() %>

<LI>The <CODE>testParam</CODE> form parameter: <%= request.getParameter("testParam") %> </UL>

(27)

www.coreservlets.com

サーバサイド

サーバサイド

サーバサイド

サーバサイド

Java

プログラム

プログラム

プログラム

プログラム

(JSP):

結果

結果

結果

結果

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• フィナンシャルサービフィナンシャルサービフィナンシャルサービフィナンシャルサービ

ス ス ス

: Charles Schwab

– 1999年に、拡張性、

開発効率、およびビ ジネスエンタープラ イズ全体におけるコ ードの再利用性と共 有性を提供する Java

(28)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• フィナンシャルサービスフィナンシャルサービスフィナンシャルサービスフィナンシャルサービス:

松井証券 松井証券松井証券 松井証券

– オンライン・トレーディン グ

システム全てをJavaで構築

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• フィナンシャルサービスフィナンシャルサービスフィナンシャルサービスフィナンシャルサービス: NASDAQ

– 多くの市場分析ツール は Java Swing や

(29)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

WashingtonPost.com

– カスタマイズ化された

オンライン新聞

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• ユナイテッド航空ユナイテッド航空ユナイテッド航空ユナイテッド航空

– ユナイテッド航空にとっ

て情報は命です。お客様 、地上要員、ゲート要員 、添乗員、操縦士、オペ レーションチーム、管理 チームなどがそれぞれの 役割のニーズに合わせて 、一刻を争うクリティカ ルなデータを、カスタマ イズしています。Java

アプリケーションサーバ であるBEAにより、必要

(30)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

Visa

– Java アプリケーション

サーバ上にトランザクション システムを構築

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• オンライン・バンキングオンライン・バンキングオンライン・バンキングオンライン・バンキング

– 米国インターネット・バンキング・システム大手

(31)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

International Children's Digital Library

– アプレットを使用するインタラクティブな本

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

Jeppesen/Boeing

– 航空コミュニティー に対するリアルタイム なオンライン情報 をサーブレットと

(32)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

Nextel

(およびその他多くの電話会社およびその他多くの電話会社およびその他多くの電話会社およびその他多くの電話会社)

– Java 対応携帯電話

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

NexaWeb

– システム管理コンソール:

Java GUI、サーバサイド Java, Java による XMLの

(33)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• エンターテイメント業界エンターテイメント業界エンターテイメント業界エンターテイメント業界

– Java を使用した Web サイト、

ネットワーキング、ポータブル機器

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

(34)

www.coreservlets.com

ビジネスにおける

ビジネスにおける

ビジネスにおける

ビジネスにおける

Java

の導入

の導入

の導入

の導入

• 大学の統合システム大学の統合システム大学の統合システム大学の統合システム

www.coreservlets.com

まとめ

まとめ

まとめ

まとめ

Java ((((Javaスクリプトではない!)は、以下スクリプトではない!)は、以下スクリプトではない!)は、以下スクリプトではない!)は、以下 を

を を を

サポートする完全な言語 サポートする完全な言語 サポートする完全な言語 サポートする完全な言語:

– Web で使用可能な Java プログラム (アプレッ

ト)

– デスクトップ Java プログラム

– サーバサイドJavaプログラム (servlets, JSP)

Java はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、Java 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで あれば

あれば あれば あれば

どこでも動作する どこでも動作する どこでも動作する どこでも動作する

Java 2 Platform はははは3種類ある種類ある種類ある種類ある: – Standard Edition

(35)

www.coreservlets.com カサレアル

カサレアルカサレアル

カサレアルServer Side Java 実践講座実践講座実践講座実践講座

EJB

Struts

コース紹介

コース紹介

コース紹介

コース紹介

現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 詳細は

詳細は 詳細は

詳細は www.casareal.co.jp !!!! Struts コースコースコースコース

Strutsフレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方

法についての解説。 法についての解説。 法についての解説。 法についての解説。

•商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースのStruts、、、、 Tomcat、、、、PostgreSQLを使用!を使用!を使用!を使用!

EJB コースコースコースコース

EJB を利用するを利用するを利用するを利用する Web サイト開発時に、サーブレット、サイト開発時に、サーブレット、サイト開発時に、サーブレット、サイト開発時に、サーブレット、JSP、、、、

EJBを最適に活用するを最適に活用するを最適に活用するを最適に活用するWebサイトシステムの設計を解説。サイトシステムの設計を解説。サイトシステムの設計を解説。サイトシステムの設計を解説。

•実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、DBを利用する演習を利用する演習を利用する演習を利用する演習 !

! ! !

Figure

Updating...

References