Java: ソフトウェア革 命 - Core...
Transcript of Java: ソフトウェア革 命 - Core...
© 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 プログラムプログラムプログラムプログラム• Q &&&& A
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 OfficeJava でででで 書かれた書かれた書かれた書かれた MS 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
JavaSource Code
Java Bytecode
Compiler
(javac)
Java Bytecode
Execution
JIT Compileror Interpreter
Compile Time Run Time
Java はクロス・プラットフォーはクロス・プラットフォーはクロス・プラットフォーはクロス・プラットフォームムムム?
• 実像実像実像実像: Java プログラムはマシン固有のバイトコプログラムはマシン固有のバイトコプログラムはマシン固有のバイトコプログラムはマシン固有のバイトコードにコンパイル可能ードにコンパイル可能ードにコンパイル可能ードにコンパイル可能
• 実像実像実像実像: ほとんどのオペレーティングシステムにほとんどのオペレーティングシステムにほとんどのオペレーティングシステムにほとんどのオペレーティングシステムにはははは Java 動作環境が備わっている動作環境が備わっている動作環境が備わっている動作環境が備わっている– 通常バンドルされている
(Solaris, MacOS, Linux, Windows, OS/2)
www.coreservlets.com
火星探査機のデータ・ビューア火星探査機のデータ・ビューア火星探査機のデータ・ビューア火星探査機のデータ・ビューア
www.coreservlets.com
Java はクロス・プラットフォーはクロス・プラットフォーはクロス・プラットフォーはクロス・プラットフォームムムム?
• 迷信迷信迷信迷信: パフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とパフォーマンスを悪化させずに安全性とマシンの独立性の達成が可能マシンの独立性の達成が可能マシンの独立性の達成が可能マシンの独立性の達成が可能– 既存のシステムは C++ よりも約 20% 遅い
– 次期リリースでそのギャップは減少、解消されると言われている
– 個人的には 10% 以上のギャップになると考えている
– 無償コンパイラよりも商用コンパイラの方が早い場合がある
• 迷信迷信迷信迷信: Java は解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)されは解釈(インタープリット)されているているているている– 初期リリースでは解釈されていた– 多くの“Just in Time” (JIT) コンパイラ
HotSpot と “ネイティブ”なコンパイラはそれ以上
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 と戦うのか、仲良くしマーケットを独占することで儲けるのかで迷っていた。しかし NETで再度 戦いに転じた
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 Library
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 よりも優れたセキュリティと移植性– 多くの 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– 結果
• Thanks for ordering 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: 業界への導入 業界への導入 業界への導入 業界への導入 Industry Adoption
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
Apptivity, NetDynamics, Sybase, Bluestone Saphire/Web など
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 の未来はまだ不明
• http://www.rtj.org を参照
• 訴訟の行方は?訴訟の行方は?訴訟の行方は?訴訟の行方は?
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
19
96
19
97
19
98
19
99
20
00 0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
1/9
6
5/9
6
9/9
6
1/9
7
5/9
7
Web Documents On-Line Java Programs On-Line
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 fumArg 0 is feeArg 1 is fieArg 2 is foeArg 3 is fum
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>...</BODY></HTML>
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></BODY></HTML>
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– 航空コミュニティーに対するリアルタイムなオンライン情報をサーブレットとJSP を使用して提供。
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
Enterprise 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を利用する演習を利用する演習を利用する演習を利用する演習!!!!
© 2003 Marty Hall, http://www.coreservlets.com
Q&A