© 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 プログラムプログラムプログラムプログラム
www.coreservlets.com
Java
は
は
は
は
Web
が使用可能
が使用可能
が使用可能
が使用可能
?
• 実像実像実像実像: Web ブラウザはブラウザはブラウザはブラウザは Java “アプレットアプレットアプレットアプレット”を起を起を起を起 動可能
動可能 動可能 動可能
– Web はドキュメントの配信と表示だけでなく、ソ
フトウェアの配信と実行も可能
– インストールやアップデートが不要;ブックマー
クするだけ
– 大きく、複雑なアプレットはイントラネットに最
適。概して WWW ではなく、APL モデルに適し
ている
• 実像実像実像実像: Java のネットワークライブラリは使いやのネットワークライブラリは使いやのネットワークライブラリは使いやのネットワークライブラリは使いや すい
すい すい すい
– 普通の人でもソケットプログラミングが可能
標準分散オブジェクトプロトコルと DBMS API
www.coreservlets.com
ハッブル宇宙望遠鏡のモニタリング
ハッブル宇宙望遠鏡のモニタリング
ハッブル宇宙望遠鏡のモニタリング
ハッブル宇宙望遠鏡のモニタリング
:
“NASA ゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功したゴダード宇宙研究所で最も成功した
ソフトウェアプロジェク ソフトウェアプロジェクソフトウェアプロジェク ソフトウェアプロジェク ト
www.coreservlets.com
Java
は
は
は
は
Web
が使用可能
が使用可能
が使用可能
が使用可能
?
• 迷信迷信迷信迷信: Java はははは Web 専用専用専用専用
– Java “アプレット” は Web ページ内で起動
– Java “アプリケーション”はスダンドアローンで起
動
– 現在の用途 (概算)
• Client (アプレット): 5%
• Desktop (アプリケーション): 45%
• Server (サーブレット/JSP/EJB): 50%
www.coreservlets.com
Star Office
www.coreservlets.com
Java
は安全
は安全
は安全
は安全
?
• JAVA: Just Another Virus Architecture?
www.coreservlets.com
Java
は安全
は安全
は安全
は安全
?
• 実像実像実像実像: 許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限許容可能なオペレーションに対する制限 は可能
は可能 は可能 は可能
– メモリーを(直接または間接的にも) “生” での操
作しない。
• よって、禁止操作の発見が容易。
– アプレットはデフォルトで以下のことが禁止され
ている:
• ローカルディスクの読み込み • ローカルディスクへの書き込み • ローカルプログラムの実行
• HTTP サーバ以外へのネットワーク接続
• ユーザのプライベート情報(ユーザ名、ディレクト
リ、OS パッチレベル、インストールされたアプリケ
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 動作環境が備わっている動作環境が備わっている動作環境が備わっている動作環境が備わっている
– 通常バンドルされている
www.coreservlets.com
火星探査機のデータ・ビューア
火星探査機のデータ・ビューア
火星探査機のデータ・ビューア
火星探査機のデータ・ビューア
www.coreservlets.com
Java
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
ム
ム
ム
ム
?
• 迷信迷信迷信迷信: パフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性と
マシンの独立性の達成が可能 マシンの独立性の達成が可能 マシンの独立性の達成が可能 マシンの独立性の達成が可能
– 既存のシステムは C++ よりも約 20% 遅い
– 次期リリースでそのギャップは減少、解消される
と言われている
– 個人的には 10% 以上のギャップになると考えてい
る
– 無償コンパイラよりも商用コンパイラの方が早い
場合がある
• 迷信迷信迷信迷信: Java は解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)され ている
ている ている ている
– 初期リリースでは解釈されていた – 多くの“Just in Time” (JIT) コンパイラ
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
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
ム
ム
ム
ム
?
• 真実真実真実真実: (意見意見意見意見) ネイティブな操作感(ルック・アネイティブな操作感(ルック・アネイティブな操作感(ルック・アネイティブな操作感(ルック・ア ンド・フィール)の選択は正しかった
www.coreservlets.com
Java Foundation Classes (JFC)
によりグラフィックスが格段に向
によりグラフィックスが格段に向
によりグラフィックスが格段に向
によりグラフィックスが格段に向
上
上
上
上
• 更なる更なる更なる更なるGUI の制御の制御の制御の制御
• 更なるカスタマイズ化が可能更なるカスタマイズ化が可能更なるカスタマイズ化が可能更なるカスタマイズ化が可能 • プラグ可能な操作性プラグ可能な操作性プラグ可能な操作性プラグ可能な操作性
• ネイティブなフォントネイティブなフォントネイティブなフォントネイティブなフォント • より豊富なより豊富なより豊富なより豊富な
描画操作 描画操作 描画操作 描画操作
www.coreservlets.com
Java
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
はクロス・プラットフォー
ム
ム
ム
ム
?
• 迷信迷信迷信迷信: Write Once Run Anywhere
– クロス・プラットフォームなコードは可能だが、
使用する全てのプラットフォームでテストする必 要がある
• Java アプリケーションはローカルコードで実行可能
• グラフィックライブラリは異なるプラットフォーム
では若干異なる振舞いをする
• スレッドスケジューラの振舞いは、緩くしか定義さ
れていない
• 迷信迷信迷信迷信: Java がががが Microsoft を倒すを倒すを倒すを倒す
– 逆(Microsoft が Java を今すぐ倒す)ような危険
性はなくなった
– Microsoft は Java と戦うのか、仲良くしマーケッ
www.coreservlets.com
Sun
のスローガン
のスローガン
のスローガン
のスローガン
:
“100% Pure Java”
パットを見てください。
パットはプログラムを一度だけ書きました 全てのプラットフォームで動作が可能です
プログラムを書くのに、
パットは100% Pure Java を使いました。
動けプログラム、動け!
www.coreservlets.com
Java
は簡単
は簡単
は簡単
は簡単
?
• 実像実像実像実像: Java は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単は幾つかの言語の機能を非常に簡単 にする
にする にする にする
– Java は自動メモリ管理機能を持つ
• Windows はゴミを捨ててくれますか?
• ぶら下がっているポインタがない。メモリーリーク
がない。
– Java はポインタ処理を簡単にする
• 明示的な参照/参照渡しの操作がない – メイクファイルがいらない
– ヘッダーファイルがいらない – C++ の構文を合理化
– C# は Java と同等、ただし言語の核心に関して言
www.coreservlets.com
Java
による迅速な
による迅速な
による迅速な
による迅速な
アプリケーション開発
アプリケーション開発
アプリケーション開発
アプリケーション開発
– 数ギガバイトのテキストコーパスの情報回収 (APL RTDC)
– 分散シミュレーションの (APL STD)
www.coreservlets.com
Java
は簡単
は簡単
は簡単
は簡単
?
• 迷信迷信迷信迷信: Java ののののプログラミングプログラミングプログラミングプログラミングは簡単は簡単は簡単は簡単
– プログラミングは常に難しい
• Java は HTML ではない;
JavaScript に少し似ているだけ
– プログラマは大抵、複雑さを追求してしまう
• マルチスレッド、およびネットワークプログラミン
www.coreservlets.com
Java
は強力
は強力
は強力
は強力
?
• 実像実像実像実像: Java は豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えていは豊富な標準ライブラリを備えてい る
る る る
– ネットワーク
– スレッド (軽いプロセス)
– 分散オブジェクト – データベースアクセス
– グラフィックス:GUI 制御と描画
– データ構造ライブラリ
– 任意の正確積分および固定小数点式の算術 – 電子署名
– シリアライズ化 (データ構造の送信/再構築)
– ファイルとストリームの圧縮
www.coreservlets.com
MEL - Master Environmental
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++ を頑強で
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 構文の標準化」ではない構文の標準化」ではない構文の標準化」ではない構文の標準化」ではない – クエリーは簡単なストリング
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 よりも優れたセキュリティと移植性
www.coreservlets.com
Java
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
:
Swing
• Java 2 標準標準標準標準 GUI 制御制御制御制御
• より多くの組み込まれた制御より多くの組み込まれた制御より多くの組み込まれた制御より多くの組み込まれた制御
• より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能より柔軟で、カスタマイズ化が可能
• 商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む商用アプリケーション向けの機能を多く含む
– ツールチップ、タブ枠、
オンラインヘルプ、HTMLサポート、
ドック可能なツールバー、
マルチ-ドキュメントインタフェースなど
• 起動時に操作性(ルック・起動時に操作性(ルック・起動時に操作性(ルック・起動時に操作性(ルック・ アンド・フィール)が変わる アンド・フィール)が変わる アンド・フィール)が変わる アンド・フィール)が変わる 場合がある
場合がある 場合がある 場合がある
www.coreservlets.com
Java
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
:
Java 2D
• Java 2222 標準描画ライブラリ標準描画ライブラリ標準描画ライブラリ標準描画ライブラリ
• 多くの新しい描画属性多くの新しい描画属性多くの新しい描画属性多くの新しい描画属性
– 塗りつぶしパターンと画像 – 任意のフォント
– ペンの太さとパターン – 色の混合規則と透過性
• 座標変換 座標変換 座標変換 座標変換
– 浮動小数点の 座標システム
– メモリ座標からスクリーン座標または プリンタ座標へのマッピング
www.coreservlets.com
Java
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
:
Java 3D
• Java の標準拡張機能の標準拡張機能の標準拡張機能の標準拡張機能
– Java 2D のように、Java 言語の”コア”ではない
• プラットフォームにより、プラットフォームにより、プラットフォームにより、プラットフォームにより、Direct3D、、、、またはまたはまたはまたは OpenGL 上に構築上に構築上に構築上に構築
• Scene-graph に基づいたモデル。に基づいたモデル。に基づいたモデル。に基づいたモデル。
リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない リアルタイムレンダリング向けではない
www.coreservlets.com
Java
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
パッケージとプロトコル
:
Servlets
• クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込クライアントが明示的に送信したデータを読み込
む む む む
(フォームデータフォームデータフォームデータフォームデータ)
• クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込クライアントが暗示的に送信したデータを読み込
む む む む
(リクエストヘッダリクエストヘッダリクエストヘッダリクエストヘッダ)
• 結果の生成結果の生成結果の生成結果の生成
• 明示的データをクライアントに返す明示的データをクライアントに返す明示的データをクライアントに返す明示的データをクライアントに返す(HTML)
• 暗示的データをクライアントに返す暗示的データをクライアントに返す暗示的データをクライアントに返す暗示的データをクライアントに返す
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
– 結果
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:
業界への導入
業界への導入
業界への導入
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
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 の未来は
まだ不明
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
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
プログラ
プログラ
プログラ
プログラ
ム
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
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>
...
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");
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>
www.coreservlets.com
サーバサイド
サーバサイド
サーバサイド
サーバサイド
Java
プログラム
プログラム
プログラム
プログラム
(JSP):
結果
結果
結果
結果
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• フィナンシャルサービフィナンシャルサービフィナンシャルサービフィナンシャルサービ
ス ス ス
ス: Charles Schwab
– 1999年に、拡張性、
開発効率、およびビ ジネスエンタープラ イズ全体におけるコ ードの再利用性と共 有性を提供する Java
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• フィナンシャルサービスフィナンシャルサービスフィナンシャルサービスフィナンシャルサービス:
松井証券 松井証券松井証券 松井証券
– オンライン・トレーディン グ
システム全てをJavaで構築
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• フィナンシャルサービスフィナンシャルサービスフィナンシャルサービスフィナンシャルサービス: NASDAQ
– 多くの市場分析ツール は Java Swing や
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• WashingtonPost.com
– カスタマイズ化された
オンライン新聞
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• ユナイテッド航空ユナイテッド航空ユナイテッド航空ユナイテッド航空
– ユナイテッド航空にとっ
て情報は命です。お客様 、地上要員、ゲート要員 、添乗員、操縦士、オペ レーションチーム、管理 チームなどがそれぞれの 役割のニーズに合わせて 、一刻を争うクリティカ ルなデータを、カスタマ イズしています。Java
アプリケーションサーバ であるBEAにより、必要
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• Visa
– Java アプリケーション
サーバ上にトランザクション システムを構築
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• オンライン・バンキングオンライン・バンキングオンライン・バンキングオンライン・バンキング
– 米国インターネット・バンキング・システム大手
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• International Children's Digital Library
– アプレットを使用するインタラクティブな本
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• Jeppesen/Boeing
– 航空コミュニティー に対するリアルタイム なオンライン情報 をサーブレットと
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• Nextel
(およびその他多くの電話会社およびその他多くの電話会社およびその他多くの電話会社およびその他多くの電話会社)
– Java 対応携帯電話
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• NexaWeb
– システム管理コンソール:
Java GUI、サーバサイド Java, Java による XMLの
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• エンターテイメント業界エンターテイメント業界エンターテイメント業界エンターテイメント業界
– Java を使用した Web サイト、
ネットワーキング、ポータブル機器
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
www.coreservlets.com
ビジネスにおける
ビジネスにおける
ビジネスにおける
ビジネスにおける
Java
の導入
の導入
の導入
の導入
• 大学の統合システム大学の統合システム大学の統合システム大学の統合システム
www.coreservlets.com
まとめ
まとめ
まとめ
まとめ
• Java ((((Javaスクリプトではない!)は、以下スクリプトではない!)は、以下スクリプトではない!)は、以下スクリプトではない!)は、以下 を
を を を
サポートする完全な言語 サポートする完全な言語 サポートする完全な言語 サポートする完全な言語:
– Web で使用可能な Java プログラム (アプレッ
ト)
– デスクトップ Java プログラム
– サーバサイドJavaプログラム (servlets, JSP)
• Java はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、はバイトコードにコンパイルされ、Java 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで 仮想マシンをサポートするプラットフォームで あれば
あれば あれば あれば
どこでも動作する どこでも動作する どこでも動作する どこでも動作する
• Java 2 Platform はははは3種類ある種類ある種類ある種類ある: – Standard Edition
www.coreservlets.com カサレアル
カサレアルカサレアル
カサレアルServer Side Java 実践講座実践講座実践講座実践講座
EJB
、
、
、
、
Struts
コース紹介
コース紹介
コース紹介
コース紹介
現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 現実的なカリキュラム、実践で即役立つ演習 詳細は
詳細は 詳細は
詳細は www.casareal.co.jp !!!! Struts コースコースコースコース
•Strutsフレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方フレームワークのアーキテクチャー、動作原理、開発方
法についての解説。 法についての解説。 法についての解説。 法についての解説。
•商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースの商用サイトでも多く利用されているオープンソースのStruts、、、、 Tomcat、、、、PostgreSQLを使用!を使用!を使用!を使用!
EJB コースコースコースコース
•EJB を利用するを利用するを利用するを利用する Web サイト開発時に、サーブレット、サイト開発時に、サーブレット、サイト開発時に、サーブレット、サイト開発時に、サーブレット、JSP、、、、
EJBを最適に活用するを最適に活用するを最適に活用するを最適に活用するWebサイトシステムの設計を解説。サイトシステムの設計を解説。サイトシステムの設計を解説。サイトシステムの設計を解説。
•実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、実開発で必須のアプリケーションサーバ、DBを利用する演習を利用する演習を利用する演習を利用する演習 !
! ! !