# IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition Version 5.0

# ユーザー・ガイド

# 著作権情報

注: 本書および本書で紹介する製品をご使用になる前に、『特記事項』に記載されている情報をお読みください。

本書は、IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition Version 5.0、および新しい版で明記されていない限り、 以降のすべてのリリースおよびモディフィケーションに適用されます。

(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.

(c) Copyright International Business Machines Corporation, 1999, 2005. All rights reserved.

(c) Copyright IBM Japan 2005

# 前書き

本書には、IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) 2 Technology Edition Version 5.0 の概説と、 Sun の実装と対比した IBM の実装の相違点に関する具体的な情報が記載されています。 本書は、Sun の Web サイト (http://java.sun.com) の詳細な資料と一緒にお読みください。

SDK および Runtime Environment は、次の製品でサポートされています。

- Windows 2000
- Windows XP
- Windows Server 2003

IPv6 は Windows XP および Windows Server 2003 でのみサポートされています。

IBM Virtual Machine for Java について詳しくは、 「Diagnostics Guide (英語)」を参照してください。

本書の Version 5.0 での技術的な変更は、小さな変更や明らかな変更 (「1.4.2」を「5.0」に書き換えた、など) を除き、 HTML やカラー印刷コピーでは赤で示され、また、変更個所の左側に縦線が示されています。

用語「Runtime Environment」と「Java 仮想マシン」は、本書を通じて読み替えることができます。

# 目次

著作権情報
前書き
概要
バージョンの互換性
SDK のアップグレード
他の IBM JVM からのマイグレーション
SDK および Runtime Environment のコンテンツ
Runtime Environment ツール
SDK ツール
SDK および Runtime Environment のインストールと構成
インストールの前に
手動 (対話式) インストール
パッケージのインストール
Runtime Environment をシステム Java 仮想マシンとしてインストールする
自動インストール
IBM Accessibility Bridge を使用可能にする
Java Accessibility サポートを使用不可にする
ヨーロッパ言語ユーザー向けの情報
PATH の設定
CLASSPATH の設定
アンインストール
Runtime Environment の使用
オプション
Java オプションおよびシステム・プロパティーの指定
標準オプション
非標準オプション
IBM ビルド番号およびバージョン番号の取得
java コマンドのグローバリゼーション
Java ファイルの自動実行
ネイティブ支援テクノロジーを使った Java アプリケーションの実行
Just-In-Time (JIT) コンパイラー
JIT の使用不可化
JIT の使用可能化
JIT が使用可能かどうかを判別する
ガーベッジ・コレクション・ポリシーの指定
ガーベッジ・コレクションのオプション
休止時間
休止時間の削減
ヒープが満杯の環境
JVM によるシグナルの処理方法
JVM が使用するシグナル
ネイティブ・コード・ドライバーをシグナル・チェーニング・ライブラリーにリンクする
XML 文書の変換
旧バージョンの Xerces または Xalan の使用
SDK を使用した Java アプリケーションの開発
Java アプリケーションのデバッグ
Java Debugger (JDB)
アプリケーションが 32 ビットまたは 64 ビットのどちらの JVM で実行されているかを判別する
JNI アプリケーションの作成
アプレットの処理
アプレット・ビューアーでアプレットを実行する
アプレット・ビューアーでアプレットをデバッグする
| |
大規模ページのメモリー割り振りの構成
CORBA サポート
GIOP 1.2 のサポート
ポータブル・インターセプターのサポート
Interoperable Naming Service のサポート
ORB をトレースするためのシステム・プロパティー
ORB を調整するためのシステム・プロパティー
ORB の Java 2 セキュリティー権限
ORB 実装クラス
RMI over IIOP
RMI の Connection Handler Pool の実装
拡張双方向言語サポート
拡張 BigDecimal
ユーロ記号のサポート
Java Communications API (JavaComm) の使用
Java Communications API のインストール
Java Communications API の構成
Java Communications API での印刷に関する制限
Java Communications API のアンインストール
Java Communications API ドキュメンテーション
Java アプリケーションの配置
Java Plug-in の使用
サポートされるブラウザー
共通 Document Object Model (DOM) サポート
DBCS パラメーターの使用
Web Start の使用
Web Start の実行
Java アプリケーションの出荷
| |
JVM 間でのクラス・データの共用
| |
クラス共用の概要
| |
キャッシュの内容
| |
キャッシュの動的更新
| |
クラス共用の使用可能化
| |
キャッシュ・セキュリティー
| |
キャッシュの存続期間
| |
キャッシュ・ユーティリティー
| |
クラス共用のためのコマンド行オプションの使用
| |
キャッシュの作成、データ取り込み、モニター、および削除
| |
パフォーマンスとメモリー使用量
| |
クラス共用の使用の制限と考慮事項
| |
キャッシュ・サイズの制限
| |
実行時バイトコード変更
| |
オペレーティング・システムの制限
| |
SharedClassPermission の使用
| |
カスタム・クラス・ローダーの共用クラスへの適応
独立ソフトウェア販売会社のサービスおよびサポート
アクセシビリティ
iKeyman のアクセシビリティ
Swing での JComboBox コンポーネントのキーボードによる探索
Web Start のアクセシビリティ
セキュリティーに関する一般注意事項
既知の制限
本書に関するご意見
特記事項
商標

# 概要

IBM SDK は、IBM Java 5.0 Core Application Program Interface (API) に準拠した アプレットやアプリケーションを作成して実行するための開発環境です。

SDK には、Java アプリケーションの実行のみを可能にする、Runtime Environment for Windows が 含まれています。 SDK をインストールしている場合には、Runtime Environment が組み込まれています。

Runtime Environment には、Java 仮想マシンと、 クラス・ファイルなどのサポート・ファイルが含まれています。 Runtime Environment には、SDK にあるクラスのサブセットのみが含まれていて、これは Java プログラムを実行時にサポートしますが、Java プログラムのコンパイルを 可能にするものではありません。Runtime Environment for Windows には、 appletviewer.exe あるいは Java コンパイラー (javac.exe) などの開発ツールや、 開発システム専用のクラスは一切含まれていません。

さらに、 Java Communications のアプリケーション・プログラミング・インターフェース (API) パッケージ が Runtime Environment for Windows と一緒に使用するために提供されています。 これについては、『Java Communications API (JavaComm) の使用』を参照してください。

## バージョンの互換性

以前のバージョンの SDK で稼働したアプレットあるいはアプリケーションは、 一般に、IBM 32-bit SDK for Windows v5.0 でも正しく動作します。 このリリースでコンパイルしたクラスの、前のリリースでの動作については保証できません。

|IBM 32-bit SDK for Windows V5.0 は、Microsoft Visual Studio .NET 2003 を使用して |作成されました。

互換性に関して Sun のドキュメンテーションを読む場合は、Sun の Web サイト http://java.sun.com を参照してください。

## SDK のアップグレード

前のリリースから SDK をアップグレードする場合は、アップグレードを進める前に、 すべての構成ファイルおよびセキュリティー・ポリシー・ファイルをバックアップしてください。

これらのファイルはアップグレード処理中に上書きされた可能性があるため、 アップグレードの後に、それらのリストアまたは再構成が必要な場合があります。 ファイルのフォーマットやオプションが変わった可能性があるため、 元のファイルをリストアする前に、新しいファイルの構文を確認してください。

## 他の IBM JVM からのマイグレーション

Version 5.0 では、IBM Runtime Environment for Windows に、新しいバージョンの IBM Java Virtual Machine と Just-In-Time (JIT) コンパイラーが含まれています。以前の IBM Runtime Environment からマイグレーションする場合は、以下のことに注意してください。

- JVM ダイナミック・リンク・ライブラリー、jvm.dll は、ディレクトリー jre¥bin¥j9vm にインストールされます。これは、 例えば、jre¥bin¥classic にインストールされる、Runtime Environment for Windows の Version 1.4.2 とは異なります。JNI 呼び出しインターフェースを 使用するネイティブ・アプリケーションでは、JVM のダイナミック・リンク・ライブラリーを見つけるために、 その環境変数に新しいディレクトリー・パスを追加する必要があります。
- |JVM Monitoring Interface (JVMMI) は、使用できなくなりました。 |この API を使用するアプリケーションは書き直しの必要があります。代わりに、 |JVM Tool Interface (JVMTI) を使うことをお勧めします。JVMTI は、機能的には JVMMI と同等ではありません。 |JVMTI に関して詳しくは、http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/ および「Diagnostics Guide (英語)」を参照してください。
- |JNI の新規実装は、JNI 仕様に準拠しますが、 |以前の実装とは異なります。オブジェクトを pin (固定) するのではなく、 |オブジェクトのコピーを戻します。この違いにより、JNI アプリケーション・コードでエラーが発生する可能性があります。 |JNI コードのデバッグについて詳しくは、『非標準オプション』の |-Xcheck:jni を参照してください。
- |-verbose:gc を使用して得られる、ガーベッジ・コレクター |詳細ログのフォーマットおよびコンテンツが変更されています。 |現在、データは、XML 形式です。 |データ内容には、JVM でのガーベッジ・コレクションの実装に対する変更が反映され、 |出力される統計のほとんどが変更されています。 |詳細 GC 出力を処理するプログラムがある場合、新規フォーマットとデータで動作するように変更する必要があります。 |新しい詳細 GC データ例は、「Diagnostics Guide (英語)」を参照してください。
- IBM JRE の以前のバージョンは、jre/lib ディレクトリーにある rt.jar というファイルを同梱して出荷されていました。 Java v1.4 以降、このファイルは、jre/lib ディレクトリーにある複数の JAR ファイルに置き換えられています。
- |業界互換性と推奨されない API の追加情報については、 |Sun の Java 5 Compatibility のドキュメンテーションと Sun の Java 5 Depreciated API のリストを参照してください。

# SDK および Runtime Environment のコンテンツ

SDK には、いくつかの開発ツールと Java Runtime Environment (JRE) が含まれています。 この節では、SDK ツールと Runtime Environment のコンテンツについて説明します。

全体が Java で書かれたアプリケーションでは、IBM SDK のディレクトリー構造 (あるいは、それらの ディレクトリー内のファイル) に対する依存関係が皆無であるべきです。 SDK のディレクトリー構造 (あるいは、それらのディレクトリー内のファイル) に対する依存関係があると、 アプリケーションの移植性の問題が生じる可能性があります。 Java Native Interface (JNI) アプリケーションには、軽度の依存関係ができる可能性があります。

## Runtime Environment ツール

- コア・クラス -- これは、プラットフォーム用にコンパイルされたクラス・ファイルで、 コンパイラーとインタープリターがアクセスできるように zip された状態のままである必要があります。 このクラスは変更しないで、サブクラスを作成して必要なところをオーバーライドするようにしてください。
- JRE ツール -- 以下のツールは、Runtime Environment の一部で、 特に指定されない限り、jre¥bin ディレクトリーにあります。
  - java.exe (Java インタープリター)
    - Java クラスを実行します。Java インタープリターが、Java プログラム言語で書かれたプログラムを 実行します。
  - javaw.exe (Java インタープリター)
    - Java コマンドと同様の方法で Java クラスを実行しますが、 コンソール・ウィンドウは使用しません。
  - keytool.exe (鍵および証明書管理ツール)
    - 秘密鍵の鍵ストア (データベース) とそれに関連した X.509 証明書チェーン (対応する公開鍵を認証する) を 管理します。
  - policytool.exe (ポリシー・ファイルの作成と管理ツール)
    - ご使用のインストール済み環境での Java セキュリティー・ポリシーを定義する 外部ポリシー構成ファイルを作成し変更します。
  - rmid.exe (RMI アクティベーション・システム・デーモン)
    - オブジェクトを登録し、Java 仮想マシン (JVM) で活動化できるように、 アクティベーション・システム・デーモンを開始します。
  - tnameserv.exe (Common Object Request Broker Architecture (CORBA) ネーミング・サービス)
    - CORBA 一時ネーミング・サービスを開始します。
  - rmiregistry.exe (Java リモート・オブジェクト・レジストリー)
    - 現行ホストの指定ポートにリモート・オブジェクト・レジストリーを作成し、開始します。
  - ikeyman.exe (iKeyman GUI ユーティリティー)
    - これにより、鍵、証明書、および認証要求を管理できます。詳しくは、 付随する「Security Guide (英語)」および http://www.ibm.com/developerworks/java/jdk/security を参照してください。また、SDK には、 このユーティリティーのコマンド行バージョンもあります。 詳細は、『iKeyman のアクセシビリティ』を参照してください。
  - jextract.exe (ダンプ抽出)
    - システム生成ダンプを jdmpview で使用できる共通フォーマットに 変換します。 詳しくは、「Diagnostics Guide (英語)」を参照してください。
  - javaws.exe (Java Web Start)
    - Java アプリケーションの配置と自動保守を可能にします。

## SDK ツール

- 以下のツールは、SDK の一部で、C:¥Program Files¥IBM¥Java50¥bin ディレクトリーに配置されています。
  - javac.exe (Java コンパイラー)
    - Java プログラム言語で書かれたプログラムをバイトコード (コンパイル済み Java コード) に コンパイルします。
  - appletviewer.exe (Java アプレット・ビューアー)
    - Web ブラウザーの外部でアプレットをテスト、実行します。
  - jdb.exe (Java デバッガー)
    - Java プログラムのデバッグに役立ちます。
  - javap.exe (クラス・ファイルの逆アセンブラー)
    - コンパイル済みファイルを逆アセンブルし、バイトコード表記を表示できます。
  - javadoc.exe (Java ドキュメンテーション・ジェネレーター)
    - Java ソース・ファイルから API ドキュメンテーションの HTML ページを生成します。
  - javah.exe (C ヘッダーおよびスタブ・ファイル・ジェネレーター)
    - これにより、ネイティブ・メソッドを Java プログラム言語で書かれたコードに関連付けることができます。
  - jar.exe (Java Archive ツール)
    - 複数ファイルを単一の Java Archive (JAR) ファイルに結合させます。
  - jarsigner.exe (JAR 署名および検証ツール)
    - JAR ファイルの署名を生成し、署名付き JAR ファイルの署名を検証します。
  - jconsole.exe (JConsole モニターおよび管理ツール - 試験的)
    - ローカルおよびリモート JVM をモニターするための試験的な (サポートされない) JMX 準拠グラフィック・ツール
  - native2ascii.exe (Native-To-ASCII コンバーター)
    - ネイティブ・エンコード・ファイルを Latin 1 または Unicode またはその両方にエンコードされている 文字を含む ASCII ファイルに変換します。
  - rmic.exe (Java Remote Method Invocation (RMI) スタブ・コンバーター)
    - リモート・オブジェクトのスタブ、スケルトン、およびタイを生成します。Internet Inter-ORB Protocol (RMI-IIOP) 上の RMI サポートも含みます。
  - idlj.exe (IDL から Java コンパイラーへ)
    - 指定の IDL ファイルから Java バインディングを生成します。
  - serialver.exe (直列化バージョン・コマンド)
    - 新しいクラスへのコピーに適切な形式で、1 つ以上のクラスの serialVersionUID を戻します。
  - extcheck.exe (Extcheck ユーティリティー)
    - ターゲット JAR ファイルと現在インストール済みの拡張 JAR ファイル間のバージョンの矛盾を検出します。
  - jdmpview.exe (クロスプラットフォーム・ダンプ・フォーマッター)
    - ダンプの分析を可能にするツール。詳しくは、「Diagnostics Guide (英語)」を参照してください。
  - htmlconverter.exe (Java Plug-in HTML コンバーター)
    - アプレットを含む HTML ページを Java Plug-in を使用できるフォーマットに変換します。
- INCLUDE ファイル
  - JNI プログラムの C ヘッダー
- デモ
  - demo ディレクトリーには、ユーザーが使用できるサンプル・ソース・コード、デモ、アプリケーション、 およびアプレットが入った多くのサブディレクトリーがあります。
- 著作権
  - SDK for Windows ソフトウェアの著作権表示。
- ライセンス
  - ライセンス・ファイル C:¥Program Files¥IBM¥Java50¥license に SDK for Windows ソフトウェアのご使用条件が含まれています 。ご使用条件を 表示あるいは印刷するには、Web ブラウザーでこのファイルをオープンしてください。

注: この SDK for Windows に組み込まれているドキュメンテーションは、 ユーザー・ガイド、Javadoc、および付随するライセンス、著作権ファイル、デモ・ディレクトリーのみです。 Sun の Web サイトにアクセスして Sun のソフトウェア・ドキュメンテーションを表示するか、 あるいは、Sun の Web サイト http://java.sun.com から Sun の ソフトウェア・ドキュメンテーション・パッケージをダウンロードすることができます。

# SDK および Runtime Environment のインストールと構成

## インストールの前に

SDK または Runtime Environment パッケージをインストールするには、 関連のインストール・パッケージをダウンロードします。 必ず、すべてのパッケージを同じディレクトリーにダウンロードしてください。 パッケージとそのファイル名は『手動 (対話式) インストール』にリストされています。 パッケージのファイル名は変更しないでください。

インストールを開始する前に、C:¥WINDOWS¥TEMP ディレクトリーに、インストール中に使用する十分なスペースがあることを確認してください。 インストール中に TEMP ディレクトリーで必要な一時スペースの量は、以下のとおりです。

- SDK インストール可能パッケージ: 130 MB
- Runtime Environment インストール可能パッケージ: 85 MB

一時スペースが十分にない場合、インストール・プログラムはエラーを生成し、インストールを終了します。 一時スペースが十分にあるのに、このメッセージが表示される場合は、 インストールしようとしているパッケージが完全にダウンロードされていることを確認してください。 これを行うには、手元のパッケージのファイル・サイズを、そのダウンロード元の Web ページに表示されているファイル・サイズと比較します。

## 手動 (対話式) インストール

インストールできるパッケージは、以下のとおりです。

- SDK インストール可能パッケージ: ibm-java2-sdk-50-win-i386.exe
- Runtime Environment インストール可能パッケージ: ibm-java2-jre-50-win-i386.exe
- Runtime Environment インストール可能パッケージ (IBM ハードウェアのみ): ibm-java2-jre-50-ibmpc-win-i386.exe

他のパッケージは zip ファイルで提供されます。

- Runtime Environment パッケージ: ibm-java2-jre-50-win-i386.zip
- SDK パッケージ: ibm-java2-sdk-50-win-i386.zip
- Java Communications Application Programming Interface (API) for Windows パッケージ: ibm-java2-javacomm-50-win-i386.zip インストール手順については、『Java Communications API のインストール』の節を参照してください。
- 文書パッケージ: ibm-java2-docs-50-win-i386.zip
- デモ・パッケージ: ibm-java2-demos-50-win-i386.zip

### パッケージのインストール

1. ibm-java2-sdk-50-win-i386.exe (SDK の場合) または ibm-java2-jre-50-win-i386.exe (Runtime Environment のみの場合) のいずれかを起動します。
2. インストール・ウィザードの手順に従います。

Runtime Environment はデフォルトでディレクトリー C:¥Program Files¥IBM¥Java50¥jre にインストールされます。

SDK インストール可能パッケージをダウンロードした場合、以下をインストールするかどうかを選択できます。

- SDK 開発ツール (例えば、Java コンパイラー)
- Runtime Environment
- アプリケーションのデバッグに一部のツールが使用する、Sun クラス・ライブラリーのソース・コード。

コンポーネントは、個別にインストールすることも、組み合わせてインストールすることも可能です。

インストール・ウィザードでは、以下のオプションが示されます。

- 標準: このオプションでは、3 つのコンポーネントがすべてインストールされます。
- コンパクト (Compact): このオプションでは、Runtime Environment のみがインストールされます。
- カスタム: このオプションでは、インストールするコンポーネントを選択できます。

### Runtime Environment をシステム Java 仮想マシンとしてインストールする

Runtime Environment を (SDK インストール可能パッケージの一部として、または Runtime Environment インストール可能パッケージから) インストールする際、 Runtime Environment をシステム Java 仮想マシン (JVM) としてインストールするかどうかを尋ねられます。 それをシステム JVM としてインストールする場合、インストール・プログラムは、 java.exe および javaw.exe ファイルを Windows システム・ディレクトリーにコピーします。 あるバージョンの java.exe または javaw.exe が Windows システム・ディレクトリーに現存すると、 現行バージョンで既存バージョンを上書きするプロンプトが出されます。 これらのファイルを Windows システム・ディレクトリーにインストールすると、 この Runtime Environment がシステムのデフォルト JVM になります。 さらに、「Current Version」レジストリー・キーが、このインストールに適合するように設定されます。

注:
Runtime Environment をシステム JVM としてインストールすると、 java.exe および javaw.exe のみが Windows システム・ディレクトリーにコピーされます。 他の実行可能ファイル (javac.exe や appletviewer.exe など) はコピーされません。

## 自動インストール

自動インストールを作成する場合、最初に手動 (対話式) インストールを完了し、 インストール中に行った選択を記録した応答ファイル (setup.iss) を作成する必要があります。 作成した応答ファイルは、それを使用する予定のコンピューターに応じた適切なものでなければなりません。 必要であれば、構成が異なるコンピューターにパッケージをインストールするために使用する、 複数の応答ファイルを作成します。

インストールの実行中に応答ファイルを作成するには、コマンド・プロンプトで以下を入力します。

    ibm-java2-sdk-50-win-i386 /r

または

    ibm-java2-jre-50-win-i386 /r

ご使用の Windows 製品に応じて、応答ファイル (setup.iss) は、 C:¥Windows または C:¥Winnt ディレクトリー (ここで、C: はブート・ドライブ) に作成されます。

対話式インストールの間に、以下のメッセージが発生する場合があります。

    別の Java Runtime Environment がシステム JVM として現在インストール済みです。
    このバージョンを上書きするには「はい」を、このインストールを終了するには「いいえ」を選択してください。
    (Another Java Runtime Environment is currently
    installed as the System JVM. Select Yes to
    overwrite this version or No to exit this
    installation.)

このメッセージが表示されたら、「いいえ」を選択し、インストールを終了します。 Windows システム・ディレクトリーに移動し、以下の 2 つのファイルを削除してください。

- java.exe
- javaw.exe

ファイルを削除したら、この節の最初に示されたコマンドを使用して、対話式インストールを再始動します。

自動インストールを実行するシステムで、 setup.iss 応答ファイルを C:¥Windows ディレクトリーにコピーします。 ファイルをコピーしたら、コマンド・プロンプトで以下を入力します。

    ibm-java2-sdk-50-win-i386 /s /f1c:¥Windows¥setup.iss /f2c:¥setup.log
    ibm-java2-jre-50-win-i386 /s /f1c:¥Windows¥setup.iss /f2c:¥setup.log

注:

1. `/f1` または `/f2` の後ろにスペースは入れません。
2. `/f1` フラグは、応答ファイルの名前と位置を指定します。 `/f2` フラグは、ログ・ファイルの名前と位置を指定します。

インストールが正常に終了した場合、ログ・ファイルに `ResultCode=0` というストリングが含まれます。

## IBM Accessibility Bridge を使用可能にする

IBM Accessibility Bridge はインストールされますが、デフォルトで使用不可になっています。 IBM Accessibility Bridge を使用可能にするには、jre/lib ディレクトリーの Accessibility.properties ファイルにある以下の行で、先頭の番号記号 (#) を削除します。

    #assistive_technologies=JawBridge

次の Web サイトに、Accessibility Utilities の詳細があります。

http://java.sun.com/products/jfc/accessibility.html

## Java Accessibility サポートを使用不可にする

Java Accessibility サポートを使用不可にすると、Java 支援テクノロジー・サポートを提供しない Java アプリケーションの JVM ロード・パフォーマンスが、特にネットワーク・リンクを介する場合に、向上します。

Java Accessibility サポートを使用不可にするには、JAVA_ASSISTIVE 環境変数を OFF に設定します。JawBridge などの支援テクノロジーは、 この環境変数が OFF に設定されていると、そのテクノロジーが Accessibility.properties ファイルで使用可能にされていても利用できません。

## ヨーロッパ言語ユーザー向けの情報

Windows で、プロセスは 2 つのコード・ページを持ちます。それは、ANSI (または Windows) コード・ページと OEM (または DOS) コード・ページです。

コマンド・ウィンドウは通常、OEM コード・ページを使用します。 Java コンソール出力は、Java を開始したコマンド・ウィンドウのコード・ページを使用します。 ただし、javaw コマンドは常に ANSI コード・ページを使用します。 コンソール出力に使用するコード・ページは、 java コマンドの -Dconsole.encoding オプションで指定します。 例えば、-Dconsole.encoding=Cp1252 とすると、 すべてのコンソール出力が Windows ANSI Latin1 コード・ページ (1252) になります。

## PATH の設定

PATH 環境変数を以下に示すように変更する場合、ご使用のパスにある既存の Java 実行可能ファイルを オーバーライドすることに注意してください。

SDK をインストールした後は、シェル・プロンプトでツールの名前を入力し、 ファイル名を引数に指定して、ツールを使用できます。

ツールへのパスは、その都度、ツール名の前にパスを入力して指定します。 例えば、SDK for Windows が C:¥Program Files¥IBM¥Java50¥bin にインストールされている場合、myfile.java という名前のファイルを コンパイルするには、コマンド・プロンプトで以下のように入力します。

      "C:¥Program Files¥IBM¥Java50¥bin¥javac" myfile.java

毎回絶対パスを入力しないで済むようにするには、

1. 以下のディレクトリーを PATH 環境変数に追加してください。
   - C:¥Program Files¥IBM¥Java50¥bin (SDK のみ)
   - C:¥Program Files¥IBM¥Java50¥jre¥bin (SDK および Runtime Environment)

   SDK または Runtime Environment を別のディレクトリーにインストールした場合、SDK または Runtime Environment をインストールした ディレクトリーで C:¥Program Files¥IBM¥Java50¥ を置き換えてください。

2. ファイルを javac ツールでコンパイルします。例えば、 ファイル myfile.java をコンパイルするには、コマンド・プロンプトで、以下のように入力します。

         javac myfile.java

   PATH 環境変数を指定すると、Windows は、現行ディレクトリーから 実行可能ファイル (javac、java、および javadoc など) を見つけます。 ご使用の PATH の現行値を表示するには、コマンド・プロンプトで次のように入力します。

         echo %PATH%

## CLASSPATH の設定

CLASSPATH により、SDK ツール (java、javac、および javadoc など) は Java クラス・ライブラリーがある場所がわかります。

以下のいずれかが該当する場合のみ、CLASSPATH を明示的に設定する必要があります。

- 例えば、独自に作成したものなど異なるライブラリーまたはクラス・ファイルが必要であり、それが現行ディレクトリーにない場合。
- bin および lib ディレクトリーの位置を変更して、同じ共通の親ディレクトリーがもはやない場合。
- 同一システム上に異なるランタイム環境を使用する複数のアプリケーションを作成し実行する予定の場合。

ご使用の CLASSPATH の現行値を表示するには、 コマンド・プロンプトで、次のように入力します。

      echo %CLASSPATH%

別にインストール済みの他のバージョンも含めて、 異なるランタイム環境を使用する複数のアプリケーションを作成し実行する予定の場合、 CLASSPATH (および PATH) をそれぞれのアプリケーションごとに明示的に設定する必要があります。複数アプリケーションを 同時に実行し、異なるランタイム環境を使用する予定の場合、それぞれのアプリケーションが固有の コマンド・ウィンドウで実行される必要があります。

一度に 1 つのバージョンの Java のみ実行する場合は、 バッチ・スクリプトを使用して、異なる ランタイム環境を切り替えることができます。

## アンインストール

SDK をアンインストールするには、自動インストールでも手動 (対話式) インストールでも、以下のようにします。

1. Windows のデスクトップで、「マイ コンピュータ」をダブルクリックします。
2. 「コントロール パネル」をダブルクリックします。
3. 「プログラムの追加と削除」をダブルクリックします。
4. リスト上の IBM 32-bit SDK for Java 2 V5.0 をクリックしてから、 「変更と削除」をクリックします。
5. 「OK」をクリックします。

この手順により、インストーラーでインストールされたパッケージはすべて除去されます。これでは、Java Communications API パッケージ (Java Communications API を参照) と、zip パッケージから 解凍されたその他のファイルは、除去されません。

注:
ファイル、レジストリー項目、あるいはその両方で除去されなかったものがあることを 知らせる警告メッセージが表示されることがあります。 この警告は、一部のファイルがまだ使用中であると Windows が考えて出しています。これらのファイル、 レジストリー項目、あるいはその両方は、次にリブートされるときに除去されます。

IBM 32-bit SDK for Windows v5.0 と バージョン V1.3.1 以前のものを複数インストールして保守してきた環境で、 バージョン V5.0 がまだシステムにインストールされている間に以前のバージョンを アンインストールすると V1.3.1 アンインストーラーは V5.0 バージョンで必要である、 以下のレジストリー・キー、およびすべてのサブキーを除去してしまいます。その結果、V5.0 のインストール済み環境を壊してしまいます。

- HKEY_LOCAL_MACHINE/Software/IBM/Java2 Runtime Environment
- HKEY_LOCAL_MACHINE/Software/IBM/Java Development Kit

そこで、V1.3.1 バージョンをアンインストールしてから、バージョン V5.0 を 再インストールしてください。 このアンインストーラーの制限事項は、V1.4.0 以降のリリースでは修正されています。

# Runtime Environment の使用

java ツールは、Java Runtime Environment を開始し、指定されたクラスをロードすることによって、 Java アプリケーションを起動します。

JVM は、初期クラス (および使用されるその他のクラス) を、ブートストラップ・クラスパス、 インストールされた拡張機能、ユーザー・クラスパスの 3 カ所で検索します。 クラス名または JAR ファイル名の後に指定する引数が、main 関数に渡されます。

javaw コマンドは、javaw には関連するコンソール・ウィンドウがないことを除いて、java と同一です。 コマンド・プロンプト・ウィンドウを表示したくない場合には javaw を使用してください。 javaw ランチャーは、起動に失敗した場合に、エラー情報を含むダイアログ・ボックスを表示します。

java および javaw コマンドの構文は次のとおりです。

    java [ options ] class [ arguments ... ]
    java [ options ] -jar file.jar [ arguments ... ]
    javaw [ options ] class [ arguments ... ]
    javaw [ options ] -jar file.jar [ arguments ... ]

大括弧で囲まれている項目はオプショナルです。

options
  コマンド行オプション。
class
  呼び出すクラスの名前。
file.jar
  呼び出す JAR ファイルの名前。-jar でのみ使用されます。
arguments
  main 関数に渡される引数。

-jar オプションが指定された場合には、指定された JAR ファイルにアプリケーションのクラスおよびリソース・ファイルが入っていて、始動クラスは Main-Class マニフェスト・ヘッダーで示されています。

## オプション

ランチャーには、現在の Runtime Environment でサポートされ、将来のリリースでサポートされる標準オプションのセットがあります。 このほかに、非標準オプションのセットがあります。 デフォルト・オプションは、最も一般的な使用法に応じて選択されています。 変更する場合には注意してください。

### Java オプションおよびシステム・プロパティーの指定

Java オプションおよびシステム・プロパティーを指定するには、3 つの方法があります。 それらは、優先順に以下のものです。

1. コマンド行でオプションまたはプロパティーを指定します。 例えば、`java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MyJavaClass` のようにします。
2. オプションを含むファイルを作成し、 -Xoptionsfile=<filename> を使用してそれをコマンド行で指定します。
3. オプションを含む IBM_JAVA_OPTIONS という環境変数を作成します。 例えば、`set IBM_JAVA_OPTIONS="-Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump"` のようにします。

コマンド行では、右端のオプションが左端のオプションより優位になります。 例えば、「`-Xint -Xjit myClass`」というオプションを指定した場合、 -Xjit が優位になります。

### 標準オプション

- -D<property_name>=<value>
  - システム・プロパティーを設定します。
- -assert
  - assert 関連オプションのヘルプを表示します。
- -cp または -classpath <; で区切られたディレクトリーおよび ZIP ファイルまたは JAR ファイル>
  - アプリケーション・クラスおよびリソースの検索パスを設定します。-classpath も -cp も使用しないで、CLASSPATH を設定しないと、ユーザー・クラスパスは、デフォルトでは現行ディレクトリー (.) です。
- -help または -?
  - 使用法メッセージを表示します。
- -showversion
  - 製品のバージョンを表示して継続します。
- -verbose:[class,gcterse,gc,dynload,stackwalk,sizes,stack,debug,jni]
  - 詳細出力を使用可能にします。
- -version
  - 製品のバージョンを表示します。
- -version:<value>
  - 指定したバージョンの実行を要求します。
- -jre-restrict-search
  - バージョン検索でユーザーのプライベート JRE を含めます
- -no-jre-restrict-search
  - バージョン検索でユーザーのプライベート JRE を除外します
- -agentlib:<libname>[=<options>]
  - ネイティブ・エージェント・ライブラリー <libname> をロードします。 例えば、-agentlib:hprof のようにします。詳しくは、コマンド行で -agentlib:jdwp=help と -agentlib:hprof=help を指定してください。
- -agentpath:libname[=<options>]
  - 絶対パス名でネイティブ・エージェント・ライブラリーをロードします
- -javaagent:<jarpath>[=<options>]
  - Java プログラミング言語エージェントをロードします。詳しくは、java.lang.instrument API のドキュメンテーションを参照してください。
- -X
  - 非標準オプションのヘルプを表示します。

### 非標準オプション

以下にリストする -X オプションは非標準であり、予告なしに変更されることがあります。

<size> パラメーターを取るオプションでは、 その数値の後に、キロバイトを示す「k」または「K」、メガバイトを示す「m」または「M」、 あるいはギガバイトを示す「g」または「G」を付け加えてください。

- -Xargencoding
  - 引数リストに Unicode エスケープ・シーケンスを入れることができます。 このオプションは、デフォルトでオフに設定されています。
- -Xbootclasspath:<; で区切られたディレクトリーおよび ZIP ファイルまたは JAR ファイル>
  - ブートストラップ・クラスおよびリソースの検索パスを設定します。 デフォルトでは、内部の VM ディレクトリーおよび .jar ファイル内のブートストラップ・クラスおよびリソースを検索します。
- -Xbootclasspath/a:<; で区切られたディレクトリーおよび ZIP ファイルまたは JAR ファイル>
  - 指定されたディレクトリー、ZIP、または JAR ファイルをブートストラップ・クラス・パスの最後に追加します。 デフォルトでは、内部の VM ディレクトリーおよび .jar ファイル内のブートストラップ・クラスおよびリソースを検索します。
- -Xbootclasspath/p:<; で区切られたディレクトリーおよび ZIP ファイルまたは JAR ファイル>
  - 指定されたディレクトリー、ZIP、または JAR ファイルをブートストラップ・クラス・パスの前に付加します。 -Xbootclasspath: または -Xbootclasspath/p: オプションを使用して、標準 API のクラスをオーバーライドするアプリケーションを配置しないでください。 そのような配置は、Java 2 Runtime Environment バイナリー・コードのライセンス違反になります。 デフォルトでは、内部の VM ディレクトリーおよび .jar ファイル内のブートストラップ・クラスおよびリソースを検索します。
- -Xcheck:jni
  - JNI 機能の追加検査を行います。-Xrunjnichk も使用できます。 デフォルトでは、検査が実行されません。
- -Xcheck:nabounds
  - JNI 配列操作の追加検査を行います。-Xrunjnichk も使用できます。 デフォルトでは、検査が実行されません。
- |-Xclassgc | |
  |
  - このオプションにより、ガーベッジ・コレクションごとのクラス・オブジェクトのコレクションを可能にします。 |デフォルトでは、このオプションは使用可能です。
- -Xcompactexplicitgc
  - `System.gc()` のすべての呼び出しで圧縮します。 -Xnocompactexplicitgc も参照してください。 デフォルトでは、圧縮は内部的に起動されたときにのみに行われます。
- -Xcompactgc
  - すべてのガーベッジ・コレクター・サイクルを圧縮します。 -Xnocompactgc も参照してください。 デフォルトでは、圧縮は内部的に起動されたときにのみに行われます。
- |-Xconcurrentbackground <number> | |
  |
  - このオプションは、ガーベッジ・コレクションの並行マーク・フェーズにおける mutator |スレッドを支援するために接続された、優先順位が低いバックグラウンド・スレッドの数を指定します。 |デフォルトは、1 です。
- |-Xconcurrentlevel <number> | |
  |
  - このオプションは、割り振り「負担」率を指定します。これは、割り振られたヒープの量と、 |マークされたヒープの量との比率を示します。デフォルトは、8 です。
- |-Xconmeter:<soa | loa | dynamic> | |
  |
  - このオプションは、LOA 域または SOA 域のどちらの使用率を測定し、 |それに従って、並行マーク中にどちらの割り振りに負担がかけられるかを決定します。 |-Xconmeter:soa を使用すると、 |割り振り負担をスモール・オブジェクト域 (SOA) からの割り振りに適用し、 |-Xconmeter:loa を使用すると、 |割り振り負担をラージ・オブジェクト域 (LOA) からの割り振りに適用します。 |-Xconmeter:dynamic が指定された場合、SOA でも LOA でも、 |どちらの領域が最初に使い尽くされたかに基づいて、どちらの領域を測定するかを、コレクターが動的に判断します。 |デフォルトでは、このオプションは -Xconmeter:soa に設定されます。
- -Xdbg:<options>
  - アプリケーションのリモート・デバッグをサポートするデバッグ・ライブラリーをロードします。 これは、-Xrunjdwp と同じです。 デフォルトでは、デバッグ・ライブラリーはロードされず、VM インスタンスはデバッグについて使用可能でありません。
- -Xdbginfo:<path to symbol file>
  - オプションをデバッグ情報サーバーにロードして渡します。 デフォルトでは、デバッグ情報サーバーは使用不可です。
- -Xdebug
  - デバッガーを使用可能にして JVM を開始します。デフォルトでは、デバッガーは使用不可です。
- |-Xdisableexcessivegc |
  |
  - このオプションは、GC で過度の時間が費やされた場合の OutOfMemory 例外のスローを使用不可にします。 |デフォルトでは、このオプションはオフです。
- -Xdisableexplicitgc
  - `System.gc()` を呼び出す VM へのシグナルが効力を持ちません。 デフォルトでは、`System.gc()` の呼び出しが、ガーベッジ・コレクションを起動します。
- |-Xdisablestringconstantgc |
  |
  - このオプションは、ストリング拘束テーブルのストリングが収集されないようにします。 |デフォルトでは、このオプションは使用不可です。
- -Xdisablejavadump
  - エラーおよびシグナルによる javadump 生成をオフにします。 デフォルトでは、javadump 生成は使用可能です。
- |-Xenableexcessivegc |
  |
  - GC で過度の時間が費やされた場合、このオプションは割り振り要求に対して NULL を戻し、 |それにより、OutOfMemory 例外のスローを引き起こします。 |このアクションは、ヒープがいっぱいに拡張されて、費やされた時間が少なくとも 95% |になっている場合にのみ行われます。 |この振る舞いはデフォルトです。
- |-Xenablestringconstantgc |
  |
  - このオプションは、ストリング拘束テーブルのストリングを収集できるようにします。 |デフォルトでは、このオプションは使用可能です。
- -Xfuture
  - 厳密なクラス・ファイル・フォーマット検査をオンにします。 将来のリリースでより厳密な検査がデフォルトになるため、 新しいコードの開発時にこのフラグを使用します。 デフォルトでは、厳密なフォーマット検査は使用不可です。
- -Xgcpolicy:[optthruput]|[optavgpause]|[gencon]
  - ガーベッジ・コレクターの振る舞いを制御します。 optthruput オプションがデフォルトで、非常に高いスループットをアプリケーションに提供しますが、 代償として時折休止します。optavgpause オプションは、 これらのガーベッジ・コレクション休止に費やされる時間を削減し、 ヒープ・サイズの増加がガーベッジ・コレクション休止の長さに与える影響を制限します。 非常に大規模なヒープが構成にある場合には、optavgpause を使用します。 gencon オプションは、並行と世代別の GC を組み合わせた使用を要求し、 ガーベッジ・コレクションの休止に費やされる時間を最小にするよう支援します。 詳しくは、『ガーベッジ・コレクション・ポリシーの指定』を参照してください。
- -Xgcthreads<number of threads>
  - ガーベッジ・コレクション中、並列操作に使用されるヘルパー・スレッドの数を設定します。 デフォルトでは、スレッドの数は、存在する物理 CPU の数から 1 を引いた数に設定され、最小が 1 になります。
- |-Xgcworkpackets <number> |
  |
  - このオプションは、グローバル・コレクターで使用可能な作業パケットの総数を指定します。 |指定されないと、コレクターは、最大ヒープ・サイズに基づいてパケットの数を割り振ります。
- -Xint
  - JVM にインタープリターのみを使用させ、Just-In-Time (JIT) コンパイラーを使用不可にします。 デフォルトでは、JIT コンパイラーは使用可能です。
- -Xiss<size>
  - 初期の Java スレッド・スタック・サイズを設定します。デフォルトで 2 K バイトです。
- -Xjit[:<suboption>,<suboption>,...]
  - JIT を使用可能にします。サブオプションの詳細については、「Diagnostics Guide (英語)」を参照してください。-Xnojit も参照してください。デフォルトでは、JIT は使用可能です。
- -Xlinenumbers
  - デバッグのために、スタック・トレース内の行番号を表示します。 -Xnolinenumbers も参照してください。 デフォルトでは、行番号はオンです。
- |-Xloa |
  |
  - このオプションは、ラージ・オブジェクト域 (LOA) を割り振ります。 |オブジェクトは、SOA でなく、この LOA に割り振られます。 |デフォルトでは、LOA が使用可能でないサブプールを除いて、すべての GC ポリシーに LOA が使用可能です。 |-Xnoloa も参照してください。
- |-Xloainitial <number> |
  |
  - <number> は、0 から 0.95 で、 |ラージ・オブジェクト域 (LOA) に割り振られる古い世代の現行スペースの初期パーセンテージを指定します。 |デフォルトは 0.05、つまり 5% です。
- |-Xloamaximum <number> |
  |
  - <number> は、0 から 0.95 で、 |ラージ・オブジェクト域 (LOA) に割り振られる古い世代の現行スペースの最大パーセンテージを指定します。 |デフォルトは 0.5、つまり 50% です。
- |-Xlp (Windows 2003) | |
  |
  - 大規模ページで Java ヒープを割り振るよう JVM に要求します。 |大規模ページが使用可能でない場合、JVM は始動せず、 |「`GC: システム構成がオプションをサポートしません --> '-Xlp'` |(`GC: system configuration does not support option --> '-Xlp'`)」というエラー・メッセージが表示されます。 |大規模ページは、Windows 2003 で稼働し、 |大規模ページを使用するようにオペレーティング・システムがセットアップされているシステムによってサポートされます。 |デフォルトでは、大規模ページは使用されません。『大規模ページのメモリー割り振りの構成』を参照してください。
- -Xmaxe<size>
  - ガーベッジ・コレクターがヒープを拡張する差分の最大量を設定します。 通常、ガーベッジ・コレクターは、フリー・スペースの量が 30 % (または -Xminf で指定された量) を切ったときに、フリー・スペースを 30 % に戻すのに必要な量の分、ヒープを拡張します。 -Xmaxe オプションは、その拡張を指定値に制限します。 例えば、`-Xmaxe10M` では拡張が 10 MB に制限されます。 デフォルトでは、最大の拡張サイズはありません。
- -Xmaxf<size>
  - ガーベッジ・コレクション後にフリーである必要があるヒープの最大パーセンテージを指定します。 フリー・スペースがこの量を超えると、JVM がヒープの縮小を試行します。 サイズは 0 から 1 の範囲の小数値で指定します。 例えば、`-Xmaxf0.5` は最大フリー・スペースを 50 % に設定します。 デフォルト値は 0.6 (60 %) です。
- -Xmca<size>
  - RAM 部分のロードされたクラスを保管するために割り振られるメモリーに対する、拡張の差分を設定します。 RAM 内のクラスの保管にさらにメモリーが必要になるたびに、 割り振りメモリーがこの量の分、増加されます。デフォルトでは、拡張の差分は 32 K です。
- -Xmco<size>
  - ROM 部分のロードされたクラスを保管するために割り振られるメモリーに対する、拡張の差分を設定します。 ROM 内のクラスの保管にさらにメモリーが必要になるたびに、 割り振りメモリーがこの量の分、増加されます。デフォルトでは、拡張の差分は 128 K です。
- -Xmine<size>
  - ガーベッジ・コレクターがヒープを拡張する差分の最小量を設定します。 通常、ガーベッジ・コレクターは、フリー・スペースを 30 % (または -Xminf で指定された量) に戻すのに必要な量の分、ヒープを拡張します。 -Xmine オプションは、拡張を少なくとも指定された値に設定します。 例えば、`-Xmine50M` では、拡張サイズが最小で 50 MB に設定されます。 デフォルトでは、最小の拡張サイズは 1 MB です。
- -Xminf<size>
  - ガーベッジ・コレクション後にフリーである必要があるヒープの最小パーセンテージを指定します。 フリー・スペースがこの量を切ると、JVM がヒープの拡張を試行します。 サイズは 0 から 1 の範囲の小数値で指定します。 例えば、`-Xminf0.3` という値では、最小フリー・スペースをヒープの 30% にするよう要求します。 デフォルトでは、最小値は 0.3 です。
- -Xmn<size>
  - -Xgcpolicy:gencon の使用時に、 新しい世代のヒープの初期および最大サイズを、指定された値に設定します。 -Xmns と -Xmnx の両方を設定することと同等です。 |-Xmns または -Xmnx を設定した場合、 |-Xmn は設定できません。 |-Xmns または -Xmnx とともに |-Xmn を設定しようとすると、VM が始動せず、エラーが戻ります。 デフォルトでは、-Xmn はシステムの能力に従って内部的に選択されます。 -verbose:sizes オプションを使用して、VM が現在使用している値を検出できます。
- -Xmns<size>
  - -Xgcpolicy:gencon の使用時に、新しい世代のヒープの初期サイズを、指定された値に設定します。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択されます。 |このオプションを -Xmn とともに使用しようとすると、エラーが戻ります。
- -Xmnx<size>
  - -Xgcpolicy:gencon の使用時に、新しい世代のヒープの最大サイズを、指定された値に設定します。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択されます。 |このオプションを -Xmn とともに使用しようとすると、エラーが戻ります。
- -Xmo<size>
  - -Xgcpolicy:gencon の使用時に、 古い世代のヒープの初期および最大サイズを、指定された値に設定します。 -Xmos と -Xmox の両方を設定することと同等です。 |-Xmos または -Xmox を設定した場合、 |-Xmo は設定できません。-Xmos または -Xmox とともに |-Xmo を設定しようとすると、VM が始動せず、エラーが戻ります。 デフォルトでは、-Xmo はシステムの能力に従って内部的に選択されます。 -verbose:sizes オプションを使用して、VM が現在使用している値を検出できます。
- -Xmos<size>
  - -Xgcpolicy:gencon の使用時に、古い世代のヒープの初期サイズを、指定された値に設定します。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択されます。 |このオプションを -Xmo とともに使用しようとすると、エラーが戻ります。
- -Xmox<size>
  - -Xgcpolicy:gencon の使用時に、古い世代のヒープの最大サイズを、指定された値に設定します。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択されます。 |このオプションを -Xmo とともに使用しようとすると、エラーが戻ります。
- -Xmoi<size>
  - -Xgcpolicy:gencon の使用時に、Java ヒープの増分量を設定します。 ゼロに設定されると、拡張はできません。 デフォルトでは、増分サイズは、拡張サイズ -Xmine および -Xminf を基に計算されます。
- -Xmr<size>
  - -Xgcpolicy:gencon の使用時に、ガーベッジ・コレクションの「remembered set」のサイズを設定します。 これは、新しい世代のヒープ内のオブジェクトへの参照を持つ、 古い世代のヒープ内のオブジェクトのリストです。 デフォルトでは、このオプションは 16 K バイトに設定されます。
- -Xms<size>
  - 初期の Java ヒープ・サイズを設定します。 -Xmo も使用できます。 デフォルトは、システムの能力に従って内部的に設定されます。
- -Xmso<size>
  - fork された Java スレッドの C スタック・サイズを設定します。 デフォルトでは、このオプションは、32 ビット・プラットフォームでは 32 K バイト、 64 ビット・プラットフォームでは 256 K バイトに設定されます。
- -Xmx<size>
  - 最大 Java ヒープ・サイズを設定します。デフォルトでは、このオプションはシステムの能力に従って内部的に設定されます。
- -Xnoclassgc
  - クラス・ガーベッジ・コレクションを使用不可にします。これは、JVM によってもう使用されない Java クラスに関連付けられたストレージのガーベッジ・コレクションをオフに切り替えます。 デフォルトの振る舞いは -Xclassgc です。
- -Xnocompactgc
  - ガーベッジ・コレクターの圧縮を使用不可にします。 -Xcompactgc も参照してください。 デフォルトでは、圧縮は使用可能です。
- -Xnocompactexplicitgc
  - `System.gc()` の呼び出しで圧縮を使用不可にします。 -Xcompactexplicitgc も参照してください。 デフォルトでは、`System.gc()` の呼び出しで圧縮は使用可能です。
- -Xnojit
  - JIT コンパイラーを使用不可にします。-Xjit も参照してください。 デフォルトでは、JIT コンパイラーは使用可能です。
- -Xnolinenumbers
  - デバッグの行番号を使用不可にします。 -Xlinenumbers も参照してください。 デフォルトでは、行番号はオンです。
- |-Xnoloa | |
  |
  - このオプションは、ラージ・オブジェクト域 (LOA) の割り振りが行われないようにします。 |すべてのオブジェクトが SOA に割り振られます。 |デフォルトでは、LOA が使用可能でないサブプールを除いて、すべての GC ポリシーに LOA が使用可能です。 |-Xloa も参照してください。
- -Xnopartialcompactgc
  - 増分圧縮を使用不可にします。 -Xpartialcompactgc も参照してください。 デフォルトでは、このオプションは設定されず、すべての圧縮が全体的です。
- -Xnosigcatch
  - JVM シグナル処理コードを使用不可にします。 -Xsigcatch も参照してください。 デフォルトでは、シグナル処理は使用可能です。
- -Xnosigchain
  - シグナル・ハンドラーのチェーニングを使用不可にします。 -Xsigchain も参照してください。 デフォルトでは、シグナル・ハンドラーのチェーニングは使用可能です。
- -Xoptionsfile=<file>
  - JVM オプションと定義が入ったファイルを指定します。デフォルトでは、オプション・ファイルは使用されません。
- -Xoss<size>
  - スレッドの Java スタック・サイズおよび C スタック・サイズを設定します。 このオプションは互換性のために用意されているもので、 -Xss と -Xmso の両方を指定値に設定することと同等です。
- -Xpartialcompactgc
  - 部分圧縮を使用可能にします。 -Xnopartialcompactgc も参照してください。
- -Xquickstart
  - JIT コンパイルおよび最適化を遅延することによって、起動時間を改善します。 デフォルトでは、クイック・スタートが使用不可で、JIT コンパイルの遅延はありません。
- -Xrdbginfo:<host>:<port>
  - オプションをリモート・デバッグ情報サーバーにロードして渡します。 デフォルトでは、リモート・デバッグ情報サーバーは使用不可です。
- -Xrs
  - オペレーティング・システムのシグナルの使用を減らします。デフォルトでは、 VM はオペレーティング・システムのシグナルをすべて使用します。『JVM が使用するシグナル』を参照してください。
- -Xrun<library name>[:options]
  - ヘルパー・ライブラリーをロードします。複数のライブラリーをロードするには、コマンド行で 2 回以上指定してください。これらのライブラリーの例は次のとおりです。
    - -Xrunhprof[:help] | [:<option>=<value>, ...]
      - ヒープ、CPU、またはモニターのプロファイル作成を実行します。詳しくは、「Diagnostics Guide (英語)」を参照してください。
    - -Xrunjdwp[:help] | [:<option>=<value>, ...]
      - アプリケーションのリモート・デバッグをサポートするデバッグ・ライブラリーをロードします。 これは、-Xdbg と同じです。 詳しくは、『Java アプリケーションのデバッグ』を参照してください。
    - -Xrunjnichk[:help] | [:<option>=<value>, ...]
      - JNI 機能の追加検査を実行し、JNI を使用して JVM にアクセスするネイティブ・プログラムでのエラーをトレースします。 詳しくは、「Diagnostics Guide (英語)」を参照してください。
- |-Xscmx<size>[k|m|g] | |
  |
  - -Xscmx の詳細については、『クラス共用のためのコマンド行オプションの使用』を参照してください。
- |-Xshareclasses:<suboptions> | |
  |
  - -Xshareclasses サブオプションの詳細については、 |『クラス共用のためのコマンド行オプションの使用』を参照してください。
- -Xsigcatch
  - VM シグナル処理コードを使用可能にします。 -Xnosigcatch も参照してください。 デフォルトでは、シグナル処理は使用可能です。
- -Xsigchain
  - シグナル・ハンドラーのチェーニングを使用可能にします。 -Xnosigchain も参照してください。 デフォルトでは、シグナル・ハンドラーのチェーニングは使用可能です。
- |-Xsoftrefthreshold<number> | |
  |
  - このオプションは、対象がマークされていない場合にソフト参照がクリアされるまでの |GC の数を設定します。デフォルトは 3 です。これは、対象がマークされていない 3 番目の GC で、 |ソフト参照がクリアされることを意味します。
- -Xss<size>
  - スレッドの最大 Java スタック・サイズを設定します。デフォルトでは、このオプションは 256 KB に設定されます。
- -Xthr:<options>
  - スレッド化オプションを設定します。
- -Xverbosegclog:<path to file><filename>[X, Y]
  - verboseGC の出力を指定したファイルに書き込みます。ファイルがすでに存在していると、上書きされます。それ以外の場合で、既存ファイルを開けないか、新しいファイルを作成できない場合は、出力は stderr にリダイレクトされます。引数 X および Y (両方とも整数) を指定すると、 verboseGC 出力は X 個のファイルにリダイレクトされ、それぞれのファイルには、Y 個の gc サイクルの verboseGC 出力が含まれます。これらのファイルは、filename1、filename2、... という形式になります。デフォルトでは、詳細ガーベッジ・コレクション・ロギングは行われません。
- -Xverify
  - ロードされたすべてのクラスに対して厳密なクラス検査を使用可能にします。 デフォルトでは、厳密なクラス検査は使用不可です。
- -Xverify:none
  - 厳密なクラス検査を使用不可にします。 デフォルトでは、厳密なクラス検査は使用不可です。

## IBM ビルド番号およびバージョン番号の取得

IBM ビルド番号およびバージョン番号を確認するには、コマンド・プロンプトで以下を入力してください。

    java -version

## java コマンドのグローバリゼーション

java コマンドやその他の java ランチャー・コマンド (javaw など) では、クラス名を現行ロケールの文字セット内の任意の文字で指定できます。

また、Java エスケープ・シーケンスを使用して、クラス名と引数に任意の Unicode 文字を指定することもできます。 これを行うには、-Xargencoding を指定する必要があります。 Unicode 文字を指定するには、エスケープ・シーケンスを `¥u####` の形式で使用します。ここで # は 16 進数字 (0 から 9、A から F) です。

あるいは、クラス名およびコマンド引数が UTF8 エンコード方式であることを指定するには -Xargencoding:utf8 を、ISO8859_1 エンコード方式であることを指定するには -Xargencoding:latin を使用します。

例えば、「HelloWorld」というクラスを 2 つの大文字について Unicode エンコード方式を使用して指定する場合、 次のコマンドを使用します。

    java -Xargencoding '¥u0048ello¥u0057orld'

java および javaw コマンドは、 翻訳された出力メッセージを示します。これらのメッセージは、Java が稼働しているロケールに基づいて異なります。 エラーの詳細説明や、java が戻すその他のデバッグ情報は、英語で表示されます。

## Java ファイルの自動実行

java クラスまたは JAR ファイルをファイルから自動的に実行するように設定するには、Windows のエクスプローラの 「ツール」->「フォルダ オプション」->「ファイルの種類」オプションを使用します。あるいは、コマンド・プロンプトから次のように入力します。

    assoc .class=javaclass
    ftype javaclass=C:¥Program Files¥IBM¥Java50¥jre¥bin¥java.exe %l %*

注:

1. `%l` は英字の l であって、数字の 1 ではありません。
2. Java が C:¥Program Files¥IBM¥Java50¥ 以外のディレクトリーにインストールされている場合には、ご使用のディレクトリーに置き換えます。

## ネイティブ支援テクノロジーを使った Java アプリケーションの実行

Sun では、スクリーン・リーダー、Java アプリケーションにおける Java アクセシビリティ・サポートへのアクセスなど、ネイティブ Windows 支援テクノロジーを使用するための、Java Access Bridge を提供しています。これらのネイティブ Windows 支援テクノロジーは、Java Access Bridge の呼び出しをサポートする必要があります。

Sun から入手できる Java Access Bridge には、5 つのファイル (access-bridge.jar、jaccess.jar、accessibility.properties、JavaAccessBridge.dll、および WindowsAccessBridge.dll) を正しいディレクトリーに配置するインストーラーが組み込まれています。IBM は、 JawBridge との使用に適切なディレクトリーで jaccess.jar のコピーを出荷します。

Swing アプリケーションで Windows 2000 Magnifier を機能できるようにする IBM Accessibility Bridge (JawBridge) がすでに使用可能になっていて、 Java Access Bridge と同時に JawBridge を使用可能にしたい場合は、 accessibility.properties ファイル内の行を、以下のように編集してください。

    assistive_technologies=com.sun.java.accessibility.AccessBridge,
    JawBridge

両方のブリッジを非アクティブにするには、先頭に `#` を挿入して、 その行をコメント化してください。 次の Web サイトで、Java Access Bridge のダウンロード方法が分かります。

http://java.sun.com/products/jfc/accessibility/index.jsp

## Just-In-Time (JIT) コンパイラー

IBM Just-In-Time (JIT) コンパイラーは、Java アプリケーションやアプレットで実行中に頻繁に使用される バイトコード・シーケンスのマシン・コードを動的に生成します。 |JIT V5.0 コンパイラーは、コンパイラーの研究によって新しい最適化を実現し、 |前のバージョンの JIT に実装されていた最適化を改良して、ハードウェアをより大きく活用しています。

IBM SDK and Runtime Environment には JIT が含まれており、SDK ツールのほかユーザー・アプリケーションにおいても、 デフォルトで使用可能に設定されています。 通常、明示的に JIT を起動する必要はありません。 Java バイトコードからマシン・コードへのコンパイルは、透過的に行われます。 ただし、Java アプリケーションまたはアプレットを実行中に Runtime Environment で問題が発生した場合には、問題の切り分けのために JIT を使用不可にすることができます。 JIT を使用不可にするのは、一時的な手段のみにしてください。 JIT は、適切なパフォーマンスを得るために必要です。

### JIT の使用不可化

JIT を使用不可にするには 3 つの方法があります。

- Java アプリケーションを実行する前に、JAVA_COMPILER 環境変数に "NONE" または空ストリングを設定します。

  アプリケーションが実行されるコマンド・プロンプトで、以下を入力します。

      set JAVA_COMPILER=NONE

  また、グラフィカル・ユーザー・インターフェースを使用して、JAVA_COMPILER を 恒久的に設定することもできます。 「コントロール パネル」を開いて「システム」を選択し、 「詳細」タブで「環境変数」を選択します。

- JVM コマンド行で -D オプションを使用して、 java.compiler プロパティーに "NONE" または空ストリングを設定します。

      java -Djava.compiler=NONE MyApp

- JVM コマンド行で -Xint オプションを使用します。例えば、次のようにします。

      java -Xint MyApp

どちらのコマンド行オプションも、JAVA_COMPILER 環境変数をオーバーライドします。

### JIT の使用可能化

明示的に JIT を使用可能にするには、JAVA_COMPILER 環境変数に "jitc" を設定するか、または、-D オプションを使用して java.compiler プロパティーに "jitc" を設定します。 あるいは、JVM コマンド行で -Xjit オプションを使用 (かつ -Xint オプションは省略) して JIT をオンにします。

JAVA_COMPILER 環境変数または java.compiler プロパティーに "" (空ストリング) が設定されている場合、 JIT は使用不可のままになります。 環境変数を適切に設定解除するには、 コマンド・プロンプトで `set JAVA_COMPILER=` を入力します。

### JIT が使用可能かどうかを判別する

JIT が使用可能かどうかを判別するには、コマンド・プロンプトで次のように入力します。

        java -version

JIT が使用できない場合には、以下の内容のメッセージが表示されます。

    (JIT disabled)

JIT が使用できる場合には、以下の内容のメッセージが表示されます。

    (JIT enabled)

JIT についての詳細は、「Diagnostics Guide (英語)」を参照してください。

## ガーベッジ・コレクション・ポリシーの指定

ガーベッジ・コレクターは、Java が使用するメモリーおよび VM 内で稼働するアプリケーションが使用するメモリーを管理します。

ガーベッジ・コレクターはストレージの要求を受け取ると、ヒープ内の未使用メモリーを引き当てます。すなわち、 「割り振り」です。 また、ガーベッジ・コレクターは、もはや参照されていないメモリー領域を確認し、それらを再利用のために 解放します。これがすなわち「コレクション」です。

コレクション・フェーズは、メモリーの割り振り障害がトリガーとなって起動されます。割り振り障害は、 ストレージ要求に対してスペースが残っていない場合に発生するか、または、明示的な System.gc() 呼び出しによっても 引き起こされます。

ガーベッジ・コレクションは、アプリケーションのパフォーマンスに大きく影響するので、 IBM 仮想マシンは、ガーベッジ・コレクション実行の方法を最適化するためにさまざまな メソッドを提供して、アプリケーションへの影響を削減するようにしています。

ガーベッジ・コレクションに関する詳細情報は、「Diagnostics Guide (英語)」を参照してください。

### ガーベッジ・コレクションのオプション

-Xgcpolicy オプションは、ガーベッジ・コレクション・ポリシーを指定します。

-Xgcpolicy は、値として optthruput (デフォルトおよび推奨値)、optavgpause、または gencon を使用します。このオプションは、 ガーベッジ・コレクターの動作を制御して、アプリケーションおよびシステム全体のスループットと ガーベッジ・コレクションに起因する休止時間とのトレードオフを図ります。

このオプションのフォーマットと値は次のとおりです。

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

> -Xgcpolicy:gencon

### 休止時間

アプリケーションがオブジェクトを作成しようとして、その要求がヒープ内の使用可能スペースの理由で すぐに実現しない場合に、ガーベッジ・コレクターは、参照されていないオブジェクト (ガーベッジ) を 識別してそれらを削除し、ヒープの状態を即時および後続の割り振り要求にすぐに応じられる状態に 戻す責任があります。 そうしたガーベッジ・コレクションの繰り返しにより、アプリケーション・コードの実行時に 予期しない休止が時々起こることがあります。アプリケーションは大きく複雑になってきており、 ヒープもそれに応じて大規模になっているので、 このガーベッジ・コレクション休止時間は長さも重要度も増す傾向にあります。デフォルトの ガーベッジ・コレクション値の -Xgcpolicy:optthruput では、 非常に高いスループットがアプリケーションにもたらされますが、 こうした一時休止 (ヒープ・サイズとガーベッジの質により数ミリ秒からかなりの秒数まであり得る) が 代償になっています。

### 休止時間の削減

JVM は、一時休止時間を削減するために 2 つの手法を使用します。

- 並行ガーベッジ・コレクション
- 世代別ガーベッジ・コレクション

-Xgcpolicy:optavgpause コマンド行オプションは、並行ガーベッジ・コレクションの 使用を要求し、ガーベッジ・コレクションの一時休止にあてられる時間を大幅に削減します。 並行ガーベッジ・コレクション (GC) は、一部のガーベッジ・コレクション・アクティビティーを 通常のプログラム実行と並行して行うことにより、ヒープのコレクションが原因で起きる中断を最小限に して、一時休止時間の削減を図ります。 また、-Xgcpolicy:optavgpause オプションは、ヒープ・サイズの増加が ガーベッジ・コレクション休止の長さに与える影響を制限します。 -Xgcpolicy:optavgpause オプションは、大容量のヒープを抱える構成の場合に 非常に有効です。 休止時間を削減することによって、アプリケーションのスループットがある程度縮小される場合があります。

並行ガーベッジ・コレクション時に、比較的長く存続していて収集できないオブジェクトの識別に かなりの時間が無駄に使われています。 GC が、リサイクル可能な傾向のあるオブジェクトのみに集中すれば、一部のアプリケーションへの 一時休止時間をさらに削減することができます。世代別 GC は、ヒープを 2 つの「世代」、すなわち、 「新しい世代」と「古い世代」の領域に分けることでこれを実現します。 オブジェクトはその経過時間によって、この領域のどちらかに入れられます。 新しい世代領域は、2 領域の小さい方で、若いオブジェクトが入ります。一方、古い世代領域は、 大きい方で、古いオブジェクトが入ります。オブジェクトは、まず、新しい世代領域に割り振られて、 長期間存続した場合に、最終的に古い世代領域にレベル上げされます。

世代別 GC は、長期間存続しない多くのオブジェクトに依存しています。世代別 GC は、 多くのリサイクル可能なスペースを保有する、新しい世代領域のストレージを再利用することに 活動を集中させて、一時休止時間を削減します。 ヒープ全体をコレクションするために時折でも長い休止時間をとるのではなく、新しい世代を より頻繁に収集するので、新しい世代領域が小さければ、休止時間も比較的短くなります。 しかし、世代別 GC は、時間が経過すると存続期間が長いオブジェクトが非常に多くなり 古い世代領域が満杯になる可能性があるという欠点があります。 そうした状態が発生したときに一時休止時間を最小限にするために、並行 GC と世代別 GC を組み合わせて 使用してください。 -Xgcpolicy:gencon オプションで、ガーベッジ・コレクションの一時休止の時間を 最小限にするために、並行 GC と世代別 GC を組み合わせて使用することを要求します。

### ヒープが満杯の環境

Java ヒープが満杯に近く、再利用できるガーベッジが少ししかない場合、即時使用可能なスペースがないため、新規オブジェクト用の要求がすぐには満たされないことがあります。ヒープが容量いっぱいに近い状態で操作されている場合、上記オプションのどちらが使用されているのかに関係なく、アプリケーション・パフォーマンスは悪くなります。 また、さらにヒープ・スペースの要求が続けば、アプリケーションはメモリー不足例外を受け取り、その例外がキャッチされ処理されなければ、JVM は終了します。この時点で、 JVM は、javadump 診断ファイルを生成します。このような状態の場合、-Xmx オプションを使用してヒープ・サイズを増やすか、 使用中のアプリケーション・オブジェクトの数を減らすことをお勧めします。詳しくは、「Diagnostics Guide (英語)」を参照してください。

## JVM によるシグナルの処理方法

JVM に関係のあるシグナルが生じると、シグナル・ハンドラーが呼び出されます。このシグナル・ハンドラーは、Java スレッドのために呼び出されたのか、または Java 以外のスレッドのために呼び出されたのかを判別します。

シグナルが Java スレッドのためのものである場合、JVM がシグナル処理の制御を行います。このシグナル用の アプリケーション・ハンドラーがインストール済みで、 -Xnosigchain コマンド行オプションを指定しなかった場合、 JVM の処理終了後に、このシグナル用のアプリケーション・ハンドラーが呼び出されます。

シグナルが Java 以外のスレッドのためのものであり、インストール済みのアプリケーションに、以前に JVM がそのシグナル用の独自のハンドラーをインストールしている場合、 制御はそのハンドラーに与えられます。そうでないと、シグナルが JVM または Java アプリケーションによって 要求されても、シグナルは無視されるか、または、デフォルトのアクションがとられます。

この規則の例外として、Windows では、外部的に生成されたシグナル (例えば、CTRL-BREAK を 入力した場合など) に対して、シグナル・ハンドラーを実行するために新しいスレッドが作成されます。 この場合、 JVM シグナル・ハンドラーがその処理を実行します。このシグナル用アプリケーション・ハンドラーが インストールされていて、-Xnosigchain コマンド行オプションを指定しなかった場合には、 このシグナル用のアプリケーション・ハンドラーが呼び出されます。

例外およびエラーのシグナルの場合、JVM は以下のいずれかを行います。

- 状態を処理し、リカバリーする。あるいは、
- 以下を JVM が行った場合、制御されたシャットダウン・シーケンスに入る。
  1. 障害発生時点の JVM の状態を示す Javadump を出力する。
  2. そのシグナルのためのユーザー・アプリケーションのシグナル・ハンドラーを呼び出す。
  3. アプリケーションがインストールした何らかの打ち切りフックを呼び出す。
  4. クリーン・シャットダウンのために必要なクリーンアップを実行する。

上記のフックを指定するランチャーの作成に ついて詳しくは、 http://www-106.ibm.com/developerworks/java/library/i-signalhandling/ を参照してください。 この項目は Java V1.3.1 を対象に書かれたものですが、それ以降のバージョンにも適用されます。

割り込みシグナルの場合にも JVM は制御されたシャットダウン・シーケンスに入りますが、この場合は、以下を行う正常終了として扱われます。

- そのシグナルのためのユーザー・アプリケーションのシグナル・ハンドラーを呼び出す。
- すべてのアプリケーション・シャットダウン・フックを実行する。
- アプリケーションがインストールした何らかの終了フックを呼び出す。
- 必要な JVM クリーンアップを実行する。

このシャットダウンは、Java メソッド `System.exit()` を呼び出すことによって開始されるシャットダウンと同一です。

JVM が使用するその他のシグナルは内部制御の目的のものであり、終了の原因となることはありません。関係のある 唯一の制御シグナルは SIGBREAK であり、これにより Javadump が生成されます。

### JVM が使用するシグナル

下記の表 1 は、JVM が使用するシグナルを示したものです。 以下に、タイプまたは使用法ごとに表にグループ化したシグナルを示します

- 例外: 致命的な状態が発生すると、常にオペレーティング・システムが同期して該当する例外シグナルを生じさせるもの。
- エラー: JVM がリカバリーできない状態を検出した場合で、JVM が SIGABRT を生じさせるもの。
- 割り込み: シャットダウンを要求するために、JVM プロセスの外部から割り込みシグナルを非同期に生じさせるもの。
- 制御: 制御の目的で JVM が使用するその他のシグナル。

表 1. JVM が使用するシグナル
シグナル名 | シグナル・タイプ | 説明 | -Xrs による使用不可
--- | --- | --- | ---
SIGINT | 割り込み | 対話式アテンション (CTRL-C)。 JVM は正常に終了します。 | あり
SIGTERM | 割り込み | 終了要求。JVM は正常に終了します。 | あり
SIGBREAK | 制御 | 端末からのブレーク・シグナル。JVM は、Javadump を取るためにこれを使用します。 | あり

|IBM JVM は、構造化された例外処理および |SetConsoleCtrlHandler() API を使用します。 |これらは、-Xrs で使用不可になります。-Xnosigchain は Windows で無視されます。

-Xrs (シグナル使用の削減) オプションを使用して、 JVM がほとんどのシグナルを処理してしまうのを防止します。詳しくは、 http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html にある、Sun の Java アプリケーション・ランチャーのページを参照してください。

JVM スレッド上のシグナル `2 (SIGINT)` および `15 (SIGTERM)` により、 JVM はシャットダウンします。したがって、アプリケーション・シグナル・ハンドラーでは、JVM を必要としなくなった場合を除き、 リカバリーを試みるべきではありません。

### ネイティブ・コード・ドライバーをシグナル・チェーニング・ライブラリーにリンクする

Runtime Environment にはシグナル・チェーニングが含まれています。シグナル・チェーニングにより、JVM は、独自のシグナル・ハンドラーをインストールするネイティブ・コードとの、より効率的な相互操作が可能となります。

シグナル・チェーニングにより、アプリケーションでは、msvcrt.dll の前に共用ライブラリー jsig.dll にリンクしてロードすることが可能になります。jsig.dll ライブラリーにより、`signal()` の呼び出しが確実にインターセプトされ、それらのハンドラーが JVM のシグナル・ハンドラーを置き換えることがなくなります。代わりに、これらの呼び出しは、新しいシグナル・ハンドラーを保管するか、または JVM がインストールしたハンドラーの後にそれらを「チェーニング」します。後で、これらのシグナルのいずれかが生じ、JVM をターゲットとしたものではないことが分かった場合、プリインストールされたハンドラーが起動します。

jsig.dll を使用するには、それを JVM を作成または組み込むアプリケーションとリンクします。

## XML 文書の変換

IBM SDK には、JAXP 1.3 仕様に準拠した XSLT4J プロセッサーと XML4J パーサーが含まれます。 これらのツールでは、XML 処理の実装とは関係なく、 XML 文書を解析および変換することができます。 「ファクトリー・ファインダー」を使用して SAXParserFactory、 DocumentBuilderFactory、および TransformerFactory の実装を見つけることによって、 アプリケーションは、コード変更の必要なく、異なる実装の間でスワップすることができます。

|IBM SDK に組み込まれている XML テクノロジーは、Apache Xerces Java および Apache Xalan Java と類似しています。 |詳しくは、http://xml.apache.org/xerces2-j/ |および http://xml.apache.org/xalan-j/ を参照してください。

XSLT4J プロセッサーでは、元の XSLT Interpretive プロセッサーまたは新しい XSLT Compiling プロセッサーを選択できます。 Interpretive プロセッサーは、ツールおよびデバッグ環境用に設計されたもので、 XSLT Compiling プロセッサーでサポートされない XSLT 拡張機能をサポートします。 XSLT Compiling プロセッサーは、ハイパフォーマンスのランタイム環境用に設計されたもので、 XSL スタイル・シートから変換エンジンであるトランスレット を生成します。 この方法により、ランタイム・アプリケーションから XML データへのスタイル・シート命令の解釈が分離されます。

XSLT Interpretive プロセッサーがデフォルト・プロセッサーです。 XSLT Compiling プロセッサーを選択するには、以下が可能です。

- jaxp.properties ファイル ( C:¥Program Files¥IBM¥Java50¥jre¥lib 内) の項目を変更します。または
- javax.xml.transform.TransformerFactory キーのシステム・プロパティーを org.apache.xalan.xsltc.trax.TransformerFactoryImpl に設定します。

jaxp.properties ファイルのプロパティーを実装するには、jaxp.properties.sample を C:¥Program Files¥IBM¥Java50¥ の jaxp.properties にコピーします。 このファイルには、TransformerFactory、SAXParserFactory、および DocumentBuilderFactory について、使用する実装を判別するための手順に関する全詳細も含まれます。

XSLT Compiling プロセッサーでの StreamSource オブジェクトの変換時にパフォーマンスを向上させるには、 サービス org.apache.xalan.xsltc.dom.XSLTCDTMManager のプロバイダーとして com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager クラスを指定します。 サービス・プロバイダーを判別するには、org.apache.xalan.xsltc.dom.XSLTCDTMManager が見つかるまで、 各ステップを試行してください。

1. システム・プロパティー org.apache.xalan.xsltc.dom.XSLTCDTMManager の設定を確認します。
2. ファイル C:¥Program Files¥IBM¥Java50¥lib¥xalan.properties のプロパティー org.apache.xalan.xsltc.dom.XSLTCDTMManager の値を確認します。
3. クラス名についてファイル META-INF¥services¥org.apache.xalan.xsltc.dom.XSLTCDTMManager の内容を確認します。
4. デフォルト・サービス・プロバイダー org.apache.xalan.xsltc.dom.XSLTCDTMManager を使用します。

javax.xml.transform.TransformerFactory オブジェクトが作成されると、 XSLT Compiling プロセッサーは、org.apache.xalan.xsltc.dom.XSLTCDTMManager サービスのサービス・プロバイダーを検出します。 その TransformerFactory オブジェクトを使用して作成された javax.xml.transform.Transformer または javax.xml.transform.sax.TransformerHandler オブジェクトはすべて、同じサービス・プロバイダーを使用します。 上記のいずれかの設定を変更して、新しい TransformerFactory オブジェクトを作成することによってのみ、 サービス・プロバイダーを変更できます。

### 旧バージョンの Xerces または Xalan の使用

旧バージョンの Tomcat を使用している場合、次の制限が適用されます。

旧バージョン の Xerces (2.0 より前) または Xalan (2.3 より前) を endorsed ディレクトリーに入れて使用している場合、アプリケーションを起動したときにヌル・ポインター例外が起きる可能性があります。 この例外は、これらの古いバージョンが jaxp.properties ファイルを正しく処理しないために 起きます。

この状態を避けるために、以下の次善策のいずれかを使用してください。

- 最新の Java API for XML Programming (JAXP) 仕様 (http://java.sun.com/xml/jaxp/index.html) を 実装しているアプリケーションを新規バージョンにアップグレードします。
- jaxp.properties ファイルを C:¥Program Files¥IBM¥Java50¥jre¥lib から削除します。
- C:¥Program Files¥IBM¥Java50¥jre¥lib にある jaxp.properties ファイルの項目のコメントを外します。
- IBM_JAVA_OPTIONS 環境変数を使用して明示的に SAX Parser、DocumentBuilder、あるいは Transformer ファクトリーを設定します。 例えば、次のようにします。

      set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
        org.apache.xerces.jaxp.SAXParserFactoryImpl

  または

      set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
        org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

  または

      set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
        org.apache.xalan.processor.TransformerFactoryImpl

- ご使用のアプリケーション・コードの中から、javax.xml.parsers.SAXParserFactory、javax.xml.parsers.DocumentBuilderFactory、 または javax.xml.transform.TransformerFactory のシステム・プロパティーを設定します。 例は、JAXP 1.3 の仕様を参照してください。

# SDK を使用した Java アプリケーションの開発

以下の節では、SDK for Windows を使用した Java アプリケーションの開発について説明します。 使用可能なツールの詳細については、『SDK ツール』を参照してください。

## Java アプリケーションのデバッグ

Java プログラムをデバッグするには、Java Debugger (JDB) アプリケーション、あるいは SDK for Windows で提供される Java Platform Debugger Architecture (JPDA) を 使用して通信する他のデバッガーを使用できます。

### Java Debugger (JDB)

Java Debugger (JDB) は、SDK for Windows に組み込まれています。このデバッガーは、 jdb コマンドで呼び出されると、JPDA を使用して JVM に接続します。 Java アプリケーションをデバッグするには、以下のようにします。

1. JVM を以下のオプションを付けて開始します。

       java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<port>
            MyApp <MyApp args>

2. JVM は開始しても、Java アプリケーションを開始させるまでは、実行を中断します。 別のセッションで、デバッガーを JVM に接続できます。

       jdb -attach <port number>

   デバッガーが JVM に接続したら、一連のコマンドを実行して Java アプリケーションを 検査し制御することができます。例えば、`run` と入力して Java アプリケーションを 実行させることができます。

JDB オプションについて詳しく調べるには、次のように入力します。

    jdb -help

JDB コマンドについて詳しく調べるには、次のようにします。

1. `jdb` と入力します。
2. JDB のプロンプトで、`help` と入力します。

また、JDB を使用して、リモート・マシンで実行中の Java アプリケーションもデバッグできます。 JPDA は、TCP/IP ソケットを使用してリモート JVM に接続します。

1. 前述のように JVM を開始します。
2. デバッガーをリモート・マシンに接続させます。

       jdb -attach <machine name または ip address>:<port number>

dt_socket トランスポートを使用してデバッグ・セッションを起動するとき、 指定のポートが空いていて使用できることを確認してください。

|Java Virtual Machine Debugging Interface (JVMDI) は、このリリースでサポートされていません。 |これは、Java Virtual Machine Tool Interface (JVMTI) に置き換えられています。

JDB と JPDA とその使用法について詳しくは、以下の Web サイトを参照してください。

- http://java.sun.com/products/jpda/
- http://java.sun.com/j2se/1.5.0/docs/guide/jpda/
- http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html

## アプリケーションが 32 ビットまたは 64 ビットのどちらの JVM で実行されているかを判別する

Java アプリケーションの中には、それが 32 ビット JVM で実行されているか、 64 ビット JVM で実行されているかを判別可能でなければならないものがあります。 例えば、アプリケーションにネイティブ・コード・ライブラリーがある場合、 32 ビットと 64 ビットの両方の稼働モードをサポートするプラットフォーム用に、 そのライブラリーは、32 ビットおよび 64 ビット形式で別々にコンパイルされる必要があります。 この場合、32 ビット・コードと 64 ビット・コードは混用できないため、 アプリケーションが実行時に正しいライブラリーをロードしなければなりません。

システム・プロパティー com.ibm.vm.bitmode を使用して、 アプリケーションは、JVM の稼働モードを判別することができます。 これは、以下の値を戻します。

- 32 - JVM は 32 ビット・モードで稼働
- 64 - JVM は 64 ビット・モードで稼働

アプリケーション・コード内から com.ibm.vm.bitmode を検査するには、次の呼び出しを使用します。

    System.getProperty("com.ibm.vm.bitmode");

## JNI アプリケーションの作成

ネイティブ・プログラムが JNI_CreateJavaVM() API 呼び出しで指定できる有効な JNI バージョン番号は、以下のとおりです。

- JNI_VERSION_1_2(0x00010002)
- JNI_VERSION_1_4(0x00010004)

このバージョン番号で決まるのは、使用する JNI ネイティブ・インターフェースのレベルのみです。 作成される JVM の実際のレベルは、J2SE ライブラリーによって指定されます (つまり、v5.0)。 JNI インターフェース API は、JVM によって実装される言語仕様や、 クラス・ライブラリー API、その他の範囲の JVM 動作に影響しません。 詳しくは、http://java.sun.com/j2se/1.5.0/docs/guide/jni を参照してください。

32 ビット用に作成されたものと 64 ビット用に作成されたものの 2 つの JNI ライブラリーがアプリケーションで必要な場合、 com.ibm.vm.bitmode システム・プロパティーを使用して、 32 ビットまたは 64 ビット JVM のどちらで実行しているかを判別し、適切なライブラリーを選択します。

注:
Java Native Interface (JNI) の Version 1.1 はサポートされません。

## アプレットの処理

アプレット・ビューアーを使用すれば、Web ページ (HTML ファイル) 内から APPLET タグを使った 参照で呼び出される 1 つ以上のアプレットを実行できます。 アプレット・ビューアーは、HTML ファイルで APPLET タグを見つけると、タグで指定されているとおりに 別のウィンドウでそのアプレットを実行します。

アプレット・ビューアーは、アプレットを表示するためのものなので、HTML タグを数多く含む Web ページ全体は表示できません。 Web ページ上で APPLET タグのみを解析し、他の HTML タグは解析しません。

### アプレット・ビューアーでアプレットを実行する

アプレットをアプレット・ビューアーで実行するには、コマンド・プロンプトで次のように入力します。

       appletviewer name

ここで、name には、以下のいずれかを指定します。

- アプレットを呼び出している HTML ファイル名
- アプレットを呼び出している Web ページの URL

例えば、アプレットの呼び出し元の HTML ファイルでアプレット・ビューアーを起動するには、 コマンド・プロンプトで次のように 入力します。

    appletviewer <demo>¥GraphLayout¥example1.html

ここで、<demo> は、デモ・パッケージを unzip した先の絶対パスに置き換えます。

例えば、`http://java.sun.com/applets/NervousText/example1.html` が、アプレットを呼び出している Web ページの URL であるとします。この Web ページで アプレット・ビューアーを呼び出すには、シェル・プロンプトで次のように入力します。

    appletviewer http://java.sun.com/applets/NervousText/example1.html

アプレット・ビューアーは、<META> タグの charset オプションは認識しません。 アプレット・ビューアーがロードするファイルが、システム・デフォルトとしてエンコードされていないと、 I/O 例外が発生する可能性があります。この例外を避けるには、アプレット・ビューアーを実行するときに、 -encoding オプションを使用します。 例えば、次のようにします。

    appletviewer -encoding JISAutoDetect sample.html

### アプレット・ビューアーでアプレットをデバッグする

アプレットをデバッグするには、アプレット・ビューアーの -debug オプションを使用します。アプレットをデバッグするときは、そのアプレットの呼び出し元の HTML ファイルが入っている ディレクトリーからアプレット・ビューアーを呼び出すことをお勧めします。 例えば、次のようにします。

    cd <demo>¥TicTacToe
    appletviewer -debug example1.html

ここで、<demo> は、デモ・パッケージを unzip した先の 絶対パスに置き換えます。

アプレット・ビューアーを使用してアプレットをデバッグする方法についてのドキュメンテーションは、 Sun の Web サイト http://java.sun.com で参照できます。

| | |

## 大規模ページのメモリー割り振りの構成

|

大規模ページをサポートするシステムで大規模ページ・サポートを使用可能にするには、 |-Xlp オプションを指定して Java を始動します。

|

大規模ページは、多くのメモリーを割り振って頻繁にそのメモリーにアクセスする |アプリケーションのパフォーマンスを向上させるために使用するものです。 |大規模ページによるパフォーマンスの向上は、 |主に Translation Lookaside Buffer (TLB) のミスの数を減らすことによって実現します。 |TLB は、より大きな仮想メモリー範囲をマップし、それにより、この向上をもたらします。

|

JVM が大規模ページを使用するためには、システムで、十分な数の連続した大規模ページが使用可能でなければなりません。 |十分なページが使用可能であっても、大規模ページを割り振れない場合、 |大規模ページが連続していない可能性があります。

|

大規模ページの割り振りは、 |JVM ユーザーのローカル管理ポリシーが「Lock pages in memory」を許可するように構成されている場合にのみ、正常終了します。

## CORBA サポート

Java 2 Platform, Standard Edition (J2SE) は、 J2SE (V1.5) の CORBA サポート公式仕様に定義されている仕様は最小限サポートしています。場合によっては、IBM J2SE ORB で、より新しいバージョンの仕様をサポートしている場合もあります。

### GIOP 1.2 のサポート

この SDK は、OMG 資料「formal/99-10-07」の第 13 章 および 15 章の CORBA 2.3.1 仕様で定義されているように、すべてのバージョンの GIOP を サポートしています。この OMG 資料は、以下のサイトから入手できます。

http://www.omg.org/cgi-bin/doc?formal/99-10-07

双方向 GIOP は、サポートされていません。

### ポータブル・インターセプターのサポート

この SDK は、資料「ptc/01-03-04」で OMG によって定義されているように ポータブル・インターセプターをサポートします。この資料は、以下のサイトから入手できます。

http://www.omg.org/cgi-bin/doc?ptc/01-03-04

ポータブル・インターセプターは、ORB へのフックで、これにより ORB サービスは ORB の通常の実行フローをインターセプトすることができます。

### Interoperable Naming Service のサポート

この SDK は、資料「ptc/00-08-07」で OMG によって定義されているように、 Interoperable Naming Service をサポートします。この資料は、以下のサイトから入手できます。

http://www.omg.org/cgi-bin/doc?ptc/00-08-07

一時ネーム・サーバー (`tnameserv` コマンド) が 使用するデフォルトのポートは、ORBInitialPort パラメーターが指定 されていない場合には、900 から 2809 に変更されます。これは、CORBA ネーミング・サービス用に IANA (Internet Assigned Number Authority) で登録されているポート番号です。このデフォルトに依存する プログラムは、このバージョンで作業する場合に更新しなければならない可能性があります。

一時ネーム・サーバーから戻される初期コンテキストは、現在、 `org.omg.CosNaming.NamingContextExt` です。コンテキスト `org.omg.CosNaming.NamingContext` への参照が限られている既存のプログラムは、そのまま動作するので、再コンパイルする必要はありません。

ORB は、Interoperable Naming Service 仕様で定義されている -ORBInitRef と -ORBDefaultInitRef パラメーターをサポートし、ORB::string_to_object 操作では、現在、 Interoperable Naming Service 仕様で定義されている ObjectURL ストリング・フォーマット (corbaloc: および corbaname:) がサポートされています。

OMG は、サービスを Interoperable Naming Service に登録するのに、 メソッド ORB::register_initial_reference を指定します。 しかし、このメソッドは Version 5.0 の Sun Java Core API では使用できません。 現行バージョンでサービスの登録が必要なプログラムは、このメソッドを IBM 内部の ORB 実装クラスで呼び出す必要があります。 例えば、サービス「MyService」を登録するには以下のようにします。

    ((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService",
    serviceRef);

ここで、`orb` は、`ORB.init()` から戻される `org.omg.CORBA.ORB` のインスタンスで、 `serviceRef` は、ORB に接続される CORBA オブジェクトです。 この手段は、一時的なもので、今後のバージョンと互換性はなく、また、IBM 以外の ORB にも 移植できません。

### ORB をトレースするためのシステム・プロパティー

ランタイム・デバッグ機能により、保守容易度が向上しました。これは、問題診断に有効ですし、 IBM サービス技術員から要求される場合もあります。 トレースは、3 つのシステム・プロパティーで制御されます。

- トレースをオンにするには、`com.ibm.CORBA.Debug=true` を設定してください。
- 送受信された GIOP メッセージをフォーマット設定し、トレースに追加するには、 `com.ibm.CORBA.CommTrace=true` を設定してください。 デフォルトで、ORB トレースは、orbtrc.DDMMYYYY.HHmm.SS.txt という形式の名前を持つファイルに入れられます。
- トレースを別のファイルに送るには、`com.ibm.CORBA.Debug.Output=<filename>` を設定してください。

例えば、イベントとフォーマット済み GIOP メッセージをトレースするには、以下のように入力します。

     java -Dcom.ibm.CORBA.Debug=true
    		-Dcom.ibm.CORBA.CommTrace=true myapp

パフォーマンスの低下につながるので、通常の業務ではトレースをオンにしないようにしてください。 トレースをオフに切り替えても、FFDC (First Failure Data Capture) は作動していて、重大なエラーだけは報告されます。 デバッグの出力ファイルが生成されたら、それを確認して問題について調べてください。例えば、 サーバーが ORB.shutdown() を実行せずに停止した可能性があります。

トレース出力の内容およびフォーマットは、バージョンによって異なります。

### ORB を調整するためのシステム・プロパティー

以下のプロパティーで、ORB の調整をすることができます。

- GIOP 1.2 のフラグメント化を制御するには、システム・プロパティー com.ibm.CORBA.FragmentSize を設定します。

  例えば、フラグメント・サイズを 4096 バイトに設定するには以下のようにします。

      java -Dcom.ibm.CORBA.FragmentSize=4096 myapp

  デフォルトのフラグメント・サイズは、1024 バイトです。フラグメント・サイズを 0 に設定して フラグメント化をオフにすることができます。

- 異機種混合のネットワークでは、CORBA 要求に対する応答が遅延したり、脱落したりする可能性があります。 システム・プロパティー com.ibm.CORBA.RequestTimeout を使用して、 最大の待ち時間を設定することができます。また、com.ibm.CORBA.LocateRequestTimeout を使用して LocateRequests のタイムアウトを制御できます。 例えば、このどちらの遅延も 30 秒に制限する場合は、以下のように入力します。

      java -Dcom.ibm.CORBA.RequestTimeout=30
           -Dcom.ibm.CORBA.LocateRequestTimeout=30 myapp

  デフォルトで、ORB は、無制限に応答を待ちます。接続の不必要な終了を避けるため、 タイムアウトに低すぎる値を設定しないでください。

- ご使用のプログラムが、ネットワークでサービスを提供しているとき、ORB が 受信要求を読み取る ポートの数を事前割り当ての値に設定しなければならない場合があります。 システム・プロパティー com.ibm.CORBA.ListenerPort を使用してこれを制御することができます。

  例えば、ORB がポート 1050 を使用するように設定する場合は以下のようにします。

      java -Dcom.ibm.CORBA.ListenerPort=1050 myapp

  このプロパティーを設定すると、ORB は、初期化後すぐに listen を開始します。 それ以外の場合は、要求されたときにのみ listen を開始します。

### ORB の Java 2 セキュリティー権限

Java 2 SecurityManager を使用して実行中に、CORBA API クラスのいくつかのメソッドを呼び出すと、 権限チェックが行われて、その結果 SecurityException になることがあります。 影響のあるメソッドには、以下のものがあります。

表 2. Java 2 SecurityManager を使用して実行中に影響を受けるメソッド
クラス/インターフェース | メソッド | 必要な権限
--- | --- | ---
org.omg.CORBA.ORB | init | java.net.SocketPermission resolve
org.omg.CORBA.ORB | connect | java.net.SocketPermission listen
org.omg.CORBA.ORB | resolve_initial_references | java.net.SocketPermission connect
org.omg.CORBA. portable.ObjectImpl | _is_a | java.net.SocketPermission connect
org.omg.CORBA. portable.ObjectImpl | _non_existent | java.net.SocketPermission connect
org.omg.CORBA. portable.ObjectImpl | OutputStream _request (String, boolean) | java.net.SocketPermission connect
org.omg.CORBA. portable.ObjectImpl | _get_interface_def | java.net.SocketPermission connect
org.omg.CORBA. Request | invoke | java.net.SocketPermission connect
org.omg.CORBA. Request | send_deferred | java.net.SocketPermission connect
org.omg.CORBA. Request | send_oneway | java.net.SocketPermission connect
javax.rmi. PortableRemoteObject | narrow | java.net.SocketPermission connect

ご使用のプログラムが、これらのメソッドのいずれかを使用している場合は、必要な権限が付与されている ことを確認してください。

### ORB 実装クラス

このリリースの ORB 実装クラスは以下のとおりです。

- org.omg.CORBA.ORBClass=com.ibm.CORBA.iiop.ORB
- org.omg.CORBA.ORBSingletonClass=com.ibm.rmi.corba.ORBSingleton
- javax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.UtilDelegateImpl
- javax.rmi.CORBA.StubClass=com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl
- javax.rmi.CORBA.PortableRemoteObjectClass= com.ibm.rmi.javax.rmi.PortableRemoteObject

これらは、デフォルト値です。これらのプロパティーを設定しないか、または、 実装クラスを直接参照することをお勧めします。移植性を保つためには、実装ではなく、 CORBA API クラスのみを参照してください。これらの値は、今後のリリースで変更になる可能性があります。

## RMI over IIOP

Java リモート・メソッド呼び出し (RMI) は、分散 Java プログラミングを行う単純なメカニズムを提供します。 RMI over IIOP (RMI-IIOP) では、Common Object Request Broker Architecture (CORBA) 標準の Internet Inter-ORB Protocol (IIOP プロトコル) を使用し、基本の Java RMI を拡張して通信を行います。 これにより、他の CORBA オブジェクト・リクエスト・ブローカー (ORB) が Java で実装されていても、他のプログラム言語で実装されていても、 それらとの直接対話が可能になります。

以下の資料が利用可能です。

- 「RMI-IIOP Programmer's Guide (英語)」は、RMI-IIOP プログラムの作成の概要です。 このガイドは、本資料のインストール時にインストールされています。
- demo ディレクトリーには、以下が含まれます。
  - Java Remote Method Protocol (JRMP) と IIOP プロトコルの間でスイッチ可能な「Hello World」の例 (demo¥rmi-iiop¥hello)
  - 標準 IDL プログラムと対話する「Hello World」の例 (demo¥rmi-iiop¥idl)
- 「Java Language to IDL Mapping (英語)」の文書は、 RMI-IIOP の詳細な技術仕様で、以下にあります。
  http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf

## RMI の Connection Handler Pool の実装

デフォルトでは、RMI Connection Handlers の スレッド・プーリングは使用可能になっていません。

RMI TCPTransport レベルで実装された接続プーリングを使用可能にするには、 以下のオプションを設定します。

    -Dsun.rmi.transport.tcp.connectionPool=true (あるいは、ヌル以外の任意の値)

このバージョンの Runtime Environment では、接続プール内のスレッド数を制限するために使用できる設定はありません。

詳しくは、Sun の Java のサイト http://java.sun.com を参照してください。

## 拡張双方向言語サポート

IBM SDK には、拡張双方向言語サポートが含まれています。詳しくは、 http://www-106.ibm.com/developerworks/java/jdk/bidirectional/index.html を参照してください。 双方向言語パッケージの Javadoc は、SDK でファイル docs/apidoc.zip に提供されます。

## 拡張 BigDecimal

| |

Java 5.0 以降、Sun により IBM BigDecimal クラスが java.math.BigDecimal として採用されました。 |IBM は com.ibm.math.BigDecimal の保守を止め、これは推奨されないものとして位置づけています。 |既存の Java コードをマイグレーションして java.math.BigDecimal を使用することをお勧めします。

|

新しい java.math.BigDecimal は、以前の java.math.BigDecimal と com.ibm.math.BigDecimal |の両方と同じメソッドを使用しています。 |java.math.BigDecimal を使用している既存のコードは、そのまま正常に動作します。

|

既存の Java コードを java.math.BigDecimal クラスを使用するようにマイグレーションするには、 |ご使用の java ファイルの先頭にある import ステートメントを、 |`import com.ibm.math.*;` から `import java.math,*;` に変更してください。

## ユーロ記号のサポート

IBM SDK および Runtime Environment は 、2002 年 1 月 1 日以降、欧州通貨共同体 (EMU) の国々のデフォルトの通貨 としてユーロを設定しています。

各国の以前の通貨を使用する場合は、Java コマンド行で `-Duser.variant=PREEURO` を指定してください。

英国、デンマーク、あるいはスウェーデンのロケールを使用している場合で、ユーロを使用するには、 Java コマンド行で `-Duser.variant=EURO` を指定してください。

# Java Communications API (JavaComm) の使用

Java Communications のアプリケーション・プログラミング・インターフェース (API) パッケージ (JavaComm) は、Runtime Environment for Windows と一緒に使用するために提供されているオプションのパッケージです。 JavaComm は、SDK あるいは Runtime Environment とは別に単独でインストールします。

JavaComm API により Java アプリケーションは、 ボイス・メール、ファクシミリ、およびスマートカードなどのテクノロジーに シリアルおよびパラレル・ポート通信を、プラットフォームに依存しないで実施することができます。 ご使用のアプリケーション用にシリアル・ポートあるいはパラレル・ポート通信のコードを書いて、 それらのファイルをアプリケーションに組み込むことができます。

Java Communications API は、Electronic Industries Association (EIA)-232 (RS232) シリアル・ポートと米国電気電子学会 (IEEE) 1284 パラレル・ポートをサポートし、また、 IBM Version 5.0 Runtime Environment の入ったシステムに対応しています。

Java Communications API を使用すると、以下のことができます。

- システムのポートをリストする。
- ポートの所有権をオープンし、要求する。
- Java Communications API を使用するアプリケーション間のポート所有権の競合を解決する。
- イベント通知によって非同期および同期入出力ポートのモニタリングを行う。
- ポートの状態変更を記述する bean スタイルのイベントを受信する。

## Java Communications API のインストール

Java Communications API をインストールする前に SDK または Runtime Environment がインストール済みであることを 確認してください。

Java Communications API を zip ファイルからインストールするには以下のようにします。

1. Java Communications API zip ファイル ibm-java2-javacomm-50-win-i386.zip を SDK または Runtime Environment がインストールされているディレクトリーに入れます。デフォルト・ ディレクトリーにインストールした場合、これが C:¥Program Files¥IBM¥Java50¥ になります。
2. ファイルを unzip してください。以下のファイルが抽出されます。
   - jre¥lib¥ext¥comm.jar
   - jre¥bin¥ibmcomm.dll
   - jre¥lib¥javax.comm.properties
   - docs¥javacomm¥License.html

   Runtime Environment をインストールしたときに、デフォルト・ディレクトリーを受け入れている場合は、 comm.jar ファイルは、C:¥Program Files¥IBM¥Java50¥jre¥lib¥ext に入ります。

   Java Communications API ファイルを別のディレクトリーに unzip すると、上記のファイルは同じディレクトリー構造で 配置されますが、C:¥Program Files¥IBM¥Java50¥ は、ファイルを unzip したディレクトリーと置き換えられます。

## Java Communications API の構成

Java Communications API をインストール後、以下のことをしてください。

- シリアルおよびパラレル・ポートのアクセス・モードを変更する。
- Java のインストール時に設定していない場合は、PATH の設定をする。『PATH の設定』を参照してください。

## Java Communications API での印刷に関する制限

Java Communications API を使用して印刷をするときは、プリンターで 「用紙送り」または「継続」または、類似したボタンを押す必要があります。

## Java Communications API のアンインストール

Java Communications API をアンインストールするには、Runtime Environment をインストールした ディレクトリーから以下のファイルを削除します。

- jre¥lib¥ext¥comm.jar
- jre¥bin¥ibmcomm.dll
- jre¥lib¥javax.comm.properties
- docs¥javacomm¥License.html

Runtime Environment は、デフォルトで C:¥Program Files¥IBM¥Java50¥ ディレクトリーにインストールされます。

## Java Communications API ドキュメンテーション

API ドキュメンテーションと Java Communications API のサンプルは、次の Sun Web サイト http://java.sun.com で参照できます。

# Java アプリケーションの配置

## Java Plug-in の使用

Java Plug-in は Web ブラウザー・プラグインです。 Java Plug-in を使用すると、 アプレットや Bean を Web ブラウザーで実行するために、 Web ブラウザーのデフォルト JVM を迂回して、代わりに、選択した Runtime Environment を使用することができます。

アプレットがロードを完了できるようにして、ブラウザーが「ハング」しないようにしてください。 例えば、「戻る」ボタンを使用してから、 アプレットのロード中に「進む」ボタンを使用すると、HTML ページがロードできない可能性があります。

Java Plug-in に関しては、Sun の http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/ に記述があります。

### サポートされるブラウザー

|

|表 3. Java Plug-in でサポートされるブラウザー
|オペレーティング・システム | |Internet Explorer | |Netscape | |Mozilla
--- | --- | --- | ---
|Windows 2000 | |5.5 SP2、6.0 | |4.78、6.2.2、7.2 | |1.4.x、1.5.x、1.6.x、1.7.x、Firefox 1.0.x
|Windows XP | |6.0 | |4.78、6.2.2、7.2 | |1.4.x、1.5.x、1.6.x、1.7.x、Firefox 1.0.x
|Windows Server 2003 | |6.0 | |4.78、6.2.2、7.2 | |1.4.x、1.5.x、1.6.x、1.7.x、Firefox 1.0.x

|

Windows 2000 のデフォルト・ブラウザーである Internet Explorer 5.01 はサポートされません。

### 共通 Document Object Model (DOM) サポート

特定のブラウザーによる制約のために、org.w3c.dom.html パッケージのすべての機能を実装できない場合があります。

- これらの機能の一部については sun.plugin.dom.exception.NotSupportedException がスローされます。
- ブラウザーが特定の機能をサポートしていないときには、sun.plugin.dom.exception.InvalidStateException がスローされます。

### DBCS パラメーターの使用

Java Plug-in は、2 バイト文字 (例えば、繁体字中国語 BIG-5、韓国語、日本語) を タグ `<APPLET>`、`<OBJECT>`、および `<EMBED>` の パラメーターとしてサポートします。 Java Plug-in がパラメーターを解析できるように、HTML 文書の正しい文字エンコード方式を選択しなければなりません。HTML 文書の文字エンコード方式は、 `<HEAD>` セクションで `<META>` タグを使用して次のように指定します。

    <meta http-equiv="Content-Type" content="text/html; charset=big5">

この例は、ブラウザーに、中国語 BIG-5 文字エンコード方式を使用して HTML ファイルを解析するように指示するものです。すべてのパラメーターが正しく Java Plug-in に渡されます。 しかし、一部の古いバージョンのブラウザーでは、このタグが正しく認識されないことがあります。その場合には、ブラウザーにこのタグを無視するように強制できますが、エンコードを手動で変更しなければならないこともあります。

次のようにして、HTML ファイルの解析に使用するエンコード方式を指定することができます。

- Internet Explorer 5/6 「表示」メニュー ->「エンコード」
- Netscape 4: 「表示」メニュー ->「文字セット」
- Netscape 6: 「表示」メニュー ->「文字コード」

## Web Start の使用

Java アプリケーションを配置するために Java Web Start を使用できます。Web Start によって ユーザーは、Web から直接アプリケーションを起動し、管理することができます。Java Web Start を使用すれば、Web で簡単にアプリケーションを開始することができます。その際、 確実に最新バージョンを稼働することができ、インストールやアップグレードの手間も省けます。 Java Web Start により、ソフトウェアのダウンロードやインストールの必要もなくなり、時間のかかる インストール・オプションの設定も回避できます。

|http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources に文書化されている java-vm-args のほかに、Web Start は、ガーベッジ・コレクション・ポリシーを設定する |-Xgcpolicy をサポートします。

Web Start をサポートするブラウザーについて詳しくは、『サポートされるブラウザー』を参照してください。

Web Start についての詳細は、http://java.sun.com/products/javawebstart および http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html を参照してください。アプリケーションの配置についての詳細は、http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html を参照してください。

### Web Start の実行

Web Start は、以下の 3 つの方法で起動できます。

1. .jnlp ファイルを参照する、Web ページ上のリンクを選択します。
2. コマンド・プロンプトで、 `javaws <URL>` と入力します。ここで、`<URL>` は .jnlp ファイルの位置です。
3. |既に Java Web Start を使用してアプリケーションをオープンしている場合は、 |jre¥bin ディレクトリーから |javaws を実行し、Java アプリケーション・キャッシュ・ビューアーを起動します。

アプリケーションは、ダウンロードされると、Java アプリケーション・キャッシュに保管されます。 そのアプリケーションが再アクセスされたときに、Java Web Start は、 アプリケーションの最新のバージョンがあればダウンロードし、 なければキャッシュ内のものを使用します。

.jnlp ファイルでエラーが発生すると (無効なタグ名など)、Web Start はエラー・メッセージを表示せずに失敗します。

## Java アプリケーションの出荷

Java アプレットと異なり、Java アプリケーションは、インストールおよびランタイム・サービスについて Web ブラウザーに依存することができません。 Java アプリケーションを出荷する場合、 ソフトウェア・パッケージは、多くの場合、以下のパーツから構成されます。

- 独自のクラス、リソース、およびデータ・ファイル
- インストール手順またはインストール・プログラム

アプリケーションを実行するには、ユーザーに Runtime Environment for Windows が必要です。 SDK for Windows ソフトウェアには Runtime Environment が含まれます。ただし、 ユーザーが SDK for Windows ソフトウェアをインストール済みであることを前提にすることはできません。

SDK for Windows ソフトウェアのライセンスでは、 SDK のファイルをアプリケーションとともに再配布することが許可されません。 ライセンス交付を受けた SDK for Windows がターゲット・マシンにインストールされていることを確認してください。

| | |

# JVM 間でのクラス・データの共用

|

IBM Virtual Machine (VM) では、共用メモリーのキャッシュに保管することによって、 |VM 間でブートストラップおよびアプリケーション・クラスを共用することができます。 |複数の VM がキャッシュを共用する場合、クラス共用で全体の仮想メモリー使用量が削減されます。 |また、クラス共用によって、キャッシュ作成後の VM の起動時間も短縮されます。 |共用クラス・キャッシュは、どのアクティブ VM からも独立したもので、 |キャッシュを開始した VM の存続期間を超えて存続します。

| |

## クラス共用の概要

|

IBM SDK では、可能な限り多くのクラスを共用でき、 |一方、ユーザーはそれを意識しません。

| |

### キャッシュの内容

|

共用クラス・キャッシュには、読み取り専用の静的クラス・データと、クラスを記述するメタデータが含まれます。 |任意の VM が、キャッシュの読み取りや更新を行えます。共用している VM は、同じリリースでなければなりません。 |実行時バイトコード変更を使用する場合は、注意が必要です。 |(『実行時バイトコード変更』を参照)

| |

### キャッシュの動的更新

|

共用クラス・キャッシュは任意の VM の存続期間を超えて存続するため、 |ファイル・システムで JAR やクラスに行われた可能性がある変更を反映するよう、 |キャッシュは動的に更新されます。動的更新により、キャッシュを使用するアプリケーションでキャッシュを意識する必要がなくなります。

| |

### クラス共用の使用可能化

|

VM の始動時に -Xshareclasses オプションを使用してクラス共用を使用可能にすると、 |VM を既存のキャッシュに接続させるか、それが存在しない場合には作成します。 |VM によってロードされるすべてのブートストラップおよびアプリケーション・クラスが、 |デフォルトで共用されます。カスタム・クラス・ローダーは、アプリケーション・クラス・ローダーを継承している場合、 |自動的に共用します。それ以外の場合は、VM で提供される Java ヘルパー API |を使用してそのキャッシュにアクセスする必要があります。(『カスタム・クラス・ローダーの共用クラスへの適応』を参照)

| |

### キャッシュ・セキュリティー

|

共用クラス・キャッシュへのアクセスは、オペレーティング・システムの許可と |Java セキュリティーの許可によって制限されます。 |クラスの共用を登録したクラス・ローダーのみが、共用クラス・キャッシュにクラスを追加できます。 |Java SecurityManager がインストールされている場合、 |デフォルト・ブートストラップ、アプリケーション、および拡張クラス・ローダーを除いて、 |クラス・ローダーには、クラス SharedClassPermission を java.policy ファイルに追加することによって、 |クラス共用の許可を付与する必要があります。(『SharedClassPermission の使用』を参照) |RuntimePermission 「createClassLoader」は、新しいクラス・ローダーの作成を制限し、 |したがって、キャッシュへのアクセスも制限します。

| |

### キャッシュの存続期間

|

1 つのシステムに複数のキャッシュが存在することが可能で、それらは、 |-Xshareclasses コマンドのサブオプションとして名前で指定されます。 |1 つの VM は、常に 1 つのキャッシュにのみ接続できます。 |キャッシュ・サイズは、始動時に -Xscmx<n>[k|m|g] で指定し、その後、 |キャッシュの存続期間中このサイズは変わりません。 |キャッシュは、-Xshareclasses コマンドのサブオプションを使用して明示的に破棄されるか、 |システムがリブートされるまで存在します。

| |

### キャッシュ・ユーティリティー

|

キャッシュ・ユーティリティーはすべて、-Xshareclasses コマンドのサブオプションです。 |-Xshareclasses:help で、使用可能なサブオプションのリストが表示されます。

| |

## クラス共用のためのコマンド行オプションの使用

|

クラス共用は、-Xshareclasses および -Xscmx コマンド行オプションにより使用可能にし、構成します。

|

|
- -Xscmx<size>[k|m|g] | |
  |
  - キャッシュ・サイズを指定します。 |このオプションは、キャッシュを作成中で、同じ名前の既存のキャッシュがない場合にのみ適用されます。 |デフォルト・キャッシュ・サイズは、プラットフォームによって異なります。 |使用されるサイズ値を知るには、コマンド行引数として -verbose:sizes を追加します。最小キャッシュ・サイズは 4 KB です。 |最大キャッシュ・サイズも、プラットフォームによって異なります。 |(『キャッシュ・サイズの制限』を参照)
|
- -Xshareclasses:<suboption1>[,<suboption2>...] | |
  |
  - クラス共用を使用可能にします。多くのサブオプションを指定でき、その中に複数のキャッシュ・ユーティリティーが含まれます。 |キャッシュ・ユーティリティーは、VM を始動せずに、指定されたキャッシュに必要な操作を実行します。 |複数のサブオプションをコンマで区切って組み合わせられますが、 |各キャッシュ・ユーティリティーは相互に排他的です。
  |-Xshareclasses オプションで以下のサブオプションを使用できます。 |例えば、-Xshareclasses:help のようにします。 | |
  |
  - help | |
    |
    - すべてのコマンド行オプションをリストします。
  |
  - name=<name> | |
    |
    - 指定された名前のキャッシュに接続します。そのキャッシュが存在しない場合は、それを作成します。 |listAllCaches ユーティリティー・オプションで、 |現在使用可能なキャッシュが示されます。名前を指定しないと、 |デフォルト名「sharedcc_」に現行ユーザー名が付加されてキャッシュ名が生成されます。
  |
  - verbose | |
    |
    - verbose を指定すると、キャッシュ入出力アクティビティーに関する詳細出力が生成され、 |保管および検出されたクラスに関する情報がリストされます。 |クラス・ローダーには、固有 ID (ブートストラップ・ローダーは常に 0) |が与えられ、出力には現在有効なクラス・ローダー階層が示されます。各クラス・ローダーは、 |この階層において、それぞれの親にクラスを要求しないと、ロードすることができません。 |失敗した要求が多く見られるのが通常です。この動きは、クラス・ローダー階層で予想されるものです。 |クラス共用が使用可能の場合、標準オプション -verbose:class |でもクラス共用の詳細出力を使用可能にします。
  |
  - modified=<modified context> | |
    |
    - このオプションは、 |実行時にバイトコードを変更する可能性があるバイトコード・エージェントがインストールされている場合に必要です。 |このオプションを指定せず、バイトコード・エージェントがインストールされている場合、 |キャッシュで保管または検出されるクラスはありません。 |<modified context> は、ユーザーが選択した記述子で、例えば、 |「myModification1」などです。これは、コンテキスト myModification1 を使用する JVM のみが同じクラスを共用するように、 |キャッシュを分割します。 |例えば、ある変更コンテキストで「HelloWorld」を実行し、その後、別の変更コンテキストでそれを再実行した場合、 |キャッシュにすべてのクラスが 2 回保管されます。
  |
  - destroy (ユーティリティー・オプション) | |
    |
    - name=<name> |サブオプションで指定された名前を使用するキャッシュを破棄します。 |名前が指定されない場合、デフォルト・キャッシュが破棄されます。 |キャッシュは、それを使用するすべての VM がシャットダウン済みで、ユーザーに十分な許可がある場合にのみ、破棄可能です。
  |
  - destroyAll (ユーティリティー・オプション) | |
    |
    - ユーザーに使用可能なすべてのキャッシュの破棄を試行します。 |キャッシュは、それを使用するすべての VM がシャットダウン済みで、ユーザーに十分な許可がある場合にのみ、破棄可能です。
  |
  - expire=<time in minutes> |(ユーティリティー・オプション) | |
    |
    - 指定された期間に使用されなかったすべてのキャッシュを破棄します。
  |
  - listAllCaches (ユーティリティー・オプション) | |
    |
    - システム上のすべてのキャッシュをリストし、それが使用中であるか、および最後にいつ使用されたかを示します。
  |
  - printStats (ユーティリティー・オプション) | |
    |
    - name=<name> サブオプションで指定されたキャッシュに関する |要約統計情報を表示します。 |名前が指定されない場合、デフォルト・キャッシュに関する統計が表示されます。 |表示される最も有用な情報は、 |キャッシュがどのぐらい満杯であるか、また、それにいくつのクラスが含まれるかです。 |「stale」クラスとは、ファイル・システム上で更新され、そのためキャッシュが「stale」とマーク付けしたクラスです。 |stale クラスは、キャッシュからパージされません。 |詳しくは、「Diagnostics Guide (英語)」を参照してください。
  |
  - printAllStats (ユーティリティー・オプション) | |
    |
    - name=<name> サブオプションで指定されたキャッシュの内容に関する |詳細情報を表示します。 |名前が指定されない場合、デフォルト・キャッシュに関する統計が表示されます。 |すべてのクラスは、ロード元の位置への参照とともに発生順にリストされます。 |詳しくは、「Diagnostics Guide (英語)」を参照してください。

| |

## キャッシュの作成、データ取り込み、モニター、および削除

|

クラス共用を使用可能にするには、アプリケーション・コマンド行に |-Xshareclasses[:name=<name>] を追加します。 |VM は、指定された名前の既存キャッシュに接続するか、その名前の新しいキャッシュを作成します。 |新しいキャッシュが作成された場合、キャッシュが満杯になるまで、 |ロードされるすべてのブートストラップおよびアプリケーション・クラスがそれに取り込まれます。 |2 つ以上の VM が同時に始動された場合、 |それらすべてが同時にキャッシュにデータの取り込みをします。

|

キャッシュが作成されたことを確認するには、`java -Xshareclasses:listAllCaches` を実行します。 |共用されるクラス数とクラス・データ量を確認するには、`java -Xshareclasses:[name=<name>],printStats` を実行します。 |(このユーティリティーは、アプリケーション VM の終了後か、別のコマンド・ウィンドウで実行できます)

|

キャッシュからロードされる、またはキャッシュに保管されるクラスを確認するには、 |アプリケーション・コマンド行に `-Xshareclasses:[name=<name>],verbose` を追加します。

|

作成されたキャッシュを削除するには、`java -Xshareclasses:[name=<name>],delete` を実行します。 |キャッシュに多くの stale クラスが含まれるか、キャッシュが満杯で、より大きいキャッシュを作成したい場合にのみ、 |キャッシュを削除する必要があります。

|

キャッシュ・サイズは、個別のアプリケーションに応じて調整することが推奨されます。 |これは、デフォルトが最適サイズである可能性が低いためです。 |最適なキャッシュ・サイズを判別する最も良い方法は、 |大容量のキャッシュを指定 (-Xscmx を使用) してアプリケーションを実行し、 |どのぐらいのクラス・データが保管されたかを printStats で判別することです。 |printStats で示された値に、予備のために少量を加算します。 |クラスは、VM 存続期間中のどの時点でもロードされる可能性があるため、 |この分析はアプリケーションの終了後に行うのが最適です。 |ただし、キャッシュが満杯であることが、それに接続された VM のパフォーマンスや機能に悪影響を与えることはありません。 |そのため、キャッシュ・サイズを必要より小さくすることは、非常に合理的です。

|

キャッシュが満杯になると、そのキャッシュを使用しているすべての VM のコマンド行に、メッセージが出力され、 |それ以降のクラスは、その VM 自身のプロセス・メモリーにロードされます。 |満杯のキャッシュ内のクラスは、依然として共用可能ですが、 |満杯のキャッシュは読み取り専用で、新しいクラスで更新することはできません。

| |

## パフォーマンスとメモリー使用量

|

クラス共用は、類似したコードを実行する複数の VM を使用するシステムで特に有用です。 |そうしたシステムは、仮想メモリー使用量を削減することができます。 |また、VM の始動とシャットダウンを頻繁に行うシステムでも有用で、起動時間を改善することができます。

|

新しいキャッシュの作成とデータ取り込みのオーバーヘッドは、わずかです。 |1 つの VM に対する VM 起動時間は通常、ロードされるクラスの数に応じて、クラス共用を使用していないシステムと比べて 0 から 5 % 抑えられます。 |データ取り込み済みのキャッシュを使用すると、VM 起動時間は通常、 |オペレーティング・システムとロードされるクラスの数に応じて、クラス共用を使用していないシステムと比べて 10 % から 40 % 向上します。 |複数の VM が並行して稼働する場合、全体の起動時間がさらに大きく向上します。

|

クラス共用によりアプリケーションを実行する場合、オペレーティング・システム・ツールを使用して、 |仮想メモリー使用量の削減を確認することができます。

| |

## クラス共用の使用の制限と考慮事項

| |

### キャッシュ・サイズの制限

|

理論上の最大キャッシュ・サイズは 2 GB です。キャッシュは次の要因によって制限されます。

|

|

|
- 使用可能なディスク・スペース。ユーザー・プロファイルの下の "javasharedresources" |ディレクトリーにクラス・データを保管するために、ディスク上にファイルが作成されます。 |このディレクトリーは通常、 |C:¥Documents and Settings¥<username>¥Application Data¥ に設定されます。 |このファイルは、Windows の再始動ごとに削除されます。
|
- 使用可能な仮想アドレス・スペース。プロセスの仮想アドレス・スペースは、 |共用クラス・キャッシュと Java ヒープで共用されるため、 |Java ヒープの最大サイズを増やすと、作成可能な共用クラス・キャッシュのサイズが減ります。

| |

### 実行時バイトコード変更

|

バイトコードの変更が可能な JVMTI エージェントを使用する VM は、 |modified=<modified_context> サブオプションがコマンド行で使用されていない限り、クラスを共用できません (前述)。 |modified context (変更コンテキスト) は、実行される変更のタイプを記述する、ユーザー指定の記述子です。 |指定された変更コンテキストを使用するすべての VM は、 |キャッシュに保管された変更クラスが、別の VM によってロードされたときに、期待どおりに変更されるように、 |各クラスに対して予測可能で反復可能な方法でバイトコードを変更する必要があります。 |変更が予測可能でなければならない理由は、共用クラス・キャッシュからロードされたクラスを |エージェントがもう一度再変更することができないためです。 |変更されたバイトコードと変更されていないバイトコードを同じキャッシュに保管することができます。 |このトピックについて詳しくは、「Diagnostics Guide (英語)」を参照してください。

| |

### オペレーティング・システムの制限

|

32 ビット・アプリケーションと |64 ビット・アプリケーションの両方を実行できるオペレーティング・システムの場合、 |32 ビット VM と 64 ビット VM の間でクラス共用は許されません。 |listAllCaches サブオプションでは、使用される VM のアドレス・モードに応じて、 |32 ビットまたは 64 ビットのキャッシュがリストされます。

|

共用クラス・キャッシュは、 |システムに存在するキャッシュに関する識別情報を保管するためのディスク・スペースを必要とします。 |この情報は、ユーザー・プロファイル・ディレクトリーに置かれます。 |識別情報ディレクトリーが削除された場合、 |VM はシステム上の共用クラスを識別できず、キャッシュを再作成する必要があります。

|

共用クラス・キャッシュにアクセスするための許可は、 |オペレーティング・システムによって執行されます。キャッシュ名が指定されない場合、 |同じシステム上の複数のユーザーがデフォルトで独自のキャッシュを作成するように、 |デフォルト名にユーザー名が付加されます。

| |

### SharedClassPermission の使用

|

クラス共用と併せて SecurityManager が使用され、 |実行アプリケーションがそれ自身のクラス・ローダーを使用する場合、 |クラスを共用するにはその前に、これらのクラス・ローダーにクラス共用の許可が付与されていなければなりません。 |クラス・ローダーのクラス名 (ワイルドカードを使用可) と、付与されるアクセス権を決める "read"、"write"、または "read,write" |のいずれかを指定して、java.policy ファイルに SharedClassPermission を追加します。 |例えば、次のようにします。 |

|

    permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";

クラス・ローダーに適切な SharedClassPermission がなく、それがクラスを共用しようとすると、 |AccessControlException がスローされます。 |デフォルトのブートストラップ、アプリケーション、または拡張クラス・ローダーの許可は、 |変更または削減できません。

| |

## カスタム・クラス・ローダーの共用クラスへの適応

|

ほとんどの Java アプリケーションは、VM 独自のクラス・ローダーを使用するか、 |java/net/URLClassLoader を継承するカスタム・クラス・ローダーを持ちます。 |これらのクラス・ローダーを使用するアプリケーションは、 |ブートストラップおよびアプリケーション・クラスを自動的に共用することができます。 |java/net/URLClassLoader を継承しないカスタム・クラス・ローダーには、 |クラス共用を利用するための変更が必要になります。 |SecurityManager が使用される場合、すべてのカスタム・クラス・ローダーに、クラス共用の許可が付与される必要があります。『SharedClassPermission の使用』を参照してください。 |IBM は、カスタム・クラス・ローダーのさまざまなタイプに応じたいくつかの Java インターフェースを提供しています。 |これにより、そのクラス・ローダーが、共用クラス・キャッシュでクラスを検出および保管することができます。 |これらのクラスは、com.ibm.oti.shared パッケージにあります。 |このパッケージの Javadoc は、SDK でファイル docs/apidoc.zip に提供されます。 |これらのインターフェースの使用方法について詳しくは、 |「Diagnostics Guide (英語)」を参照してください。

# 独立ソフトウェア販売会社のサービスおよびサポート

IBM Solutions Developer Program に準ずるプログラム・コードのサービスを受けられる場合、 通常の利用方法によって、または Web (http://www-1.ibm.com/partnerworld/) で IBM Solutions Developer Program にお問い合わせください。

サービス契約 (つまり、IBM の Personal Systems Support Line または各国における同等サービス) を購入している場合は、 そのサービス契約の条件によって、そのプログラムに関して受けられるサービス (該当がある場合) が決まります。

# アクセシビリティ

この SDK および Runtime Environment で提供されるこのユーザー・ガイドは、スクリーン・リーダーを使用して テストしてあります。 このユーザー・ガイドは、ホームページ・リーダーあるいは JAWS スクリーン・リーダーなどの スクリーン・リーダーを使用することができます。

ユーザー・ガイドのフォント・サイズを変更するには、ご使用のブラウザーで提供される機能を使用して ください。通常、「表示」メニュー・オプションにあります。

キーボード・ナビゲーションが必要なユーザーの場合、Swing アプリケーション用の便利なキー・ストロークの説明が http://www-128.ibm.com/developerworks/java/jdk/additional/ の「Swing Key Bindings」にあります。

## iKeyman のアクセシビリティ

|GUI に加えて、iKeyman ツールには、コマンド行ツールの |IKEYCMD があり、これには、iKeyman GUI と同じ機能があります。 |IKEYCMD では、鍵、証明書、および認証要求を管理することができます。 |IKEYCMD は、アプリケーションで証明書や鍵の管理タスクにカスタム・インターフェースを追加する必要が |ある場合に使用するプログラムおよびネイティブ・シェル・スクリプトから呼び出すことができます。 |IKEYCMD は、iKeyman で現在サポートするすべての型の |鍵データベース・ファイルを作成できます。 |また、IKEYCMD は、認証要求を作成したり、CA 署名証明書をインポートしたり、 |さらに自己署名証明書を管理したりすることもできます。

IKEYCMD コマンドを実行するには、以下のように入力してください。

    java [-Dikeycmd.properties=<properties file>] com.ibm.gsk.ikeyman.ikeycmd
    <object> <action> [options]

ここで、

<object>
  以下のいずれかです。
  -keydb
    鍵データベース (CMS 鍵データベース・ファイル、WebDB 鍵リング・ファイル、または SSLight クラスのいずれか) に 対して行われるアクション
  -cert
    鍵データベース内の証明書に対して行われるアクション
  -certreq
    鍵データベース内の認証要求に対して行われるアクション
  -version
    IKEYCMD のバージョン情報を表示します。
  -help
    IKEYCMD の呼び出しに関するヘルプを表示します。
<action>
  |オブジェクトに対して行われる特定のアクション。 |オブジェクトに対して使用可能なアクションを表示するには、 |引数としてオブジェクトのみを渡して IKEYCMD を起動します。 |コンテキスト・ヘルプが表示されて、そのオブジェクトに使用可能なアクションを示します。
-Dikeycmd.properties
  この Java の呼び出しに使用するオプションのプロパティー・ファイルの名前を指定します。 デフォルトのプロパティー・ファイルの ikeycmd.properties がサンプル・ファイルとして 提供されていますが、これを変更して、Java アプリケーションで使用することができます。

注:
オブジェクトおよびアクションのキーワードは、 指定された順序にする必要があります。 ただし、オプションは、オペランドとの対で指定するのであれば、定位置にある 必要はなく、任意の順序でかまいません。

詳しくは、http://www.ibm.com/developerworks/java/jdk/security/index.html の「iKeyman User Guide (英語)」を参照してください。

## Swing での JComboBox コンポーネントのキーボードによる探索

カーソル・キーを使用して JComboBox コンポーネントのドロップダウン・リストを上下に探索する場合、実際に項目が選択されるまで コンボ・ボックスのボタンあるいは編集可能フィールドは変更されません。 これは、このリリースで望ましい動作で、キーボードによる探索動作とマウスによる探索動作の 一貫性が保たれるため、アクセス可能度や使用可能度が向上します。

## Web Start のアクセシビリティ

IBM Java Web Start v5.0 では、前のリリースよりアクセス可能度と使用可能度において 種々の改善がなされて、例えば、スクリーン・リーダーのサポートが充実し、 キーボード・ナビゲーションも改善されています。

コマンド行のみで、Web Start 用に使用可能にされた Java アプリケーションを起動することができます。 設定オプションを変更するには、ユーザーのホーム・ディレクトリーにある構成ファイル Application Data¥IBM¥Java¥Deployment¥deployment.properties を編集する必要があります。 このファイルは、編集する前にバックアップをとってください。 Java アプリケーション・キャッシュ・ビューアーで指定できる設定がすべて構成ファイルにあるわけではありません。

# セキュリティーに関する一般注意事項

JCE 無制限管轄ポリシー・ファイルは、http://www.ibm.com/developerworks/java/jdk/security/index.html から入手できます。 IBM セキュリティー・パッケージ JCE、JCEFIPS、JSSE2、JSSEFIPS、JGSS、JAAS、およびハードウェア暗号方式に関する文書も、 この Web サイトで入手できます。

# 既知の制限

IBM 32-bit SDK for Windows v5.0 における以下の制限に注意してください。

- IBM 32-bit SDK for Windows v5.0 は、以下のロケールをサポートします。
  - ベンガル (bn_IN)
  - マラヤーラム語 (ml_IN)
  - オリヤー語 (or_IN)
  ただし、これらのロケールのフォントは、AWT コンポーネントでは機能しない可能性があります。

- IBM 32-bit SDK for Windows v5.0 は、IPv6 をサポートします。|ただし、 |現在の Windows の IPv6 のサポートは、デュアル・スタックではないため、 |SDK は、IPv6 対応システム上でデュアル・スタックの動作をエミュレートします。ご使用の Java |アプリケーションは、エミュレーションの性質から、最大 2 倍の数のソケットを使用する可能性があります。 |このエミュレーションを使用不可にするには、システム・プロパティー java.net.preferIPv4Stack を |`true` に設定して SDK の IPv6 サポートを使用不可にしてください。

- IME を使って作業をしている時は、スクリーン上のワークスペースで漢字入力以外の操作をする前に、漢字入力と候補の選択を終わらせておくようにお勧めします。

- 一般的でない長さの DSA 鍵ペアの作成は、低速なマシンでは非常に長い時間を要します。 十分な時間が許されればプロセスは完了するため、この遅延はハングとして解釈しないでください。 DSA 鍵生成アルゴリズムは、標準の鍵の長さ (例えば、512、1024) を他より迅速に生成するよう、最適化されています。

- パーソナル・ファイアウォールが原因で、 Windows NIO コードに問題が生じ、その結果、特定の操作が失敗することがあります。 例えば、メソッド呼び出しの Selector.open() は、 「`java.io.IOException: ループバック接続を確立できません` (java.io.IOException: Unable to establish loopback connection)」をスローし、 「`java.net.ConnectException: 接続が拒否されました: connect` (java.net.ConnectException: Connection refused: connect) 」の原因になります。 この例外は、ファイアウォールでブロックされているポートに接続する オペレーティング・システムによって起こります。 JVM は、オペレーティング・システムに別のポート番号を選択するように要求して、 接続操作を再試行します。 何度か再試行をしても、まだ接続できない場合に、`ConnectException` がスローされます。

  この例外が発生したら、システム・プロパティー java.nio.debug=pipe を設定して、どのポート番号がブロックされているかを確認してください。

- ユーザーが IME を使用して AWT TextArea 内にテキストを入力し、 そのテキストを確定する前 にアプリケーションのウィンドウをサイズ変更すると、 そのテキストは自動的に確定されます。

- Windows 2000 および XP では、同時にオープンできるファイル数のデフォルト値が低すぎ、 入出力集中のアプリケーションに問題を引き起こします。 この制限を修正するには、ファイル <windows>¥system32¥CONFIG.NT を編集し、以下の値を設定します。
  - `files=200`
  - `buffers=60`
  ここで、<windows> は Windows がインストールされたディレクトリーです。

- Windows 2000 において、32 ビット・カラー階調で、JVM の DirectDraw メカニズムが、 マウス・ポインターの下の領域を再描画しません。 その結果として、メニュー上にマウスがあった後、そこにグレーまたは黒の正方形が表示されます。 次善策としては、ダイレクト・ドローをオフに切り替える (`-Dsun.java2d.noddraw`) か、または画面カラー解像度を他の値 (256 色など) に変更します。

- PKCS 11 ネイティブ・ライブラリーを v1.4.x JVM にインストールする場合、そのライブラリーは、他の JRE ネイティブ・ライブラリーとともに JRE bin ディレクトリーに入れてください。

- NIO SocketChannel finishConnect() 呼び出しは、`true` (チャネルが接続された) または `false` (接続処理が未完了) を戻すか、例外をスローする可能性があります。 Windows 2000 では、非ブロッキング接続の使用時に、 チャネルが処理に対して作動可能であることが前の java select() 呼び出しで示唆されていた後でも、 `false` が戻される可能性があります。

- Java メイン・スレッド (原始スレッドとも呼ばれる) のスタック範囲は、 実行時に変更できません。 メイン・スレッドのサイズは、256 KB の固定で、これはパフォーマンス上の理由から最適な値として判断されたものです。 -Xss オプションを使用すると、 メイン・スレッド以外のスレッドについてのみ、スタック範囲を変更できます。 メイン・スレッドのこの固定サイズを理由に、 メイン・スレッドには再帰的な重いアクティビティーを課さないことをお勧めします。 メイン・スレッドは、他のスレッドよりスタック・オーバーフローが発生しやすいためです。

- JTextArea、JTextField、または JFileChooser に DBCS 文字を入力中に、一部の中国語 IME (特に、Chinese Internal Code および Zhengma) から Intelligent ABC IME に切り替えると、メモリー・ダンプが生成される場合があります。

- チェコ語ユーザーの場合、InstallShield の言語選択パネルで、 本来なら翻訳されないインストールにおいて、翻訳された 1 つの項目が示されます。 この制限は InstallShield に起因するものです。このストリングは、コード・ページに基づいてオペレーティング・システムから取得されます。 ポーランド語 (インストールが翻訳される) とチェコ語のコード・ページは両方とも 1250 であるため、 InstallShield は、両方の言語についてシステムから言語リストを取得しようとするため、 このストリングが言語リストに入ります。

- 中国語 (繁体字) を使用する場合、Java アプリケーションからの出力を直接 more コマンドにパイプ接続しないでください。 代わりに、その出力を一時ファイルに送って、そのファイルを別に表示してください。

- カタロニア語ユーザーの場合、アクセント記号付きの大文字が破壊されないようにするために、 Lucida Console フォントを使用してください。 これが影響するのは、Windows 2000 のユーザーのみです。

# 本書に関するご意見

本マニュアルに関するご意見やご感想は、次の URL からお送りください。今後の参考にさせていただきます。

http://www.ibm.com/jp/manuals/main/mail.html

なお、日本 IBM 発行のマニュアルはインターネット経由でもご購入いただけます。詳しくは

`http://www.ibm.com/jp/manuals/` の「ご注文について」をご覧ください。

(URL は、変更になる場合があります)

ただし、IBM にメッセージを送る際には、フィードバック・データ (質問、意見、提案事項など) を含め、メッセージに組み込む情報はすべて公表を承諾されたものとみなされること、IBM ではこれらの情報をいかなる義務も負うことなく、無制限にコピー、利用、開示し、かつ他に対して配布できることをご承知おきください。さらに、IBM では、これらの情報に含まれるすべての着想、概念、ノウハウ、または技術を、製品の開発、製造、および販売など、あらゆる目的に利用できるものとします。

# 特記事項

本書は米国 IBM が提供する製品およびサービスについて作成したものです。 本書に記載の製品、サービス、または機能が日本においては提供されていない場合があります。日本で利用可能な製品、サービス、および機能については、日本 IBM の営業担当員にお尋ねください。 本書で IBM 製品、プログラム、またはサービスに言及していても、その IBM 製品、プログラム、または サービスのみが使用可能であることを意味するものではありません。これらに代えて、IBM の知的所有権を侵害することのない、機能的に同等の 製品、プログラム、またはサービスを使用することができます。 ただし、IBM 以外の製品とプログラムの操作またはサービスの 評価および検証は、お客様の責任で行っていただきます。

IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を保有している場合があります。本書の提供は、お客様にこれらの特許権について 実施権を許諾することを意味するものではありません。 実施権についてのお問い合わせは、書面にて下記宛先にお送りください。

- 〒106-0032
  東京都港区六本木 3-2-31
  IBM World Trade Asia Corporation
  Licensing

以下の保証は、国または地域の法律に沿わない場合は、適用されません。

IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状態で提供し、 商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。 国または地域によっては、法律の強行規定により、保証責任の制限が 禁じられる場合、強行規定の制限を受けるものとします。

この情報には、技術的に不適切な記述や誤植を含む場合があります。 本書は定期的に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随時、この文書に記載されている製品またはプログラムに対して、 改良または変更を行うことがあります。

本書において IBM 以外の Web サイトに言及している場合がありますが、 便宜のため記載しただけであり、決してそれらの Web サイトを推奨するものでは ありません。それらの Web サイトにある資料は、この IBM 製品の資料の一部では ありません。それらの Web サイトは、お客様の責任でご使用ください。

IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、 自ら適切と信ずる方法で、使用もしくは配布することができるものとします。

本プログラムのライセンス保持者で、(i) 独自に作成したプログラムと その他のプログラム（本プログラムを含む）との間での情報交換、 および (ii) 交換された情報の相互利用を可能にすることを目的として、 本プログラムに関する情報を必要とする方は、下記に連絡してください。

- JIMMAIL@uk.ibm.com
  [Hursley Java Technology Center (JTC) contact]

本プログラムに関する上記の情報は、適切な使用条件の下で使用すること ができますが、有償の場合もあります。

本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれと同等の条項に基づいて、IBM より提供されます。

この文書に含まれるいかなるパフォーマンス・データも、管理環境下で 決定されたものです。 そのため、他の操作環境で得られた結果は、異なる可能性があります。 一部の測定が、開発レベルのシステムで行われた可能性がありますが、 その測定値が、一般に利用可能なシステムのものと同じである保証はありません。 さらに、一部の測定値が、推定値である可能性があります。 実際の結果は、異なる可能性があります。お客様は、お客様の特定の環境に適したデータを確かめる必要があります。

IBM 以外の製品に関する情報は、その製品の供給者、出版物、 もしくはその他の公に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っておりません。したがって、 他社製品に関する実行性、互換性、またはその他の要求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの製品の供給者にお願いします。

## 商標

IBM は、IBM Corporation の商標です。

Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。

Microsoft、Windows、および Windows ロゴは、Microsoft Corporation の米国およびその他の国における商標です。

他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

この製品は、一部分 FreeType Project の作業にも基づいています。Freetype の詳細については、http://www.freetype.org を参照してください。

この製品には、The Apache Software Foundation (http://www.apache.org/) によって開発されたソフトウェアが含まれています。