# IBM Runtime Environment for Linux platforms, Java 2 Technology Edition, Version 1.4.2

# ユーザー・ガイド

# 著作権情報

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

本書の内容は、新版で特に指定のない限り、 以下のプラットフォーム (入手可能になった場合) と、 それ以降のすべてのリリースならびにモディフィケーションに適用されます。

- IBM 32-bit Runtime Environment for Linux on Intel(TM) architecture, Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on Intel architecture, Java 2 Technology Edition, Version 1.4.2
- IBM 32-bit Runtime Environment for Linux on iSeries(TM) and pSeries(R), Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on iSeries and pSeries, Java 2 Technology Edition, Version 1.4.2
- IBM 31-bit Runtime Environment for Linux on zSeries(R), Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on zSeries, Java 2 Technology Edition, Version 1.4.2

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

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

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

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

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

お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

原　典：
  IBM Runtime Environment for Linux platforms, Java 2 Technology Edition, Version 1.4.2
  User's Guide

発　行：
  日本アイ・ビー・エム株式会社

担　当：
  ナショナル・ランゲージ・サポート

第1刷 2004.5

© Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.

© Copyright International Business Machines Corporation, 1999, 2004. All rights reserved.

© Copyright IBM Japan 2004

# まえがき

本書では、すべての Linux プラットフォームの IBM(R) Runtime Environment について説明します。 プラットフォーム固有の情報は、明確に判別できるようにマークされています。 ご使用のプラットフォーム用の資料をお読みください。 特に、Web Start および Plug-in は Intel アーキテクチャーの Linux 用 32 ビット SDK に固有のものです。

IBM Runtime Environment には Java 仮想マシン (JVM)、 コア Sun Microsystems Java クラス、およびそれらをサポートするファイルが含まれています。Runtime Environment に、SDK パッケージにあるすべてのクラスが含まれているわけではありません。

本書には、Runtime Environment についての一般的な情報と、Runtime Environment の Sun のインプリメンテーションと IBM のインプリメンテーションの相違点についての情報を記載しています。 本書は、Sun の Web サイト (http://java.sun.com) の詳細な資料と一緒にお読みください。

IBM JVM について詳しくは、「IBM JVM Diagnostics Guide」を参照してください。

SDK for Linux をテスト済みのディストリビューションのリストについては、http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html を参照してください。

Linux の Runtime Environment は SDK のサブセットであり、Java アプリケーションの実行のみを使用可能にすることに注意してください。 SDK をインストールしている場合には、Runtime Environment が組み込まれています。

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

本 Version 1.4.2 ユーザー・ガイドでの技術的な変更は、「1.4.1」から「1.4.2」への更新などの小さい変更や明らかな変更の場合を除き、 HTML やカラー印刷コピーでは赤で示され、変更個所の左側に縦線が表示されています。

# 目次

著作権情報
まえがき
概要
| |
規則
バージョンの互換性
| |
Linux PPC64 ユーザーのための情報
Runtime Environment for Linux に含まれているファイル
ご使用条件
just-in-time (JIT) コンパイラー
Java Native Interface および Native Method Interface
| |
Red Hat Enterprise Linux (RHEL) 3 でのインストール
Runtime Environment for Linux の構成
Runtime Environment for Linux のアンインストール
インストール可能な Red Hat Package Manager (RPM) パッケージのアンインストール
圧縮 Tape Archive (TAR) パッケージのアンインストール
| |
JDBC/ODBC ブリッジの復元
Java アプリケーションの起動
コマンドの要約
オプション
標準オプション
非標準オプション
java コマンドのグローバリゼーション
クラスパスの処理
| |
大規模ページのメモリー割り振りの構成
bootclasspath の処理
ガーベッジ・コレクション・ポリシーの指定
休止時間
休止時間の削減
ヒープが満杯の環境
ガーベッジ・コレクションに関する追加情報
JVM によるシグナルの処理方法
JVM が使用するシグナル
ネイティブ・コード・ドライバーをシグナル・チェーニング・ライブラリーにリンクする
| |
RMI の Connection Handler Pool のインプリメント
IBM ビルド番号およびバージョン番号の取得
(Linux IA 32-bit のみ) Java Plug-in の使用
Netscape 6 および Mozilla での Java Plug-in のインストールと構成
Netscape 4 での Java Plug-in のインストールと構成
gcc3.2.x でコンパイルされた Mozilla ブラウザーでの Java Plug-in の使用
DBCS パラメーターの使用
(Linux IA 32-bit のみ) Web Start の使用
Web Start のインストール
浮動スタックの処理
DBCS 言語のインプット・メソッドの切り替え
ユーザー・システムへのアプリケーションのインストール
既知の制限
特に指示がない限りすべての Linux プラットフォームに適用される制限
Linux IA 32 ビットに関する制限
Linux PPC 32 ビットおよび 64 ビットに関する制限
Linux PPC 32 ビットに関する制限
Linux zSeries 64 ビットに関する制限
Linux zSeries 32 ビットおよび 64 ビットに関する制限
特記事項
商標

# 概要

Runtime Environment for Linux には、Java ランタイム環境の作成と Java プログラムの実行に必要なクラスのサブセットが用意されています。 また、Java 仮想マシン、Java クラス、およびそれをサポートするファイルも用意されています。 Runtime Environment for Linux には、SDK にあるクラスのサブセットだけが入っています。

| | |

## 規則

|

本書では、SDK のデフォルト・インストール・ディレクトリーは /opt/IBMJava2-142/ と示されます。 |以下に示すように、各プラットフォームにはそれぞれに、 |デフォルトのインストール・ディレクトリーがあります。 |/opt/IBMJava2-142/ が記載されている場合は、ご使用のプラットフォームでの適切なディレクトリーに置き換えてください。 |

|

|
- Linux IA 32 ビット: /opt/IBMJava2-142/
|
- Linux IA 64 ビット: /opt/IBMJava2-142/
|
- Linux PPC 32 ビット: /opt/IBMJava2-ppc-142/
|
- Linux PPC 64 ビット: /opt/IBMJava2-ppc64-142/
|
- Linux zSeries 31 ビット: /opt/IBMJava2-s390-142/
|
- Linux zSeries 64 ビット: /opt/IBMJava2-s390x-142/

## バージョンの互換性

一般に、SDK for Linux のバージョン 1.1.8、1.2.2、または 1.3.1 で動作するアプレットまたはアプリケーションは、 このバージョンでも正しく動作します。 Sun の Java 1.4.2 API に依存するアプレットは、Java 1.4.2 API をサポートするブラウザーでのみ機能します。

1.4.2 でコンパイルされたクラスが 1.4.0 より前の Runtime Environment リリースで動作する保証はありません。

| | |

### Linux PPC64 ユーザーのための情報

|

SLES 8 では Runtime Environment v1.4.2 はサポートされていません。SLES 8 で SDK を実行する場合は、SDK v1.4.1 SR1 を使用してください。

## Runtime Environment for Linux に含まれているファイル

Runtime Environment for Linux には、実行時にプログラムをサポートするために必要な、デバッグできない .so ファイルとクラス・ファイルが含まれています。Runtime Environment for Linux には、appletviewer や javac などの開発ツールや、開発システムにのみ関係するクラスは含まれていません。

さらに、Java Communications アプリケーション・プログラミング・インターフェース (API) パッケージが、Runtime Environment for Linux と一緒に使用するように用意されています。 (Linux IA 64 ビットおよび Linux zSeries 31 ビットおよび 64 ビットの場合を除く。)

## ご使用条件

LICENSE_xx.html ファイルには、Runtime Environment for Linux ソフトウェアのご使用条件が入っています。(xx は言語の省略形です。)

このご使用条件を表示または印刷するには、このファイルを Web ブラウザーで開いてください。

## just-in-time (JIT) コンパイラー

just-in-time (JIT) コンパイラー (libjitc.so) は、Java アプリケーションやアプレットの実行中に、頻繁に使用される バイトコード・シーケンスのマシン・コードを動的に生成します。

Runtime Environment for Linux には JIT (libjitc.so) が 組み込まれていて、デフォルトで使用できます。Java アプリケーション、アプレット、またはコンパイラー自体のいずれに問題があるかを判別するために、JIT を使用しないようにすることができます。

JIT を使用不可にするには、アプリケーションを実行するウィンドウのシェル ・プロンプトで、次のように入力します。

        export JAVA_COMPILER=NONE

JIT を使用可能にするには、シェル・プロンプトで次のように入力します。

        export JAVA_COMPILER=jitc

JIT が使用可能かどうかを確認するには、シェル ・プロンプトで次のように入力します。

        java -version

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

    (JIT enabled: jitc)

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

    (JIT disabled)

## Java Native Interface および Native Method Interface

Runtime Environment には Java Native Interface (JNI) が付属しています。 JNI の使用方法については、Sun の Web サイト (http://java.sun.com) を参照してください。

本リリースでは Native Method Interface はサポートされていません。 アプリケーションでこのインターフェースを使用しないでください。

| | |

# Red Hat Enterprise Linux (RHEL) 3 でのインストール

|

Runtime Environment は共用ライブラリー /usr/lib/libstdc++-libc6.2-2.so.3 に依存しています。 |デフォルトでは、このライブラリーは RedHat Enterprise Linux (RHEL) 3.0 にインストールされていません。

|

このライブラリーを含む rpm は、`compat-libstdc++-7.3-2.96.122.i386.rpm` です。 |このライブラリーをインストールするには、シェル・プロンプトで次のように入力します。 |

|

    rpm -ivh compat-libstdc++-7.3-2.96.122.i386.rpm

|

RHEL 3 のインストール時にこのライブラリーを組み込むには: |

|

|
1. 「パッケージ・デフォルト (Package Defaults)」画面に移動したら、 |オプション「インストールするパッケージ・セットの |カスタマイズ (Customize the Set of packages to be installed)」を選択します。
|
2. 「パッケージ・グループ選択 (Package Group Selection)」画面の |「開発 (Development)」オプションで、「既存のソフトウェア開発 (Legacy Software Development)」を選択します。

# Runtime Environment for Linux の構成

Runtime Environment for Linux をインストールしたら、シェル・ログイン・スクリプトを編集して、次のディレクトリーを PATH ステートメントに追加します。

/opt/IBMJava2-142/jre/bin

Runtime Environment for Linux を 別のディレクトリーにインストールしている場合には、/opt/IBMJava2-142/ を、 Runtime Environment を インストールしたディレクトリーに置き換えます。

注:
(Linux IA 32 ビット、中国語のユーザーのみ) RedHat Advanced Server でのフォントのエンコード方式に矛盾があるため、 中国語をデフォルト言語としたい環境用にインストールを行う場合は、 デフォルト言語を英語にしてインストールし、インストールが完了してから中国語に変更するようにしてください。 そうしないと、中国語のフォントが表示されない可能性があります。

# Runtime Environment for Linux のアンインストール

Runtime Environment を除去する方法は、 インストール可能な Red Hat Package Manager (RPM) パッケージをインストールしているか、 圧縮 Tape Archive (TAR) パッケージをインストールしているかによって異なります。詳細については、『インストール可能な Red Hat Package Manager (RPM) パッケージのアンインストール』または『圧縮 Tape Archive (TAR) パッケージのアンインストール』を参照してください。

## インストール可能な Red Hat Package Manager (RPM) パッケージのアンインストール

インストール可能な RPM パッケージをインストールしている場合に、Runtime Environment for Linux をアンインストールするには:

1. シェル・スクリプトで次のように入力します。

   -         rpm -e IBMJava2-JRE-1.4.2

   - Linux PPC 32 ビットの場合:

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - Linux PPC 64 ビットの場合:

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   あるいは、kpackage や yast2 などのグラフィック・ツールを使用することもできます。
2. PATH ステートメントから、Runtime Environment をインストールしているディレクトリーを除去します。
3. (Linux IA 32 ビットのみ) Java Plug-in をインストールしていた場合は、Web ブラウザー・ディレクトリーから Java Plug-in のファイルを除去します。

## 圧縮 Tape Archive (TAR) パッケージのアンインストール

圧縮 TAR パッケージをインストールしている場合に、Runtime Environment for Linux をアンインストールするには:

1. Runtime Environment ファイルを、 Runtime Environment をインストールしているディレクトリーから除去します。
2. PATH ステートメントから、Runtime Environment をインストールしているディレクトリーを除去します。
3. (Linux IA 32 ビットのみ) Java Plug-in をインストールしていた場合は、Web ブラウザー・ディレクトリーから Java Plug-in のファイルを除去します。

| | |

# JDBC/ODBC ブリッジの復元

|

IBM SDK v1.4.0 で除去された JDBC/ODBC ブリッジは、v1.4.2 で復元されました。

# Java アプリケーションの起動

java ツールは 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 でのみ使用されます。
argument
  main 関数に渡される引き数。

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

## オプション

ランチャーには、現在の Runtime Environment でサポートされ、将来のリリースでサポートされる標準オプションのセットがあります。 このほかに、非標準オプションのセットがあります。

### 標準オプション

- -D<property_name>=<value>
  - システム・プロパティーを設定します。
- -assert
  - assert 関連オプションのヘルプを表示します。
- -cp または -classpath <: で区切られたディレクトリーおよび zip ファイルまたは jar ファイル>
  - アプリケーションのクラスおよびリソースの検索パスを設定します。-classpath も -cp も使用しないで、CLASSPATH を設定しないと、 ユーザー・クラスパスは、デフォルトでは現行ディレクトリー (.) です。『クラスパスの処理』も参照してください。
- -help または -?
  - 使用法メッセージを表示します。
- -showversion
  - 製品のバージョンを表示して継続します。
- -verbose:[class | gc | jni]
  - 詳細出力を使用可能にします。
- -version
  - 製品のバージョンを表示します。
- -X
  - 非標準オプションのヘルプを表示します。

### 非標準オプション

以下にリストされている -X オプションは、使用可能なオプションのサブセットです。これらは非標準であり、予告なしに変更されることがあります。

- -Xargencoding
  - java コマンドのオプションで、Unicode エスケープ・シーケンスを使用して、ロケールの文字セットにない文字を表せるようにします。Unicode エスケープ・シーケンスの形式は ¥u#### で、# は 16 進数字です。
- -Xbootclasspath:<; で区切られたディレクトリーおよび zip ファイルまたは jar ファイル>
  - ブートストラップ・クラスおよびリソースの検索パスを設定します。bootclasspath を設定する方法は他にもあります。『bootclasspath の処理』を参照してください。
- -Xbootclasspath/a:<; で区切られたディレクトリーおよび zip ファイルまたは jar ファイル>
  - ブートストラップ・クラスパスの末尾に追加します。
- -Xbootclasspath/p:<; で区切られたディレクトリーおよび zip ファイルまたは jar ファイル>
  - ブートストラップ・クラスパスの先頭に置きます。『bootclasspath の処理』を参照してください。
- -Xcheck:jni
  - JNI 機能の追加検査を行います。
- -Xcheck:nabounds
  - JNI 配列操作の追加検査を行います。
- -Xdebug
  - デバッガーを使用可能にして JVM を開始します。
- -Xdisableexplicitgc
  - System.gc() の呼び出しをノーオペレーションに変更します。
- -Xdisablejavadump
  - プロセスが異常終了した場合に java ダンプ機能を使用不可にします。java ダンプが使用不可になると、システムのプロセス終了ダンプが実行されます。java ダンプは、java コード内で問題が発生したときに役立ちます。 問題がシステム・コンポーネント内で発生した場合は、通常のシステム・ダンプを取得した方が役に立つことがあります。
- -Xgcpolicy:{optthruput | optavgpause }
  - ガーベッジ・コレクション設定値を指定します。デフォルト設定は optthruput です。詳細については、『ガーベッジ・コレクション・ポリシーの指定』を参照してください。
- |-Xlp |
  |
  - メガバイト単位のサイズがある大規模ページを持つ Java ヒープ (Java オブジェクトの割り振り元のヒープ) を割り振るよう JVM に要求します。 |大規模ページが使用できない場合、Java ヒープは Linux の標準 の 4 KB ページで割り振られます。 |JVM は shmget() を使用して、ヒープに大規模ページを割り振ります。 |大規模ページは、Linux カーネル V2.6 以上が稼働しているシステムでサポートされています。
- -Xms<size>
  - Java の初期ヒープ・サイズを設定します。
- -Xmx<size>
  - Java の最大ヒープ・サイズを設定します。
- -Xnoclassgc
  - クラス・ガーベッジ・コレクションを使用不可にします。
- -Xoss<size>
  - スレッドの最大 Java スタック・サイズを設定します。
- -Xquickstart
  - アプリケーションの起動時間を短縮します。このオプションを指定しないと、メソッドの初期コンパイルは高い最適化を行います (つまり、メソッドが高い最適化状態に最初にコンパイルされるため、JIT は「ホット」メソッドを再コンパイルしません)。
- -Xrs
  - オペレーティング・システムのシグナルの使用を減らします。
- -Xrunlibrary_name[:options]
  - ヘルパー・ライブラリーをロードします。複数のライブラリーをロードするには、コマンド行で 2 回以上指定してください。これらのライブラリーの例は次のとおりです。
    - -Xrunhprof[:help] | [:<option>=<value>, ...]
      - ヒープ、CPU、またはモニターのプロファイル作成を実行します。
    - -Xrunjdwp[:help] | [:<option>=<value>, ...]
      - アプリケーションのリモート・デバッグをサポートするデバッグ・ライブラリーをロードします。
- -Xss<size>
  - スレッドの最大ネイティブ・スタック・サイズを設定します。詳細については、『浮動スタックの処理』を参照してください。
- -Xverbosegclog:<path to file><filename>[X, Y]
  - verboseGC の出力を指定したファイルに書き込みます。ファイルがすでに存在していると、上書きされます。それ以外の場合で、既存ファイルを開けないか、新しいファイルを作成できない場合は、出力は stderr にリダイレクトされます。引き数 X および Y (両方とも整数) を指定すると、verboseGC 出力は Y 個のファイルに順にリダイレクトされ、それぞれのファイルには、X 個の gc サイクルの verboseGC 出力が含まれます。これらのファイルは、filename1、filename2、... という形式になります。
    注:
    環境変数 IBM_JVM_ST_VERBOSEGC_LOG は、使用できません。
- -Xverify
  - 最も厳しい検査を使用可能にします。将来的にデフォルトに設定される予定です。

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

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

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

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

Runtime Environment で英語以外のロケールを使用すると、java および javaw コマンドは、翻訳された出力メッセージを表示します。 これらのメッセージは 1.3.1 バージョンのものとは異なります。また Java が実行されているロケールによっても異なります。java が戻す、エラーの詳細説明やその他のデバッグ情報は、英語で表示されます。初期化中に返されるデバッグ情報は大括弧で囲んで表示されます。

## クラスパスの処理

Runtime Environment では、クラス名を、フルパスおよび .class 拡張子を含む完全ファイル名として指定することができます。 SDK の以前のバージョンでは、 CLASSPATH に関連したクラスを指定できただけで、.class 拡張子は使用できませんでした。完全ファイル名を使用すれば、java アプリケーションをデスクトップやファイル・ランチャーから起動することができます。.class ファイルをパスおよび拡張子とともに指定すると、指定したパスが CLASSPATH に組み込まれます。 たとえば、コマンド `java ~/myapp/thisapp.class` は、`java -classpath ~/myapp thisapp` を指定した場合と同じ働きをします。

| | |

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

|

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

|

大規模ページのメモリー割り振りを構成するには、 |まず実行されているカーネルが大規模ページをサポートしていることを確認します。 |ファイル /proc/meminfo に以下の行が含まれていることを調べてください。 |

|

    HugePages_Total:     4
    |HugePages_Free:      4
    |Hugepagesize:     4096 kB

これらのフィールドの値は、システムによって異なります。 |カーネルが大規模ページをサポートしていない場合は、大規模ページをサポートしている |新しいカーネルをコンパイルする必要があります。

|

大規模ページに割り振ることができるメモリーの量は、`HugePages_Free * Hugepagesize` で算出されます。 |システム管理者は、Java のヒープ要件を満たすよう、システムの大規模ページの数を構成する必要があります。 |システム管理者は、ファイル /proc/sys/vm/nr_hugepages を編集することによって、大規模ページの数を構成できます。

|

システムに、使用されていない大規模ページが十分にある場合でも、 |大規模ページのメモリー割り振りを行う shmget() への呼び出しに失敗する場合があります。 |このような失敗が発生するのは、大規模ページが連続していないためです。 |このような失敗を起こさないようにするために、 |システム管理者は、後で /proc を使用するのではなく、 |システムのブート時に `hugepages=<n>` オプションを指定する必要があります。

|

shmmax を使用する shmget() により、大規模ページのメモリーが割り振られます。 |shmmax の値を変更するには、ファイル /proc/sys/kernel/shmmax を編集します。

|

shmget() が成功するのは、root で実行されている場合のみです。 |大規模ページを使用するには、Java を root で実行するか、 |または Java 実行可能ファイルの SUID ビットを設定します。

## bootclasspath の処理

システム・プロパティー ibm.jvm.bootclasspath は、-D オプションを使用して設定することができます (『Java アプリケーションの起動』に説明があります)。 このプロパティーの値は、追加の検索パスとして使用され、-Xbootclasspath/p: で定義された値と bootstrap クラスパスとの間に挿入されます。bootstrap クラスパスは、デフォルトか、または -Xbootclasspath: オプションを 使用して定義されるかのいずれかです。

-Xbootclasspath: または -Xbootclasspath/p: オプションを使用して core.jar、graphics.jar、server.jar、security.jar、xml.jar、tools.jar、 または charsets.jar をオーバーライドするアプリケーションをデプロイしないでください。 そのようなデプロイメントは、Java 2 Runtime Environment バイナリー・コードのライセンス違反になります。

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

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

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

このオプションの形式と値は次の通りです。

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

### 休止時間

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

### 休止時間の削減

optavgpause オプションは、ヒープ・サイズの増加がガーベッジ・コレクション休止の長さに与える影響を制限することに加えて、これらのガーベッジ・コレクション休止に費やされる時間を大幅に削減します。このオプションは、特に大規模ヒープを持つ構成に関係があります。 休止時間は、一部のガーベッジ・コレクションのアクティビティーを、通常のプログラム実行と並行して実行することによって削減されます。休止時間を削減することによって、アプリケーションごとに異なりますが、アプリケーションのスループットがある程度縮小される場合があります。

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

Java ヒープが満杯に近く、再利用できるガーベッジが少ししかない場合、すぐに使用可能なスペースがないため、新規オブジェクト用の要求がすぐには満たされないことがあります。ヒープが容量いっぱいに近い状態で操作されている場合、上記オプションのどちらが使用されているのかには関係なく、アプリケーション・パフォーマンスは悪くなります。 また、さらにヒープ・スペースの要求が続けば、アプリケーションはメモリー不足例外を受け取り、その例外がキャッチされ処理されなければ、JVM は終了します。この時点で、JVM は 2 つの診断ファイル Heapdump および Javadump を作成します。 詳しくは「Diagnostics Guide for Java 1.4.2」を参照してください。この文書で、Java ヒープの占有率が高くなった原因を判別することができます。 「Diagnostics Guide」は、http://www-106.ibm.com/developerworks/java/jdk/diagnosis/ の developerWorks にあります。このような状態の場合、-Xmx オプションを使用してヒープ・サイズを増やすか、使用中のアプリケーション・オブジェクトの数を減らすことをお勧めします。

### ガーベッジ・コレクションに関する追加情報

ガーベッジ・コレクションに関する詳細は、以下を参照してください。

http://www.ibm.com/developerworks/ibm/library/i-garbage1/

http://www.ibm.com/developerworks/ibm/library/i-garbage2/

http://www.ibm.com/developerworks/ibm/library/i-garbage3/

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

JVM に関係のあるシグナルが生じると、シグナル・ハンドラーが呼び出されます。このシグナル・ハンドラーは、Java スレッドのために呼び出されたのか、または Java 以外のスレッドのために呼び出されたのかを判別します。シグナルが Java スレッドのためのものである場合、JVM がシグナル処理の制御を行います。シグナルが Java 以外のスレッドのためのものであり、インストール済みのアプリケーションに、 以前に JVM がそのシグナル用の独自のハンドラーをインストールしている場合、 制御はそのハンドラーに与えられます。そうでない場合、シグナルは無視されます (これが、そのシグナルのデフォルトのアクションであるかどうかには無関係です)。

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

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

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

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

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

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

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

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

下記の表 1 は、JVM が使用するシグナルを示したものです。 これらのシグナルは、以下のように、タイプまたは使用法ごとに表内でグループ化されています。

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

表 1. JVM が使用するシグナル
シグナル名 | シグナル・タイプ | 説明 | -Xrs による使用不可
--- | --- | --- | ---
SIGSEGV | 例外 | メモリーに対する誤ったアクセス (アクセス不能メモリーへの書き込み) | なし
SIGILL | 例外 | 正しくない命令 (不明なマシン・インストラクション呼び出しの試行) | なし
SIGFPE | 例外 | 浮動小数点例外 (0 除算) | なし
SIGBUS | 例外 | バス・エラー (存在しないメモリー・ロケーションへのアドレッシングの試行) | あり
SIGSYS | 例外 | 正しくないシステム呼び出しの発行 | あり
SIGXCPU | 例外 | CPU 時間制限の超過 (長時間実行し過ぎ) | あり
SIGXFSZ | 例外 | ファイル・サイズの制限超過 | あり
SIGABRT | エラー | 異常終了。JVM が JVM 障害を検出すると、このシグナルを生じさせます。 | あり
SIGINT | 割り込み | 対話式アテンション (CTRL-C)。 JVM は正常に終了します。 | あり
SIGTERM | 割り込み | 終了要求。JVM は正常に終了します。 | あり
SIGHUP | 割り込み | ハングアップ。JVM は正常に終了します。 | あり
SIGUSR1 | 制御 | ユーザー定義。内部制御の目的で一部の JVM が使用します。 | なし
SIGUSR2 | 制御 | ユーザー定義。内部制御の目的で一部の JVM が使用します。 | なし
SIGQUIT | 制御 | 端末用の終了シグナル。JVM は、Javadump を取るためにこれを使用します。 | あり
SIGTRAP | 制御 | dbx または ptrace で使用するための内部用。内部制御の目的で一部の JVM が使用します。 | あり
SIGPIPE | 制御 | 読み取りを行っていないパイプへの書き込み。JVM はこれを無視します。 | なし

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

シグナル `1 (SIGHUP)`、`2 (SIGINT)`、`4 (SIGILL)`、`6 (SIGABRT)`、`7 (SIGEMT)`、`8 (SIGFPE)`、`10 (SIGBUS)`、`11 (SIGSEGV)`、`12 (SIGSYS)`、`15 (SIGTERM)`、および `24 (SIGXCPU)` により、JVM はシャットダウンします。したがって、アプリケーション・シグナル・ハンドラーでは、JVM のサービスを必要としなくなった場合を除き、リカバリーを試みるべきではありません。

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

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

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

libjsig.so を使用するには、以下のようにします。

- 以下のように、JVM を作成または組み込むアプリケーションとリンクします。

      gcc -L$JAVA_HOME/bin -ljsig
      	-L$JAVA_HOME/bin/classic -ljvm java_application.c

  または
- 以下のように、LD_PRELOAD 環境変数を使用します。

      export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<java_application> (bash and ksh)

      setenv LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<java_application> (csh)

  (`JAVA_HOME` がすでに設定済みであると想定しています。 設定されていない場合には、/opt/IBMJava2-142/jre を使用します。)

`sigaction()` を使用するシグナル・ハンドラーをインストールしている場合、JVM がシグナルを使用するときに、一部の sa_flags は見ることができません。これらは、以下のものです。

- SA_NOCLDSTOP - これは常に設定解除になっています。
- SA_NOCLDWAIT - これは常に設定解除になっています。
- SA_RESTART - これは常に設定されています。
- SA_ONSTACK - これは Linux IA および zSeries では常に設定されています (SIGSEGV のみ)。 Linux PPC では設定されていません。

libjsig.so ライブラリーも、アプリケーションから JVM シグナル・ハンドラーを隠します。このため、JVM が開始した後で行われた `signal()`、`sigset()`、および `sigaction()` などの呼び出しでは、JVM のシグナル・ハンドラーへの参照を戻すことがなくなりますが、JVM の開始前にインストールされたハンドラーがあれば、代わりにそれを戻します。

| | |

# RMI の Connection Handler Pool のインプリメント

|

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

|

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

|

    -Dsun.rmi.transport.tcp.connectionPool=true (or any non-null value)

|

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

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

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

`java -version`

# (Linux IA 32-bit のみ) Java Plug-in の使用

Java Plug-in は Web ブラウザー・プラグインです。Java Plug-in を使用すると、アプレットや bean を Web ブラウザーで実行する際に、 ブラウザーのデフォルト JVM をう回して、代わりに Java Runtime Environment を使用するようになります。

Java Plug-in に関する資料は、Sun の http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/ にあります。

Java Plug-in は、SDK のこのリリースでは印刷をサポートしません。

Java Plug-in は、ディストリビューションで規定されているとおり、Netscape 4、Netscape 6、および Mozilla でサポートされています。

## Netscape 6 および Mozilla での Java Plug-in のインストールと構成

Netscape 6 または Mozilla 用に Java Plug-in をインストールして構成するには、 ライブラリー・ファイル /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so から ブラウザーの plugins ディレクトリー (/brower-install-path/plugins) への シンボリック・リンクを作成します。

Java Plug-in をすべてのユーザーが使用できるようにするには:

1. root としてログインします。
2. ライブラリー・ファイル /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so への シンボリック・リンクを、Mozilla plugin ディレクトリー または Netscape plugin ディレクトリーに入れます。 (plugin ディレクトリーは、通常 /usr/local/mozilla/plugins/ または netscape ですが、 ディストリビューションによっては異なる場合があります。)

       ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so ¥
          /usr/local/mozilla/plugins/

注:
libjavaplugin_oji.so は、コピーでなくシンボリック・リンクされていなければなりません。そうでないと、JVM の位置を見つけることができなくなります。

## Netscape 4 での Java Plug-in のインストールと構成

Netscape 4 用に Java Plug-in をインストールして構成するには、 ライブラリー・ファイル /opt/IBMJava2-142/jre/bin/javaplugin.so からブラウザーの plugins ディレクトリー (/brower-install-path/plugins) へのシンボリック・リンクを作成します。

Java Plug-in を現在のユーザーが使用できるようにするには:

1. $HOME/.netscape ディレクトリーの下に plugins というディレクトリー (まだ存在していない場合) を作成します。
2. ライブラリー・ファイル /opt/IBMJava2-142/jre/bin/javaplugin.so から /$HOME/.netscape/plugins へのシンボリック・リンクを作成します。

Java Plug-in をすべてのユーザーが使用できるようにするには:

1. root としてログインします。
2. ライブラリー・ファイル /opt/IBMJava2-142/jre/bin/javaplugin.so への シンボリック・リンクを、plugin ディレクトリーに入れます。 (通常は /usr/local/netscape/plugins/ですが、ディストリビューションによっては異なる場合があります。)

       ln -s /opt/IBMJava2-142/jre/bin/javaplugin.so ¥
          /usr/local/netscape/plugins/

注:
javaplugin.so は、コピーでなくシンボリック・リンクされていなければなりません。 そうでないと、JVM の位置を見つけることができなくなります。

## gcc3.2.x でコンパイルされた Mozilla ブラウザーでの Java Plug-in の使用

gcc3.2.x でコンパイルされた Mozilla ブラウザー (SLES8、Suse8.1) とともに 提供されたディストリビューションを使用している場合は、IBM SDK for Linux, v1.4.2: libjavaplugin_ojigcc3.so および libjavaplugin_jnigcc3.so. とともに 提供された、gcc3 でコンパイルされたプラグイン・ライブラリーを使用する必要があります。 これらライブラリーを使用する場合は、<mozilla_installation_dir>/plugins ディレクトリーの 下にある libjavaplugin_ojigcc3.so へのシンボリック・リンクを作成します。

    ln -s <sdkdir>/jre/bin/libjavaplugin_ojigcc3.so libjavaplugin_ojigcc3.so

## 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 ファイルの解析に使用するエンコード方式を指定することができます。

- Netscape 4: 「表示」メニュー ->「文字コード・セット」
- Mozilla: 「表示」メニュー ->「文字コード」

# (Linux IA 32-bit のみ) Web Start の使用

Java Web Start は、Java テクノロジーをベースにしたアプリケーションの展開手段です。 コンピューターとインターネットを接続して、ユーザーが Web から直接アプリケーションを立ち上げて管理できるようにします。Java Web Start を使えば、マウスをクリックするだけでアプリケーションを活動化することができ、また常に最新のバージョンを実行していることが保証されるので、インストールやアップグレードの手順を省くことができます。Web を介してソフトウェアを配布する場合、通常は Web 上でインストーラーを探してダウンロードして実行することが必要になる場合があります。インストーラーを実行すると、インストール・ディレクトリーや「完全」、「標準」、「最小」などのインストール・オプションを選択するプロンプトが出されます。これは、時間の浪費となり、またソフトウェアのバージョンが更新されるたびに繰り返さなければならない複雑な作業となる場合があります。

これと対比すると、HTML ベースの e-mail クライアントやカレンダーなどの Web アプリケーションは、簡単にインストールして使用できます。Web ブラウザーではプロセスが自動化されています。複雑なダウンロード、セットアップ、構成などのステップはなく、最新のバージョンを実行するように保証されています。Java Web Start は、フル機能のアプリケーションにも同様の利点をもたらします。

Web Start の詳細については http://java.sun.com/products/javawebstart を、またより詳細な資料については http://java.sun.com/j2se/1.4.2/docs/guide/jws/index.html を参照してください。

## Web Start のインストール

Web Start インストール・スクリプトは、JRE for Java V1.4.2 と一緒にインストールされます。

このスクリプトは /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh と呼ばれます。Web Start を使用するには、このスクリプトを実行してください。現行作業ディレクトリーを、Web Start をインストールしたい場所に設定します。インストール・プロセスでは、javaws と呼ばれるサブディレクトリーが現行作業ディレクトリーに作成されます。

また、インストール・プロセスでは、Mozilla や他のブラウザーで使用される mime タイプも更新されます。

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

1. .jnlp ファイルを参照する Web ページのリンクを選択します。
2. javaws を上で作成した javaws ディレクトリーから開始して、アプリケーションを選択できる「Web Start」ダイアログを開始します。
3. シェル・スクリプトで、`javaws <URL>` と入力します。ここで `<URL>` は .jnlp ファイルのロケーションです。

これらのアクションを行うと、選択されたアプリケーションを Web Start が開始します。このアプリケーションを初めて使用する場合には、アプリケーションがダウンロードされます。後の呼び出しで、更新が使用可能かどうかを確認するために元の Web サイトが調べられます。Web Start は、アプリケーションが開始される前に、これらの更新をダウンロードします。

jnlp にエラーが発生した場合 (例えば、無効なタグ名など) には、Web Start は、エラー・メッセージを表示しないで処理を中止します。

# 浮動スタックの処理

非浮動スタック Linux システムでは、-Xss の設定内容に関係なく、 各スレッドに最小ネイティブ・スタック・サイズ 256 KB が提供されます。 浮動スタック Linux システムでは、-Xss 値が使用されます。 したがって、非浮動スタック Linux システムから移行する場合には、-Xss 値が十分大きく、 最小の 256 KB に依存していないことを確認する必要があります。

(Linux IA 32 ビットのみ) 特定の Linux ディストリビューション - たとえば、Red Hat - では、 「浮動スタック」と呼ばれる GLIBC フィーチャーを使用できるようになっています。しかし、Linux のカーネルのレベルが 2.4.10 より下の場合には、制限があり、JVM は、浮動スタックが使用可能な状態の SMP ハードウェア上では稼働しません。この環境では、浮動スタックは、必ず、JVM または JVM を開始するすべてのアプリケーションが開始する前に使用不可になっていなければなりません。Red Hat では、次のコマンドを使用し、環境変数をエクスポートして浮動スタックを使用不可にします。

    export LD_ASSUME_KERNEL=2.2.5

# DBCS 言語のインプット・メソッドの切り替え

2 バイト文字セット (DBCS) システムでインプット・メソッドを切り替えたい場合には、 IBMJAVA_INPUTMETHOD_SWITCHKEY や IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS 環境変数でなく、java.util.prefs.Preferences クラスを使用してください。 詳細については、Sun の「Input Method Framework Specification」を参照してください。

# ユーザー・システムへのアプリケーションのインストール

プロダクトの開発を終えて出荷準備が整ったら、ユーザー・システムにプロダクトをインストールして、ソフトウェアをサポートするように構成し、Runtime Environment を構成する必要があります。

Runtime Environment for Linux を使用する場合、インストール手順で既存のインストール・プロダクトを上書きしないように気を付けてください (既存の Runtime Environment for Linux が古いバージョンでない限り)。

Runtime Environment for Linux を再配布するには、ご使用のシステムにそれをインストールしてから、必要な Runtime Environment ファイルをインストール・セットにコピーします。 この方法をとる場合、Runtime Environment for Linux の全ファイルを組み込む必要があります 。Runtime Environment for Linux ソフトウェアは、すべてのファイルが組み込まれている場合に限って再配布することができます。 その結果、アプリケーションは、出荷時にそれぞれ個別の Runtime Environment for Linux のコピーを含むことになります。

再配布する必要があるファイルに関する特定の情報については、製品に同梱されているご使用条件を参照してください。

# 既知の制限

以下の節では Runtime Environment for Linux の 既知の制約事項について説明します。

## 特に指示がない限りすべての Linux プラットフォームに適用される制限

- K Desktop Environment (KDE) を実行中の場合には、Linux アプリケーションと Java アプリケーション間で情報をコピーするための 2 バイト文字セット (DBCS) を含むシステム・クリップボードが使用できない場合があります。
- SDK は Java スレッドをネイティブ・スレッドとして実装します。そのために、それぞれのスレッドが別個の Linux プロセスとなります。Java スレッドの数が許容される最大プロセス数を超えると、プログラムがエラー・メッセージ (SIGSEGV エラー) を出したりシステムがハングすることがあります。

  使用可能な最大スレッド数は、次のうちの最小値で決まります。

  - /etc/security/limits.conf のユーザー・プロセス数設定値 (ulimit -u)
  - /proc/sys/kernel/threads_max に定義されている限度
  - libpthreads.so に定義されている限度 PTHREAD_THREADS_MAX (変更した場合は glibc の再コンパイルが必要）

  ただし、最大スレッド数に達する前に仮想記憶域を使い尽くしてしまうこともあります。

- Ctrl-C を使用して Java アプリケーションを停止すると、 いくつかのプロセスが孤立したまま残されることがあります。
- Swing を使って作成されたダイアログ・ボックスを表示しようとすると、これらのボックスがウィンドウに表示されるまでに数秒の遅れが生ずることがあります。
- ALT キーが含まれる KeyEvent の処理結果は、Linux で使用するウィンドウ・マネージャーによって異なります。 また、他のオペレーティング・システムの結果とも異なります。Enlightenment ウィンドウ・マネージャーでは、 Alt+A キーおよび Shift+Alt+A キーはそれぞれ異なる修飾子を作成し、 Ctrl+Alt+ A キーはまったくキー・イベントを作成しません。 ただし、WindowMaker ウィンドウ・マネージャーを使用すると、Ctrl+Alt+A でキー・イベントが作成されます。
- Linux X Window System では、キー・マップは 64 0xffe9 (Alt_L) 0xffe7 (Meta_L)、および 113 0xffea (Alt_R) 0xffe8 (Meta_R) に設定されます。 この設定を確認するには、 シェル・プロンプトで次のように入力してください。

      xmodmap -pk

  これは、SDK が Meta + Alt が押されたと見なす原因になります。 その対策として、シェル・プロンプトで次のように入力して Meta_x マッピングを除去することもできます。

      xmodmap -e "keysym Alt_L = Alt_L" -e "keysym Alt_R = Alt_R"

  注:
  この予備手段をとると、同じ画面で実行中の他の X-Window アプリケーションが除去対象の Meta キーを使用している場合に影響を受けることがあります。
- 一般的でない長さの DSA 鍵ペアの作成は、低速なマシンでは非常に長い時間を要します。時間の余裕が十分にある場合には、 遅延をハングとして解釈せずに、プロセスが完了するまで待ってください。 DSA 鍵生成アルゴリズムは、標準でない鍵の長さの生成よりも、標準的な鍵の長さ (たとえば 512 や 1024) の生成をより迅速に行うために最適化されます。
- ネイティブ・プログラムでは 1.1 JVM を作成できません。 JNI_CreateJavaVM() を呼び出して、それに JNI_VERSION_1_1(0x00010001) のバージョンを渡すことはできません。 渡すことができるバージョンは次のとおりです。
  - JNI_VERSION_1_2(0x00010002)
  - JNI_VERSION_1_4(0x00010004)

  どの事例で作成された JVM も、ライブラリー (つまり、1.2.2、1.3.x、1.4.x) で 指定されたものであり、JNI インターフェースによって暗黙指定されたものではありません。 インターフェース API は、JVM によってインプリメントされる言語仕様、 クラス・ライブラリー API、またはその他の JVM の動作に影響を与えることはありません。 インターフェース API は、必要な動作をネイティブ・コードが呼び出す方法のみを指定します。

- 中国語 (繁体字) のユーザーの場合のみ、中国語 (繁体字) 文字の 入力に LinYi ZhuYin、YiTian ZhuYin、および Bosham IME を使用すると、 ファンクション・キーの Enter、スペース、Backspace、および ESC が期待通りに機能しません。 Enter キーは改行を挿入し、ESC キーは事前編集ストリングや候補ウィンドウを取り消すために使用され、スペース・バーはスペースを挿入します。 中国語 (繁体字) の入力に LinYi ZhuYin、YiTian ZhuYin、 および Bosham IME を使用しているときにコミット・キーを押すと候補ウィンドウが消えて、Backspace キーを押しても表示されません。
- 多くの並行スレッドを実行している場合、警告メッセージ `java.lang.OutOfMemoryError` が出されることがあります。 これは、マシンのシステム・リソースが使い尽くされていることを示しており、メッセージは以下の理由によって発生する可能性があります。
  1. 以下の理由で、新規スレッドを作成できない。
     - 作成されたプロセスの数がユーザー制限を超えている。
     - 新規スレッドを作成するために使用可能な十分なシステム・リソースがない。この場合、実行中のアプリケーションによっては、他の Java 例外も表示される可能性があります。
  2. カーネル・メモリーが使い尽くされたか、またはフラグメント化している。 強制終了されたプロセス ID に対応する、メモリー不足を示すカーネル・メッセージを /var/log/messages で確認してください。
  システムをチューニングして、対応するシステム・リソースを増やしてください。
- Red Hat が配布したこの製品の前のバージョンがインストールされていると、インストール中に Red Hat Package Manager (RPM) が IBM パッケージが Red Hat が配布した製品のバージョンよりも古いと報告します。この状態が生じるのは、Red Hat が「シリアル番号」を RPM パッケージに追加し、これがパッケージ中の製品バージョン管理方式をオーバーライドして、 デフォルトでは、RPM がすでにインストールされている製品より古いと見なされるパッケージのインストールを拒否するからです。 rpm コマンドの --oldpackage オプションによって、新規の IBM パッケージをインストールすることができます。
- SDK バージョン 1.4.2 では、SLES 8 上の対称マルチプロセッサー・マシン (SMP) で 稼働するアプリケーションは、Java モニターの変更された IBM JVM インプリメンテーションで、 そのパフォーマンスが向上します。 ほとんどのアプリケーションではパフォーマンスが向上するか、 パフォーマンスに変化がないかのいずれかであるため、この新しいアルゴリズムが デフォルトの動作となります。 反対に、新しいデフォルト設定が JVM のパフォーマンスを低下させる場合は、 環境変数: `export IBM_JVM_MONITOR_OLD=<any value>` を設定して、 古いアルゴリズムを復元することができます。

  詳しくは、「Diagnostics Guide for v1.4.2」を参照してください。

- java awt/swing アプリケーションを Linux マシンで実行し、 その表示を 2 番目のマシンにエクスポートするときに、X クライアント・マシンに ロードしたフォントのセットが X サーバー・マシンにロードしたフォントのセットと異なる場合、 一部のダイアログの表示で問題が発生する可能性があります。 この問題は、特に、サーバー・バージョンのデフォルトのインストールでは 英字フォントがインストールされるが、クライアントのデフォルトのインストールでは インストールされない中国語のロケールの SLES8 で顕著です。 この問題を回避するには、両方のマシンに同じフォントをインストールします。
- |システム・ロケールが UTF-8 エンコード方式を使用している場合、 |一部の SDK ツールで sun.io.MalformedInputException がスローされる場合があります。 |システムが UTF-8 エンコード方式を使用しているかどうかを |確認するには、LANG または LC_ALL などの |ロケール固有の環境変数を調べてその末尾が接尾部「.UTF-8」になっているか確認します。 |この sun.io.MalformedInputException が出されたら、7 ビット ASCII の範囲 (0x00 - 0x7f) 外に |あり Java Unicode 文字リテラルとして表現されていない文字を Java Unicode 文字リテラル (たとえば「¥u0080」) に変更します。 |また、ロケール固有の環境変数から「.UTF-8」接尾部を除去することによっても、 |この問題を回避することができます。 たとえば、ご使用のマシンのデフォルトのロケールが |「en_US.UTF-8」である場合は、LANG を「en_US」に設定します。 | | |
  注:
  |
  Redhat9 や RHEL3 などの一部の RedHat のディストリビューションでは、 |デフォルトで UTF-8 エンコード方式を使用します。
  |
  |
- |クロスプラットフォーム環境で AMI および xcin を |使用している場合 (たとえば、32 ビット・システムと 64 ビット・システム間、 |またはビッグ・エンディアン・システムとリトル・エンディアン・システム間で |表示をエクスポートしようとする場合) に、問題が発生する可能性があります。 |この種の問題が発生したら、Linux のディストリビューターにお問い合わせください。 |
  |
- |Redhat Enterprise Linux 3.0 では、中国語 GB18030 ロケールの GB2312 文字を除いて、 |中国語の文字が AWT テキスト・コンポーネントで表示されない場合があります。 |
  |

## Linux IA 32 ビットに関する制限

- Java Plug-in は、SDK のこのリリースでは印刷をサポートしません。
- 韓国語用の SLES 8 が韓国語文字を表示しない場合があります。 この問題を修正するには、"baekmuk-ttf" rpm パッケージをインストールし、以下の `SUSEconfig` を実行します。

        # touch /usr/X11R6/lib/X11/fonts/truetype/fonts.scale.baekmuk
        # SUSEconfig

- アラビア語テキストのユーザーの場合、 Matrox ビデオ・カードと アクセラレーション・カードを使用可能にして Linux を使用すると、drawString を 使用して大きなフォントを表示する際に文字にひずみが生じる場合があります。 この問題は、これらのカードのドライバーに原因があります。 この問題の回避方法として、デバイスの加速を使用不可に設定することをお勧めします。

## Linux PPC 32 ビットおよび 64 ビットに関する制限

- Java コードが JNI 呼び出しを使用していて、特定の呼び出しに 9 以上の浮動またはダブル・パラメーターがある場合には、そのC コードは GNU C コンパイラー (GCC) の gcc-2.95.3 Free Software Foundation (FSF) レベルでコンパイルする必要があります。
- XFree86 バージョン 3.x を実行している場合には、SIGSEGV エラーを受け取る可能性があります。 この問題を回避するために、XFree86 バージョン 4.x の使用をお勧めします。
- 日付が 1970 以前の日付に設定されている場合には、Java を開始しようとすると例外エラーになります。この問題を回避するには、マシンを手動で現在日付に設定してください。

## Linux PPC 32 ビットに関する制限

- PowerPC 用の SLES 8.0 インストール CD には、 Java が中国語を正しく表示するのに 十分な TrueType 中国語フォントが含まれていません。 United Linux 1.0 から ttf-hanyi-20021016-0.noarch.rpm パッケージをインストールして、 中国語フォントの表示を改善してください。

## Linux zSeries 64 ビットに関する制限

以下の制約事項は、Linux zSeries 64 ビットでの中国語、台湾語、および韓国語のユーザーに適用されます。

- 中国語および台湾語の入力メソッド・サーバー (xcin) は、バージョン 1.4.2 ではテストされていません。
- 中国語 (簡体字) のユーザーの場合のみ、一部の中国語文字が表示されない場合があります。 この問題を回避するには、以下の TrueType フォントをご使用の zSeries 64 ビット・システムの SLES8 にダウンロードしてください。
  - ttf-hanyi-20021016-0
  このフォントは、SUSE Web サイト (http://www.suse.com/index_us.html) から入手できます。
- 中国語 (繁体字) のユーザーの場合のみ、一部の中国語文字が表示されない場合があります。 この問題を回避するには、以下の TrueType フォントを、SLES8 にダウンロードしてください。 これは、グラフィカル・クライアントとして機能します。
  - ttf-arphic-bkai00mp-20001125-103
  - ttf-arphic-gbsn00lp-20001125-103
  - ttf-arphic-gkai00mp-20001125-103
  - ttf-arphic-bsmi00lp-20001125-103
  - ttf-arphic-20001125-323
  このフォントは、SUSE Web サイト (http://www.suse.com/index_us.html) から入手できます。

## Linux zSeries 32 ビットおよび 64 ビットに関する制限

- サウンド・カードなしでマシンのオーディオを使用する場合には、Java が サウンドを再生しようとするときにメモリー不足を示すエラー・メッセージを受け取る場合があります。 このメッセージはコンソールに表示されますが、Java アプリケーションには影響がありません。
- 現在のディストリビューションの Linux カーネルは Internet Protocol バージョン 6(IP6) のサポートを提供していますが、これを使用していて問題が起こる場合があります。Java からの IP6 のサポートはこのリリースに組み込まれていますが、Java コマンドで -Djava.net.preferIPv4Stack=true オプションを使用するサポートをオフにすることをお勧めします。 IP6 を完全にサポートするカーネルをインストールする場合には、このオプションは必要ありません。

# 特記事項

本書は米国 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 の商標です。

IBM、iSeries、pSeries、および zSeries は、IBM Corporation の商標です。

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

Intel、Intel Inside (ロゴ)、MMX および Pentium は、Intel Corporation の米国およびその他の国における商標です。

他の会社名、製品名およびサービス名などはそれぞれ各社の商標または登録商標です。

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