クラス - みる会図書館


検索対象: UNIX MAGAZINE 1998年6月号
28件見つかりました。

1. UNIX MAGAZINE 1998年6月号

」 ava プログラミング・ノート リスト 5 タイムゾーンの定義 public class tz3 { public static void main(String ロ args) { int msPerH = 60 * 60 * 1000 ; SimpIeTimeZone tz = new SimpIeTimeZone ( 9 * msPerH, "JST" ) ; System. out . println(" タイムゾーン ID : " + tz ・ getID()); System. out . println(" 夏時間 : " + (tz. useDay1ightTime()? " 有 " : " 無 " ) ) ; System. out . println(" 時差 : " + (float)tz. getRawOffset ( ) / (f10at)msPerH) ; int int int int int 夏時間の開始時刻 , 夏時間の終了月 , 夏時間の終了週 , 夏時間の終了曜日 , 夏時間の終了時刻 ) リスト 5 のプログラムは、日本標準時 = を SimpleTime- Zone クラスを使って定義する例です。 タイムゾーン ID 一覧 Java て利用できるタイムゾーン ID を表 2 に示します。 サポートされているタイムゾーン ID の不鶤頁は、 JDK のバージョンによって異なります。同じタイムゾーン ID でも、 JDK のバージョンによって実際の定義が違うこと があります。麒点の実装ではすべての夏日判Ⅲこ完全に対 応できていないので、本来は夏時間カ硬われているタイム ゾーンであっても、設定されていない場合があります。 日付と時間 UNIX MAGAZINE 1998.6 能を java. text. DateFormat クラスで実装しなおしまし dar クラスで、 3 の日付・日該リの角財斤とフォーマットの機 月、日、時、分、秒の相変換の機能を java. util. CaIen- 1.1 ではクラス本の国際化に合わせて、 2 の時刻と年、 ず、特定のル或しか正しく処理できなかったので、 JDK しかし、この時点の Date クラスは国際化されておら 3. 日付・時刻の角斤とフォーマット 2. 時刻と年、月、日、時、分、秒の柤変換 1. 時刻を示すオプジェクト く分けて次の 3 つの役目がありました。 クラスを使用していました。この Date クラスには、大き JDK 1.1 以前は、日イ寸ペ寺 = 間の処理に java. util. Date Java. util. Date クラス リスト 6 不なプログラム例 xmport java. util . Date; public class date { 75 dar クラスを使います。 CaIendar クラスでは、 Date オ Java で日付や時間を処理するには、 java. util ℃ alen- java. util. Calendar クラス スについては、いすれあらためて説明します。 り、独自に定義することができます。 DateFormat クラ 付や時間を扱えるだけでなく、フォーマットを変更した ( リスト 7 ) 。 DateFormat クラスは、さまざまな国の日 このような場合は、 DateFormat クラスを使います る文字列のフォーマットも変更できません。 していないので、各け或に合わせた表示はできす、得られ されているメソッドです。このメソッドは国際化には対応 まざまなオプジェクトを文字列表現に変換するために用意 しよう。 toString() は、本来はテンヾッグなどの目的で、さ クラスの toString() を時刻表示に利用しないようにしま たとえば、リスト 6 に示すプログラムのように、 Date 彳難リ以外には使わないように注意してください。 く変化したので、却リを示すオプジェクトとしての このように、 JDK 1.1 では Date クラスの役目が大き に大皜に書き直されています。 クラスと DateFormat クラスを呼び出して重川乍するよう は互換匪糸財寺のため残されていますが、内部は Calendar ぎり使わないように旦暠されています。これらのメソッド ドには、、@deprecated" タグカ甘旨定さ今後はできるか た。現在、これらの Date クラスの機能にするメソッ System. out . println(). toString() ) ; Date d = new Date(); public static void main(String ロ args) {

2. UNIX MAGAZINE 1998年6月号

ServIet たとえは、クライアントから Servlet に要求があった 場合は、次のように衄乍します。 1. アクセプタがクライアントからのリクエストを受け取 る。 2. Servlet が Servlet Engine 上にロードされていない場 合は、ローダか実行に必要な Java バイトコードをロー ドしてからインスタンスを生成する。 3. スレッドプールからスレッドを 1 っ取り出し、 Servlet のインスタンスに割り当てる。 4. そのスレッドで Servlet のメソッドを実行する。 いったん作成された Servlet のインスタンスは、明示 的にアンロードされないかぎり Servlet Engine 上に常駐 します。 Java プログラムの実行を高速化するために、実 行時にバイトコードからネイテイプコードにコンパイルす る JIT (Just-11 ト Time) コンパイラが多く使われること もあり、 2 回目以降のリクエストでは Ser ⅵ et のロードや コンパイルのオーバーヘッドがなく、 1 回目より高速に処 理できます。 通常、 Applet はセキュリティ上の理由から、ダウン ロード元の web サーバーか川乍しているマシン上のアプ リケーションやサーバーとしかコネクションを張れませ ん。このため、別のマシン上のサーバーと接続するときは、 Applet のための中間サーバーを Web サーバーと同一の マシン上に置き、中間サーバーとそのさきのサーバー間で もう 1 つのコネクションを張るという多層モデルを構成 します。中間サーバーを ServIet にすると、このような多 層モデルを用いたシステムでは、別のサーバーへの接続を ServIet のメソッド呼出しとは無関係に糸できるので、 クライアントからのリクエストごとにコネクションを張り なおすオーバーヘッドを削減できます。 Servlet の再ロード 通常、 Java アプリケーションではいったんロードされ たクラスを更新する際にアプリケーションを再起動しま す。しかし、 servlet Engine は Web サーバーとともに 動くアプリケーションなので、ロードされている Servlet のクラスを更新するたびにすべてを再動するのはリ巨見実 的です。 そこで、クラスが変更されたときに、該当する旧いク 60 ラス定義を 1 回アンロードしてから新しいクラスの定義 を再ロードできるように、クラスのアンロード機能をも つ Servlet 専用のクラスローダが用意されています。 のクラスローダがバイトコードの作成日時をチェックし、 servlet の更新時に自動的に再ロードできるようになっ ています。この機能は、 1997 年 3 月にリリースされた JavaServer Beta から導入されました。 ただし、すべての ServIet か再ロードできるわけではあ りません。サーバーの起動こロードされる Servlet につ いては、このクラスローダカイ吏われないため、クラスファ イルが更新されても再ロードできません。 ServIet Chaining servlet Chaining とは、あらかじめ決められだ側で ServIet を連勺に使用するガ去です。フィルタリングと も呼はれます。たとえは、 FileServlet を呼ぶ前に、はか の servlet を使って別の処理を加えたい場合などに使い ます。 servlet Chaining には、次の 2 つのカ去があります。 1 つ目は、 Web サーノヾーが ServIet Chaining をお こなうように設定するカ 1 去です。この方法では、 Servlet Eng ⅲ e のクラスローダによってクラスがロードされるの で、クラスファイルか史新されたときに再ロードされます し、 servlet の組合をを簡単に変更することもできます。 Java Web server では、 rules. properties もしくは mimeservlets. properties という Java のフ。ロノヾティを 用いて ServIet の系目 . 合ぜを指定します。 前者は、 Servlet の工イリアスを指定するプロバティで す。複数の ServIet を組み合わせて使うときは、 く脚叩観ん〉 = く se 理 let - れ佖 me の , く se " 兄 e 仁れ佖 me2 〉 という書式で指定します。たとえは、 /mysample=myfilter , file と記述した場合、 http://host:port/mysample にアク セスすると、 myfilter 、 file3 の順で実行されます。 serv- let の糸目 . 合せを変更するときは、く servlet-name 〉を書き 換えます (Java Web Server ではプラウサから変更でき ます ) 。 3 file は FiIeServIet の工イリアス名てす。 UNIX MAGAZINE 1998.6

3. UNIX MAGAZINE 1998年6月号

CAFE BABE Ja a の国際化と日本語処理 ( 3 ) Java プログラミング・ノート 3 風間一洋 タイムゾーン 72 saving) もサポートされています。 このはかに夏 (summer time 、または daylight アルファベットて指定して呼び出すことができます。 います。これらは、 JST や GMT などの 3 文字の大文字 TimeZone クラスには多くのタイムゾーンが定義されて できます。タイムゾーン ID は Str ⅲ g オプジェクトで、 TimeZone オプジェクトは、タイムゾーン ID て識 . 別 毎年、 12 月か 6 月または 3 月か 9 月に閏移があります。 文勺な観測にもとづいています。そのため、 UTC では セシウム原 - 刊 fr を基準としているのに対して、 UT は天 は UT (Universal Time : 世界時 ) と同等で、 UTC が UTC ではなく GMT として実装されています。 GMT 位で f 尉寺しています。ただし、現在の Java の実装では、 Coordinated : 協定世界時 ) からのオフセットをミリ秒単 スのインスタンスとして扱わオ蹊 UTC (Universal Time Java では、タイムゾーンは java. util.TimeZone クラ TimeZone クラス のタイムゾーンが使用されています。 す。一方、米国は国土か東西に広く伸びているため、複数 カ硬われていて、 JST は GMT より 9 時間先行していま たとえば日本の場合は、日本全土で JST ( 日本県 られています。 す。ほは鬢泉に沿って、 15 度ごとに 24 の時間帯に分け リニッジオ剽からの時差を用いて標を決めていま おける時刻である GMT (Greenwich Mean Time : グ 間帯です。世界の各或では、英国のグリニッジ天文台に タイムゾーン (timezone) とは、同じ標 ~ 寺を用いる時 表 1 タイムゾーン鏈のシステム・プロバティ プロバティ名 user. timezone ユーザーが一屯用しているタイムゾーン ID TimeZone クラスは抽象クラスであり、実際の処理は Factory Method ノヾターンを用いて、そのサプクラスで ある java. util.SimpleTimeZone クラスで定義されてい ます。夏時間の処理は、 SimpIeTimeZone クラスて夫現 されています。 デフォルト・タイムゾーン Java では、さまざまなタイムゾーンがサポートされて います。たとえは、 java. util.CaIendar クラスとそのサプ クラス、 java. util.Date クラス、 java. text. DateFormat クラスに、タイムゾーン・センシテイプなメソッドカ唸ま れています。しかし、簡単なアプリケーションを書くのに もいちいちタイムゾーンを指定するのでは面倒です。そこ で、プログラマーの負担を軽くするために、デフォルト・ タイムゾーンが定義されています。タイムゾーンを指定し なけれは、このデフォルトの設定力イ吏われます。 プラットホーム側ですでにタイムゾーンか設定されてい れば、 VM 起重加に表 1 のシステム・プロバテイか疋 されます。たとえは、プラットホーム側で JST か設定さ れている場合は、 Java のデフォルト・ロケールは JST に なります。どのようなユーサー竟においても、プログラ ムか竟に応したタイムゾーンて動くようにするには、で きるかぎりデフォルト値を使用するほうがよいでしよう。 これらのシステム・プロバティを知るためには、リスト 1 のようなプログラムを作成しておくとイリです。実行す ると、以下のようにすべてのシステム・プロバテイか画面 に表示されます。 UNIX MAGAZINE 1998.6

4. UNIX MAGAZINE 1998年6月号

$ ⅵ e Java のサーバー技術 ー原田洋子 図 1 Applet の竟 ServIet とは何か ダウンロード Applet Web サーバー Applet Java Virtual Machine Web ブラウザ クライアント Java といえば、すぐに Applet を思い浮カヾる人が多 いのではないでしようか。 AppIet はクライアント側で動 きますが、 ServIet はサーバー側で動くプログラム・モジ ュールです。ここで、、プログラム・モジュール " と書いた 図 2 Servlet の竟 のは、 Servlet も Applet と同様に単豸虫では動かないプロ Web サーバー グラムだからです。 Servlet Applet の場合は、 HTML ファイルにアクセスしたと きに、ファイルに言当された指定にもとづいて必要なクラ スファイルが、 Veb サーバーからプラウサ側の Java VM (Virtual Machine) 上にロードさ起動します ( 図 1 ) 。 これとは逆に、 Servlet の場合には、 Web サーバーか起動 時もしくは Servlet や Servlet カ甘旨定されている HTML ファイルの URL にアクセスしたときに、必要なクラス ファイルが Web サーバー側の Java VM 上にロードさ れてから起動します ( 図 2 ) 。 す。 Servlet API は、 HTTP にかぎらす、さまざまな Java プログラミングの観点からみると、 ServIet は ネットワーク・サーピスに対応できるように設計されて Javax. servlet. Servlet インターフェイスを実装している います。現時点でサポートされているのは HTTP だけ クラス」と定義することができます。 ServIet をプログラ ですが、新たなプロトコルに対応させたい場合は、 javax ・ ミングするための API が、、 Servlet API" です。 javax. servlet. http ノヾッケージと同様に、新しいノヾッケージを servlet. Servlet は、この Servlet API のなかで定義さ 追加します。 れています。 機育顎勺な面からみると、 ServIet はサーバーの機能を実 Servlet API のパッケージ構成とおもなクラスを表 1 現する手段といえます。 ServIet は CGI 的に使われるケ に示します。 ースが多いのですが、 HTML ページの重加勺な生成、 SSI Servlet API には、 Servlet の重川乍とーイ勺な通信につ (Server Side lnclude) 、フォームの処理、 URL リダイ いて定義したクラス君第である javax. servlet と、 HTTP レクション、 HTTP Cookie 、セッション管理など、い に依存した通信について定義したクラス群である javax ままで CGI て夫現されていた機能は ServIet でより効率 . servlet. http の 2 種類のパッケージが用意されていま 的に実現できます。さらに、 CGI 相当の機能を実装する PULL Servlet PULL GET Web プラウザ クライアント Servlet Servlet Java Virtual Machine Servlet Engine Web サーバー 57 UNIX MAGAZINE 1998.6

5. UNIX MAGAZINE 1998年6月号

リ N Ⅸサーパ・ワークステーション用メモリ テスクトップからサーバまで低価格・高品質実績と信頼のメモリ、キングストン ■ライフタイム製品保証 : 全製品ライフタイム保証により導入後も安心してご使用いただけます。お客様がご使用になら れる限り障害発生時には無償で交換・修理対応させて頂きますので一切の追加保守投資が不要です ■ 100 % 互換を保証 : キングストンでは全製品実機でのテストにより各コンピュータの微妙なシステム仕様の違いに合わ せた設計を行っています。また、全ての製品にコンピュータメーカの AVL に合ったファーストクラスのコンポーネントを選定 使用しており、認定した全ての DRAM でモジュールのテストを行います。もちろん対象となるコンピュータシステムにおい ても考えられる全てのコンビネーションでテストを行っているためシステム搭載時に最大限の性能を発揮する 1 圓 % 互換 メモリのご提供が可能になっています ・品質・信頼性を追求 : マイクロプロセッサーの高速化にともないメモリもシンクロナス DRAM (SDRAM) 等の最新テク ノロジーを用いたものが主流になっています。 SDRAM ではデータ I/O が CPU クロックと同期をとって行われる為、メモリモ シュール内のタイミングのずれ、信号反射、クロストークが今まで以上に問題になります。キングストンはその最新設計技 術により配線、配線長を最適化し厳格なデサインコントロールを行っています。また自社開発テストプログラムおよびカス タムテスターを用いた高負荷試験を実施しサーバアプリケーションに安心して使用出来るメモリモジュールをご提供して おります。 1994 年には業界で逸早ぐ S09001 の認証を取得し品質管理においても万全の体制を築いています ■豊富なラインナップ : NT ワークステーションからデスクトップ・ハイエンド UN Ⅸサーバまで殆ど全てのシステムに対応。そ の数は PC 、プリンタ、ルータ用も含め 2 圓 0 種類を超え圧倒的な製品ラインナップを取り揃えています。もちろん新機種 にもいちはやく対応したメモリをお届けしております。 ■サホートサ - ビス : 日商工レクトロニクスは、キングストン・テクノロジー社のローカルバートナーとしてワークステーションメ モリの国内リリース、製品評価から確かなサポートサービスまでを一貫して実施しております シリコングラフィックス Origin2()()/20()(),WebFORCE Origin2 開 / 2000 対応 Onyx2 ( ReaIity,InfiniteReaIity,RealityMonster) 対応 KSG - OR 給 / 512 512MB キット KSG - OR ℃ / 128 128MB キット KSG-ORlG/64 図 MB キット サン・マイクロシステムズ Ultra Ente 印 rise3 0 / 40 ( 用 / 5000 / 6000 対応 KTS-ETPS/1024 IGB キット KTS-ETPS/256 256MB キット UItra Enterprise450 対応 KTS7001 / 512 512MB キット KTS7001 / 256 256MB キット ヒューレット・バッカード D クラスエンタープライズサーノヾ対応 KTH-DSVR/512 512MB キット KTH-DSVR/256 256MB キット K クラスエンタープライズサーノヾ対応 KTH-KSVR/512 512MB キット KTH-KSVR/256 256M B キット 豸をゞ鬱 代表対応ワークステーション・サーバ UNIX サーバ UItra Enterprise1 / 2150 / 450 UItra Ente 「 p ⅱ Se3000 / 4000 / 5 0 / 6000 SPARCserver1000 SPARCcenter2000 RS6000 POWERserver E20 / 30 , F30 / 40 / 50 , H10 J30 / 40 , G30 / 40 R20 / 24 / 30 / 40 300 / 500 / 900 シリーズ Origin200/2000,Onyx2 02,OCTANE ChaIIenge,POWER Challenge INDY Onyx,POWER Onyx Indig02,POWER Indig02 AIphaServer300 シリーズ A ゆ haS ね ti0n200 / 255 シリーズ AIphaServe 「 400 シリーズ AlphaStation500 シリーズ AIphaServer800 シリーズ AIphaStation600 シリーズ AIphaServer1000 Ⅳ 2000 Persnal Workstation au シリーズ D クラスエンタープライズサーバ Visualize ワークステーション K クラスエンタープライズサーバ B クラス , C クラス , J クラス シリーズ 800 日 G / H クラスサーバ シリーズ 7 ワークステーション 製品等の固有名詞は各社の商標または登録商標です IJN Ⅸワークステーション IJ a5 / 10 U ⅳ al / 230 / 60 SPARCstation1/2/4/5 SPARCstation10/20 RS6000 POWERstation 43P 140 / 240 , 43P 100 / 120 / 133 250 , 25T , 41 T ′ , 42T / W 3AT,3BT,3CT NT ワークステー ンヨン 0 SUN 用メモリ KTS シリーズ 旧 M 用メモリ KTM シリーズ S 用メモリ KSG シリーズ ズ Personal Workstation i シリー DEC 用メモリ Personal Workstation a シリ ーズ KTV シリーズ KAYAK XA シリーズ ズ KAYAK XIJ シリー KAYAK XW シリーズ HP 用メモリ KTH シリーズ URL=http://www.nissho-ele-ws.com 日商工レクトロニクス株式会社 URL=http://www.kingston.com ワークステーション事業部 Kingston ビジネスグループ 〒 104- 44 東京都中央区築地 7-3-1 ・ TEL : 03 ( 3544 ) 8247 ( ダイヤルイン ) ・ FAX : 03 ( 3546 ) 6 5 資料請求 No. 021

6. UNIX MAGAZINE 1998年6月号

ServIet 表 1 Servlet API のパッケージとおもなクラス クラス / インターフェイス名 機能 Javax ・ servlet ′ヾッケージ このインターフェイスはかならす実装しなければいけない。生成・重川い消滅に必要なメソッ Servlet ドカ症義されている 特定のプロトコルに依存しない汎用のメソッドを用いて Servlet を実装するためのクラス GenericServlet クライアントからデータを受信するためのインターフェイス ServIet Request クライアントに MIME 形式のデータを送信するためのインターフェイス Servlet Response Javax. servlet. http / ヾッケージ HTTP を処理する ServIet を作成するためのクラス HttpServIet HTTP および HTTPS 上で Cookie を扱うためのクラス Cookie HTTP でクライアントのデータを受信するためのインターフェイス (HTTP 特有のヘッ HttpServIetRequest ダも処理する ) HTTP でクライアントにデータを送信するためのインターフェイス (HTTP 特有のヘッ HttpServletResponse ダも処理する ) せん。 Java Web Server などの Java で実装されてい だけでなく、 Apache のモジュールのように、 ServIet を るサーバーでは、サーバーカ吶部て利用しているクラスを 利用してサーバー自身の機能を実装できます。たとえば、 Ser ⅵ et からも使えることがあります。しかし、このよう JavaSoft からリリースされている Java Web Server で な畤定のサーバー依存の機能を使用していない Servlet な ーとしてのすべての機能が Servlet で実 は、 Web サー らは、 Windows 95 - ーヒの Java Web Server でも、 So- 現されています。 Java Web Server のコア部分は Serv- laris 2 上の Servlet Engine を組み込んだ Apache でも let を動作させる機能をもつサーバーだけです。そして、 重川乍します。 このコアサーバー上で、指定された URL のファイルを送 信する FileServIet 、 CGI を実行する CgiServlet 、 SSI ーにアクセスするための JDBC さらに、 SQL サー を実現するための SSIncludeServlet などのさまざまな (Java Database Connectivity) など、 Java には豊富 Servlet を重川させることで Web サーバーの機能を実現 な API が用意されているので、複数の開発竟を使い分 しています。 Java Web Server については、別の記事国 けすに Java だけでアプリケーションカ鯛発できます。 を参考にしてください 1 もう 1 つの利点は、マルチスレッド処理を前提に言 - されていることです。このため、 Servlet は複数のプロセ ServIet の利点 スを起重丿ける CGI よりはるかに小さなコストでプログラ ムカ起動でき、しかも複数のリクエストを同時に受け付け ServIet にはいくつかの利点がありますが、とくに大き た場合のスケジューリングも軽くなります。 なものは次の 2 つです。 次の「動作メカニズム」の節で説明しますが、 ServIet ます、、、 Java 言語で記述できる " 点が挙げられます。 はマルチスレッド・モデルを用いています。 ServIet を使 衄はオプジェクト指向、マルチスレッド処理、 Java ロロロ、 うことで、マルチスレッド化された効率のよいプログラム ガべージ・コレクションなど、さまざまなソフトウェア技 を簡単に書くことかできます。 術の成果を採り入れています。しかも、既存のプログラミ ング言言韶 ) 長所噬可斤を徹底的に斤して、簡潔な信様と Apache 上でおこなった CGI 、 mod-perl 、 Servlet の べンチマーク・テストの結果を表 2-a に示します。このテ 強力な言当能力をあわせもつように日されています。 ストには、「 WWW サーバーの育て方」 [ 2 ] にある去を 、 100 % pure Java " の規定に材処して作られた Java プ 利用しました。 ServIet については、同等の処理をおこな ログラムは、 "Write Once, Run Anywhere ”のオ垣五に う Servlet を作成しました。処理の内容は、 URL のパラ 區われているとおり、特定のプラットホームに依存しま メータを読み込んで出力するものです。テストでは、 50 回 1 この記事では、リリース当衫、、 Jeeves" という名前て召介されていま 繰り返し呼び出しています。 す。 1 三ロ 58 UNIX MAGAZINE 1998.6

7. UNIX MAGAZINE 1998年6月号

CAFE BABE 表 2 JDK 1.1.5 がサポートするタイムゾーン タイムゾーン ID タイムゾーン GMT ECT EET ART EAT M ET NET PLT IST BST VST CTT JST ACT AET SST NST M IT HST AST PST PNT MST CST EST IET PRT CNT AG T B ET CAT リスト 7 lmport import publ i c Greenwich Mean European Central Time Eastern European Time (Arabic) Egypt Standard Time (JDK 1.1.1 以降 ) Eastern African Time Middle East Time Near East Time Pakistan Lahore Time lnd ia St andard Ti me Bangladesh Standard Time Vietnam Standard Time China Taiwan Time 日本標纒時 = (Japan Standard Time) Australia Central Time Australia Eastern Time S010m0n Standard T ime New Zealand Standard Time Midway lslands Time Hawaii Standard Time Alaska Standard Time Pac ific St andard Ti me Phoenix Standard Time Mountain Standard Time Cent ral Standard Ti me Eastern Standard Time Puerto Rico and US Virgin lslands Time lndiana Eastern Standard Time (JDK 1.1.1 以降 ) 時差 ( ) ー 3.5 ー 5 ー 10 ー 11 12 11 10 9.5 9 8 7 6 5.5 5 4 3.5 3 2 2 1 0 夏日繝無 なし あり なし あり なし あり あり あり あり なし あり なし なし なし あり なし あり あり なし なし なし なし なし なし なし なし あり あり あり あり なし C anada Newfoundl and Time Argentina Standard Time Brazil Eastern Time Central African Time 適切なプログラム例 java ・ util . Date; Java. text . DateFormat ; class date { public static void main(String ロ args) { DateFormat df DateFormat . getDateTimeInstance (DateFormat . LONG , DateFormat . LONG) ; System. out . println - ()f . format(new Date() ) ) ; プジェクトと年月や刻などの整数フィールドとのあいだ の相互変換のためのさまざまな機能力甘是供されています。 ( 語ⅲの都合上、一都をて折り返しています ) 76 ただし、 CaIendar クラス ( 対由象クラスであり、実際の処 理は、 Factory Method パターンを使ってそのサプクラ スである java. util. GregorianCalendar クラスで疋義さ れています。 GregorianCalendar クラスは、グレゴリオ 暦、つまり太陽暦をサポートするクラスです。王学点では、 或による相違や太陰暦はサポートされていませんが、将 来的には」助日される予定です。 Calendar オフジェクトの鹹 Calendar オプジェクトは、次のメソッドを使って生 Ca1endar getlnstance (Loca1e ロケール ) Ca1endar getInstance(TimeZone タイムゾーン ) Ca1endar getlnstance ( ) 成します。 UNIX MAGAZINE 1998.6

8. UNIX MAGAZINE 1998年6月号

Java フログラミング・ノート リスト 1 システム・プロバティのダンプ import 」 ava. util . Enumeration; import j ava. util . Properties ; public class PrintProperties { public static VOid main(String ロ args) { Properties p = System. getProperties() ; for (Enumeration e = p ・ propertyNames ( ) ; e . hasMoreE1ements ( ) ; ) { String key = e. nextE1ement() . t0String() ; System. out . println(key 十 " " + p ・ getProperty(key)) ; リスト 2 テフォルト・タイムゾーンの取得 import 」 ava. util . TimeZone ; public class tzl { public static void main(String ロ args) { int msPerH = 60 * 60 * 1000 ; TimeZone tz = TimeZone. getDefau1t ( ) ; System. out . println(" タイムゾーン ID: " + tz . getID()); System. out . println(" 夏時間 . System. out . println(" 時差・ " 十 ://java.sun.com/cgi- ー + (tz. useDay1ightTime()? " 有 " : " 無 " ) ) ; (float)tz. getRawOffset() / (f10at)msPerH) ; % j ava printproperties user. language = Ja /usr/javal . 1 Java. home 」 ava. vendor. ur1. bug = http bin/bugreport ・ cgi sunwj it Java. compiler . encoding = EUCJIS line . separator ・ separator = / . vers 10n = 1 . 1 . 4 file . encoding ・ pkg = sun. io file file Java Java. vendor = Sun Microsystems . imez one JST user . name = kazama OS . name = SOlariS OS. = lnc . java. vendor. url = http : / / w . sun. com/ user. dir = /export/home/ka7ama/ : /usr/ なお、正しいデフォルト値を得るには、プラットホーム us er . home /export/home/kazama path. separator OS . vers 10n = 2 . X Java. class . version = 45.3 javal . l/lib/classes . zip Java. class . path : /usr/javal . l/classes UNIX MAGAZINE 1998.6 は、入力や出力で日本語が正しく扱えないなどの間題にす ロケールに関しては、たとえば日本語の設定をしなけれ 側のタイムゾーンを正しく設定しておく必要があります。 ぐ気づくので、設疋の間違いはほとんどないと思います。 しかし、タイムゾーンについては誤った設疋をしていても 気つ、かない場合がかなりあるようです。タイムゾーンを設 (String タイムゾーン ID ) " メソッドで設定することもで 取得するだけでなく、 TimeZone クラスの、、 setDefault ゾーンは、 TimeZone クラスの getDefauIt() メソッドで を得るサンプル・プログラムです。デフォルト・タイム リスト 2 は、デフォルトの TimeZone オプジェクト 3. SimpleTimeZone クラスのインスタンスを生成する。 得る。 (D) メソッドを使って、指定したタイムゾーン ID を 2. TimeZone クラスの getTimeZone ( タイムゾーン デフォルトの TimeZone オプジェクトを得る。 1. TimeZone クラスの getDefault() メソッドを用いて、 ます。 TimeZone オプジェクトは、次の 3 つの方法で取得し TimeZone オプジェクトの作成 て確かめてかならす正しく設定しておきましよう。 境変数など、プラットホームごとに違うので、マニュアル 定するガ去は、設疋ファイル、コントロール・パネル、環 73

9. UNIX MAGAZINE 1998年6月号

CORBA&Javau チか弔餘されることはない。適切な IDL ラッパーがあれ ば、以のような代替アプローチは、 ORB (Object Re- quest Broker) を通してもう 1 つのサーピスとして利用 できる。 時代を超えた課題 84 とで慌てて取り組むはめになるであろう。 題点がある。それらを前もって引しておかなければ、あ が必要になる。そこから必然的に生してくるいくっかの問 のサービスの開示、利用、統合といった高レベルの抽象化 企業内イントラネットを構築するときは、業務部門間で に組み込むことはよくある。 がマーケティングの見通しを予算管理用スプレッドシート ストカ客サービスの傾向を分析に統合したり、会言部門 たりすると、ちょっとした統合間題が生じる。業務アナリ UNIX べースの新しい顧客サービスシステムが導入され ナリストから既存の COBOL プログラムを渡されたり、 の導入は単純である。だが、マーケティンク門の旁ア 門があるとすると、この部門の目的に応したソフトウェア バー上の OracIe の企業データベースを使っている会計部 たとえば、 Microsoft ExceI と Windows NT サー が出てくる。 プのニーズが多様になり、より多くの項目を考慮する必要 場合が多いからだ。だが企業全体では、ユーサーやグルー テムやツールを利用し、同しビジネス目標を共有している な間題にはならない。ワークグルーフ。単位では、同しシス ベルでも重要ではあるが、小規模な組織ではそれはど複雑 ムエ竟に主眼をおく。ワークグルーフ。や個人ューザーのレ ットワーク上に分散する広い意味での異機種間情報システ こでは、異なる業務部門やワークグルーフ澗など、ネ サポート、アプリケーション管理などがそれである。 ン処理、既存システムのサポート、マルチプラットホーム・ ティ、拡張蹶データベース・アクセス、トランザクショ で構築されるどんなシステムにも内在している。セキュリ たもので、アーキテクチャや時代と関係なく、企業規模 多くは情報システムの構築カ始まったころから存在してい したとしても、どうしても逃れられない間題がある。その 企業内イントラネットの構築には、どんな方法を選択 セキュリティ UNIX MAGAZINE 1998.6 Java servlet はネットワークから重加勺にロードできる るものにする。 た電イ署名によって、あらゆるクラスを安全て信頼性のあ たとえは、 Jar ファイルは javakey ユーティリティを使っ API にアクセスして電イ署名と、 X. 509 認証を生成する。 プリケーションの Java Web servlet は、 JDK Security Java アプリケーションの JavaBeans とサーバー側ア java. lang ℃ lassLoader という 2 つのクラスである。 を支えるのは、おもに java. lang. SecurityManager と クセスのいすれもできない。アプレットのセキュリティ コンピュータへの接続、重要なシステムサーピスへのア ム上でのファイルの読み書き、起点となるマシン以外の された領域だ。アプレットでは、クライアント・システ 要な情報をイ尉寺する主記匱や強力なサーピスからは切り離 クスに封じ込められている。これは、クライアントの重 上制約が多く構成がほとんど変更できないサンドボッ されるため、その能力は制限される。アプレットは事実 にダウンロードするプラウサから信頼生カ觝いものとみな いわれている。アプレットは、クライアント・システム Java アプレットは分散システム上の弱い部分であると Java のセキュリティ 策のための多くの機能がある。 以下のように、 CORBA と Java にはセキュリティ対 ポイントを設ければよい。 行する重川乍など、異なる箇所にセキュリティのチェック たとえは、アプリケーションやアクセスされるデータ、実 プリケーション竟、に組み込むのが基本的なコツである。 適切な時と場所において、セキュリティ・サービスをア 用できるという意味では有効である。 定義できる。これは広い定義ではあるが、多くの場面に応 弱または重要なもの描するために利用する基準として る。セキュリティは、企業内イントラネットにおいて脆 セキュリティという言葉には多くの意味が含まれてい 余儀なくされる原因となってきた。 ロジェクトが最初に直面する問題点であり、引の変更を にアプリケーションを導入することはできない。多くのプ セキュリティを考慮することなく企業内イントラネット

10. UNIX MAGAZINE 1998年6月号

ServIet 表 5 ServIet API の履歴 J eeves J eeves J eeves Jeeves Jeeves 1.0 1.1 1.2 2.0 3.0 ( 米対 / カナタ版 ) J avaServer JavaServer 滝 ( バグフィックス JavaServer 1.0 FCS JavaServer 1.0.1 Java Web Server 1.0.2 Java Web Server 1.0.3 Java Web Server 1.1.1 FCS Java Web Server 1.1 FCS Java Web Server 1.1 Java Web Server 1. 1 リリース時期 Java Web Server 1998 年 3 月 1997 年 12 月 1997 年 10 月 1997 年 9 月 1997 年 10 月 1997 年 9 月 1997 年 7 月 1997 年 6 月 1997 年 4 月 1997 年 3 月 1996 年 11 月 1996 年 9 月 1996 年 9 月 1996 年 8 月 Servlet API 4 4 3 3 2 2 2 2 1 1 1 1 1 1 1 JSDK 1.0 JSDK 1.0.1 JST 1.1 JST 1.1 2 JDK 1.2 2 JDK 1.2 3 前まで ) Java Servlet Development Kit 1997 年 5 月 1 1997 年 7 月 2 JavaServer Toolkit 1997 年 12 月 4 1998 年 2 月 4 Java DeveIopment Kit 1997 年 12 月 4 1998 年 3 月 4 アーカイプ名 classes. Z ip classes. ZIP classes. Z ip classes. Zip classes. Zip classes. zip classes. 」 ar classes. 」 ar classes. 」 ar classes. J ar JWS ・ Jar 」 ws ・」 ar 」 ws ・」 ar classes. Z ip classes. Z ip jsdk. jar jsdk. jar classes. Z ip servlet. j ar この日芋其月には、 java. servlet 、 java. servlet. http とい うパッケージ名が使用されています。対応している HTTP のバージョンは 1.0 [ 4 ] です。 リリース当初は java. servlet だけでクラス数も少なか ったのです力ゞ、 Jeeves 2.0 で java. servlet のクラ ス数か増え、 java. servlet. http ノヾッケージが追加され ノヾッケージ名は javax. servlet 、 javax. 2.1997 年 6 月 ~ 12 月頃まで (JavaWeb Server 1.0 や これ以外のパッケージも存在していま この時期から、 JSDK) ーー 0 ました。一時、 66 3.1997 年 9 月 ~ 10 月 (Java Web Server 1.1 の版と この時期は Servlet API は動きがなく安定していまし servlet. http に変更されています。 日判月は短いのですが、次の FCS に向けた動きがありま HTTP 1.1 に対応し、 HTTP Cookie とセッション 管理闕イ系のクラスが Servlet API に追加されました。 同日月に分類していますが、住版と版の ServIet API は同しではありません。 HTTP 1.1 に対応したことで、 HTTP 1.1 の Method を扱うためのメソッドも追加されました。 javax. servlet. http パッケージは、滝版になってさら にインターフェイスとクラスが追加されました。版か らあったセッションを扱うクラスは、版になってメ ソッドか変更されています。 4.1997 年 12 月以降 (Java Web Server 1.1 FCS や JST) HTTP 1.1 に対応しただけでなく、いくっかの変更が 加えられています。 クラス構成では SingIeThreadModel が追加されまし 0 UNIX MAGAZINE 1998.6