_JAVA_OPTIONSJava の環境変数
- Java オプションの種類
-
Javaにおける
_JAVA_OPTIONS
環境変数 -
Javaにおける
JAVA_TOOL_OPTIONS
環境変数 -
Java での
JAVA_TOOL_OPTIONS
とJDK_JAVA_OPTIONS
の違い - まとめ
_JAVA_OPTIONS
は、Java オプションを JVM プロセスに渡すために使用できる環境変数です。渡された Java オプションは、Java 仮想マシンによるコマンドライン引数と同様に扱われます。
この記事では、さまざまなタイプの Java オプションについて理解します。また、_JAVA_OPTIONS
と JAVA_TOOL_OPTIONS
、JDK_JAVA_OPTIONS
と JAVA_TOOL_OPTIONS
環境変数の違いもわかります。
Java オプションの種類
Java は、3つの異なるタイプのオプションを定義しています。Java は、さまざまな Java バージョンでのサポートとその使用法に基づいてオプションを区別します。
これらの各オプションのカテゴリを理解しましょう。
- 標準オプション-Java は、すべての Java バージョンが標準オプションをサポートすることを保証します。Java では、次のような一般的なアクションにこれらのオプションを使用できます。
classpath
変数を設定します。- Java ランタイム環境(JRE)のバージョンを確認します。
- 詳細出力の切り替えなど。
- 追加オプション-Java は、すべてのバージョンでこれらのタイプのオプションのサポートを保証するものではありません。これらのオプションは、特に JavaHotSpot 仮想マシンに関連しており、変更される可能性があります。
Java はこれらのオプションを使用して、特定の変数を設定します。 - 高度なオプション-Java は開発者に高度なオプションを提供します。開発者はこれらのオプションを使用して、JVM、JRE、JIT、およびガベージコレクターを調整できます。
詳細オプションには 4つの異なるタイプがあります。これらは次のように与えられます。
- ランタイムオプション-開発者はこれらのオプションを使用して、JVM のランタイムを調整できます。
- JIT コンパイラオプション-開発者はこれらのオプションを使用して、ジャストインタイム(JIT)Java コンパイラを制御できます。
- 保守性オプション-Java は、システム情報をデバッグおよび収集するためのこれらのオプションを定義します。
- ガベージコレクションオプション-開発者は、これらのオプションを使用して Java のガベージコレクションメカニズムを制御できます。
Javaにおける _JAVA_OPTIONS
環境変数
Java は、プロセスの実行中に Java オプションを JVM に渡すために、いくつかの環境変数を定義します。_JAVA_OPTIONS
はそのような環境変数の 1つです。
Java は、この環境変数を使用して渡された引数を、コマンドライン引数と同様に扱います。
実際、Oracle による Java のドキュメントによると、Java はこれらのオプションを提供しているため、直接コマンドラインを使用できない実行環境のプログラムにコマンドライン引数を渡すことができます。
各引数が空白で区切られている複数の引数を渡すことができます。引数に空白が含まれている場合は、引用符で囲む必要があります。
引数が無効な場合、プログラムの実行は失敗するため、_JAVA_OPTIONS
を使用するときは注意が必要です。
ログトレースを有効にするために変数のオプションを渡す例を見てみましょう。
export _JAVA_OPTIONS = '-Dsun.java2d.trace=log'
Javaにおける JAVA_TOOL_OPTIONS
環境変数
JAVA_TOOL_OPTIONS
は _JAVA_OPTIONS
の後継です。_JAVA_OPTIONS
環境変数は、JVM 仕様で標準化されていません。したがって、さまざまなベンダーがこの変数の名前を持っています。
ただし、JAVA_TOOL_OPTIONS
変数は JVM 仕様で標準化されています。常に _JAVA_OPTIONS
よりも優先する必要があります。
これは、空白の問題と引用符をより適切に処理するためです。
Java での JAVA_TOOL_OPTIONS
と JDK_JAVA_OPTIONS
の違い
JAVA_TOOL_OPTIONS
と JDK_JAVA_OPTIONS
は非常によく似ています。Java では両方の環境変数を使用して Java オプションを JVM に渡すことができます。
すでに見てきたように、JAVA_TOOL_OPTIONS
を使用して引数を渡すすべてのルールとメソッドは、JDK_JAVA_OPTIONS
にも適用されます。
ただし、これらの変数の主な違いは次のとおりです。
- Java ランチャーは、
JDK_JAVA_OPTIONS
を使用して渡された引数を読み取ります。したがって、ランチャーを終了させてJAR またはメインクラスを指定するオプションを渡すことはできません。
したがって、この変数を使用して、実行時に使用されるオプションをランチャーレベルで渡すことができます。
- Java コンパイラと JAR は
JAVA_TOOL_OPTIONS
も読み取ります。したがって、この変数を使用して、実行を調整するためのオプションを設定できます。
たとえば、この変数を使用してフラグを設定できます。
まとめ
この記事では、Java の JAVA_TOOL_OPTIONS
、JDK_JAVA_OPTIONS
、および _JAVA_OPTIONS
環境変数について説明しました。また、これらの環境変数の使用の違いについても説明しました。