Comments
Description
Transcript
Java - Coreservlets.com
Java: ソフトウェア革 命? Marty Hall http://www.coreservlets.com CasaReal, Inc. http://www.casareal.co.jp © 2003 Marty Hall, http://www.coreservlets.com アジェンダ • Java の迷信と実像 – – – – – • • • • • Java は Web が使用可能? Java は安全? Java はクロス・プラットフォーム? Java は簡単? Java は強力? 共通 Java プロトコル & パッケージ Java の未来 Java の実用例 サンプル Java プログラム Q&A www.coreservlets.com Java は Web が使用可能? が使用可能 • 実像: アプレット”を起 実像 Web ブラウザは Java “アプレット アプレット を起 動可能 – Web はドキュメントの配信と表示だけでなく、ソ フトウェアの配信と実行も可能 – インストールやアップデートが不要;ブックマー クするだけ – 大きく、複雑なアプレットはイントラネットに最 適。概して WWW ではなく、APL モデルに適し ている • 実像: 実像 Java のネットワークライブラリは使いや すい – 普通の人でもソケットプログラミングが可能 www.coreservlets.com 標準分散オブジェクトプロトコルと DBMS API ハッブル宇宙望遠鏡のモニタリング: ハッブル宇宙望遠鏡のモニタリング “NASA ゴダード宇宙研究所で最も成功した ソフトウェアプロジェク ト” www.coreservlets.com Java は Web が使用可能? が使用可能 • 迷信: 迷信 Java は Web 専用 – Java “アプレット” は Web ページ内で起動 – Java “アプリケーション”はスダンドアローンで起 動 – 現在の用途 (概算) • Client (アプレット): 5% • Desktop (アプリケーション): 45% • Server (サーブレット/JSP/EJB): 50% www.coreservlets.com Star Office Java で 書かれた 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 Java はクロス・プラットフォー ム? • 実像: 実像 Java プログラムはマシン固有のバイトコ ードにコンパイル可能 Java Source Code Compiler (javac) Java Bytecode Compile Time Java Bytecode JIT Compiler or Interpreter Execution Run Time • 実像: 実像 ほとんどのオペレーティングシステムに は Java 動作環境が備わっている – 通常バンドルされている (Solaris, MacOS, Linux, Windows, OS/2) www.coreservlets.com 火星探査機のデータ・ビューア www.coreservlets.com Java はクロス・プラットフォー ム? • 迷信: 迷信 パフォーマンスを悪化させずに安全性と マシンの独立性の達成が可能 – 既存のシステムは C++ よりも約 20% 遅い – 次期リリースでそのギャップは減少、解消される と言われている – 個人的には 10% 以上のギャップになると考えてい る – 無償コンパイラよりも商用コンパイラの方が早い 場合がある • 迷信: 迷信 Java は解釈(インタープリット)され ている – 初期リリースでは解釈されていた – 多くの“Just in Time” (JIT) コンパイラ www.coreservlets.com HotSpot と “ネイティブ”なコンパイラはそれ以上 Java はクロス・プラットフォー ム? • 実像: 実像 Java には移植できるグラフィック・ライブ ラリがある “OSネイティブな操作感(ルック・アンド・フィール) ネイティブな操作感(ルック・アンド・フィール)” ネイティブな操作感(ルック・アンド・フィール) -- Java 1.1 UI が OS への適合を制御する “プラッグ可能な操作感(ルック・アンド・フィール) プラッグ可能な操作感(ルック・アンド・フィール)” プラッグ可能な操作感(ルック・アンド・フィール) -- Java 2 が 見た目の変更を制御する • 迷信: 迷信 グラフィックライブラリには、大体のアプ リケーションで必要なものが揃っている AWT (Java 1.0 and 1.1) は力不足だったが、JFC/Swing (Java 2) はよ は力不足だったが、 り完全で、パワーがある 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 2 標準描画ライブラリ • 多くの新しい描画属性 – – – – 塗りつぶしパターンと画像 任意のフォント ペンの太さとパターン 色の混合規則と透過性 • 座標変換 – 浮動小数点の 座標システム – メモリ座標からスクリーン座標または プリンタ座標へのマッピング – アフィン変換:変換、スケール、 回転、ねじれ 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 の未来: の未来 パフォーマンスの改善 JHU/APL Information Retrieval Benchmark 250 200 150 100 50 0 1.1.3 1.1.5 1.2B2 1.2B3 1.2B4 www.coreservlets.com Java の未来: の未来 更なる成長 1,200,000 1,000,000,000 900,000,000 1,000,000 800,000,000 700,000,000 800,000 600,000,000 500,000,000 600,000 400,000,000 400,000 300,000,000 200,000,000 Web Documents On-Line 5/97 1/97 9/96 0 5/96 2000 1999 1998 1997 1996 0 1/96 200,000 100,000,000 Java Programs On-Line www.coreservlets.com Java の未来: の未来 より多くの仕事 • 不景気に関わらず、大量のソフトウェア開発を 行うほとんどの企業では、優良な Java 開発者 が不足している • IBM では2, 名以上のプロフェッショナル では ,500名以上のプロフェッショナル をJava製品開発に従事させている 製品開発に従事させている • JavaOne カンファレンスのビデオクリップの 背景に書かれているコード: if (you.canRead(this)) you.canGet(new Job(!problem)); www.coreservlets.com サンプル Java プログラ ム © 2003 Marty Hall, http://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 Arg 0 Arg 1 Arg 2 Arg 3 ShowArgs fee fie foe fum is fee is fie is foe 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 コース紹介 Struts コース •Strutsフレームワークのアーキテクチャー、動作原理、開発方 フレームワークのアーキテクチャー、動作原理、開発方 法についての解説。 •商用サイトでも多く利用されているオープンソースの 商用サイトでも多く利用されているオープンソースのStruts、 、 商用サイトでも多く利用されているオープンソースの Tomcat、 、PostgreSQLを使用! を使用! EJB コース •EJB を利用する Web サイト開発時に、サーブレット、JSP、 、 サイト開発時に、サーブレット、 EJBを最適に活用する を最適に活用するWebサイトシステムの設計を解説。 サイトシステムの設計を解説。 を最適に活用する •実開発で必須のアプリケーションサーバ、 実開発で必須のアプリケーションサーバ、DBを利用する演習 実開発で必須のアプリケーションサーバ、 を利用する演習 ! 現実的なカリキュラム、実践で即役立つ演習 詳細は www.casareal.co.jp ! www.coreservlets.com Q&A © 2003 Marty Hall, http://www.coreservlets.com