_JAVA_OPTIONSJava の環境変数

Mohd Mohtashim Nawaz 2023年10月12日
  1. Java オプションの種類
  2. Javaにおける _JAVA_OPTIONS 環境変数
  3. Javaにおける JAVA_TOOL_OPTIONS 環境変数
  4. Java での JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS の違い
  5. まとめ
_JAVA_OPTIONSJava の環境変数

_JAVA_OPTIONS は、Java オプションを JVM プロセスに渡すために使用できる環境変数です。渡された Java オプションは、Java 仮想マシンによるコマンドライン引数と同様に扱われます。

この記事では、さまざまなタイプの Java オプションについて理解します。また、_JAVA_OPTIONSJAVA_TOOL_OPTIONSJDK_JAVA_OPTIONSJAVA_TOOL_OPTIONS 環境変数の違いもわかります。

Java オプションの種類

Java は、3つの異なるタイプのオプションを定義しています。Java は、さまざまな Java バージョンでのサポートとその使用法に基づいてオプションを区別します。

これらの各オプションのカテゴリを理解しましょう。

  1. 標準オプション-Java は、すべての Java バージョンが標準オプションをサポートすることを保証します。Java では、次のような一般的なアクションにこれらのオプションを使用できます。
    1. classpath変数を設定します。
    2. Java ランタイム環境(JRE)のバージョンを確認します。
    3. 詳細出力の切り替えなど。
  2. 追加オプション-Java は、すべてのバージョンでこれらのタイプのオプションのサポートを保証するものではありません。これらのオプションは、特に JavaHotSpot 仮想マシンに関連しており、変更される可能性があります。
    Java はこれらのオプションを使用して、特定の変数を設定します。
  3. 高度なオプション-Java は開発者に高度なオプションを提供します。開発者はこれらのオプションを使用して、JVM、JRE、JIT、およびガベージコレクターを調整できます。

詳細オプションには 4つの異なるタイプがあります。これらは次のように与えられます。

  1. ランタイムオプション-開発者はこれらのオプションを使用して、JVM のランタイムを調整できます。
  2. JIT コンパイラオプション-開発者はこれらのオプションを使用して、ジャストインタイム(JIT)Java コンパイラを制御できます。
  3. 保守性オプション-Java は、システム情報をデバッグおよび収集するためのこれらのオプションを定義します。
  4. ガベージコレクションオプション-開発者は、これらのオプションを使用して 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_OPTIONSJDK_JAVA_OPTIONS の違い

JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS は非常によく似ています。Java では両方の環境変数を使用して Java オプションを JVM に渡すことができます。

すでに見てきたように、JAVA_TOOL_OPTIONS を使用して引数を渡すすべてのルールとメソッドは、JDK_JAVA_OPTIONS にも適用されます。

ただし、これらの変数の主な違いは次のとおりです。

  1. Java ランチャーは、JDK_JAVA_OPTIONS を使用して渡された引数を読み取ります。したがって、ランチャーを終了させて​​JAR またはメインクラスを指定するオプションを渡すことはできません。

したがって、この変数を使用して、実行時に使用されるオプションをランチャーレベルで渡すことができます。

  1. Java コンパイラと JAR は JAVA_TOOL_OPTIONS も読み取ります。したがって、この変数を使用して、実行を調整するためのオプションを設定できます。

たとえば、この変数を使用してフラグを設定できます。

まとめ

この記事では、Java の JAVA_TOOL_OPTIONSJDK_JAVA_OPTIONS、および _JAVA_OPTIONS 環境変数について説明しました。また、これらの環境変数の使用の違いについても説明しました。