java - Java アプリケーション起動コマンド

形式

    java [ options ] class [ argument ... ]
    java [ options ] -jar file.jar [ argument ... ]
    javaw [ options ] class [ argument ... ]
    javaw [ options ] -jar file.jar [ argument ... ]
    oldjava [ options ] class [ argument ... ]
    oldjavaw [ options ] class [ argument ... ]
options
コマンド行オプション
class
呼び出されるクラスの名前
file.jar
呼び出される JAR ファイルの名前。必ず -jar と同時に使用される
argument
main 関数に渡される引数

解説

java ツールは、Java アプリケーションを起動します。java ツールは、Java Runtime Environment を起動したあと、指定されたクラスをロードし、このクラスの main メソッドを呼び出して Java アプリケーションを起動します。メソッドの宣言は、次のようにする必要があります。
    public static void main(String args[])
メソッドは、public および static として宣言します。 値は返されません。 String 配列をパラメータとして指定できなければなりません。デフォルトでは、オプションではない最初の引数が、呼び出すクラスの名前になります。この名前には、完全指定のクラス名を使用する必要があります。-jar オプションを指定した場合、オプションではない最初の引数は、アプリケーションのクラスファイルとリソースファイルを含む JAR アーカイブの名前になります。 この場合、Main-Class マニフェストヘッダで指定されたクラスがスタートアップクラスになります。

Java Runtime では、スタートアップクラスおよび使用されるその他のクラスは、ブートストラップクラスパス、インストール型拡張機能、およびユーザクラスパスの 3 つの位置セットから検索されます。

クラス名または JAR ファイル名のあとのオプションではない引数は、main 関数に渡されます。

javaw コマンドは、関連付けられたコンソールウィンドウがない点を除いて、java と同じです。コマンドプロンプトウィンドウを表示させる必要がないときには、javaw を使用します。ただし、javaw 起動コマンドでは、なんらかの理由で起動が失敗した場合は、エラー情報を示すダイアログボックスが表示されます。

Client VM と Classic VM

Java 2 SDK と Java 2 Runtime Environment には、次の 2 つの Java Virtual Machine 実装が組み込まれています。

Java HotSpotTM Client VM
Java HotSpot Client VM は、デフォルトの Virtual Machine です。Java HotSpot テクノロジの採用によって、Classic VM よりパフォーマンスが向上しています。Classic VM を呼び出すときに特殊なコマンド行オプションを使う点を除いて (次を参照)、java では常に Client VM 上で動作するようにアプリケーションが起動されます。

Java 2 Classic VM
Java 2 Classic VM は、Java 2 SDK バージョン 1.2 の Virtual Machine の実装と基本的に同じです。次の例にのように、-classic コマンド行オプションを使用して呼び出します。

    java -classic MyApp
Java 2 Classic VM は、Java 2 SDK にのみ含まれます。Java 2 Runtime Environment には含まれません。-classic オプションは、Java 2 Runtime Environment では機能しません。

java と oldjava

javaoldjava の違いは、次のとおりです。 oldjava を使った次のコマンド
oldjava -classpath <path> ...
は、java を使った次のコマンドと同じです。
java -Xbootclasspath:<path> -Djava.ext.dirs= ...
どちらの場合も、<path> にはファイル rt.jar が入っています。rt.jar および SDK ソフトウェア内でのこのファイルの位置については、「SDK ファイル構造」の説明を参照してください。

JIT コンパイラの使用

デフォルトでは、Java アプリケーション起動ツールは、Java HotSpot テクノロジを使って実装される Java HotSpot Client VM 上でアプリケーションを実行します。Java HotSpot アーキテクチャでは独自の最適化コンパイラが使用されるため、Just-in-time (JIT) コンパイラを Java HotSpot Client VM と組み合わせて使用することはできません。

アプリケーションは、-classic オプションを指定して Java 2 Classic VM で起動することもできます。Java 2 Classic VM は、Java 2 SDK にのみ含まれます。Java 2 Runtime Environment には Java 2 Classic VM は含まれないため、Java 2 Runtime Environment では -classic オプションは機能しません。

java -classic MyApp
このモードでは、JAVA_COMPILER 環境変数を使用して Classic VM で使用する JIT コンパイラを指定することができます。JIT コンパイラの .dll ファイルは、SDK ではディレクトリ jre\bin、Java 2 Runtime Environment ではディレクトリ bin に配置しておかなければなりません。たとえば、JIT コンパイラのファイルが foo.dll という名前の場合は、JAVA_COMPILER を「foo」に設定すれば、Java 起動コマンドは classic モードでアプリケーションを実行するときに foo JIT コンパイラを呼び出します。JIT コンパイラは、コマンド行のスイッチに java.compiler プロパティを設定して、Classic VM でアプリケーションを起動するときに呼び出すこともできます。
java -classic -Djava.compiler=foo MyApp

オプション

起動コマンドには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。また、デフォルトの Java HotSpot Client VM では、非標準オプションが提供されます。非標準オプションは、今後のリリースで変更されることがあります。-classic オプションで呼び出す Java 2 Classic VM では、非標準オプションが異なります。 「Classic VM の非標準オプション」を参照してください。Java 2 Classic VM は、Java 2 SDK にのみ含まれます。Java 2 Runtime Environment には含まれません。-classic オプションは、Java 2 Runtime Environment では機能しません。

標準オプション

-classpath classpath
-cp classpath
クラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブのリストを指定します。クラスパスの各エントリはセミコロン (;) で区切ります。-classpath または -cp を指定すると、これらのオプションの値によって CLASSPATH 環境変数の設定は上書きされます。

java または javaw-classpath または -cp を使う場合、これらのオプションによって指定されるのはユーザクラスのクラスパスだけです。oldjava または oldjavaw-classpath または -cp を使う場合、これらのオプションによって指定されるのは、ユーザクラスとブートストラップクラスの両方のクラスパスです。

-classpath-cp を使用せず、CLASSPATH も設定されていない場合、ユーザクラスパスは現在のディレクトリ (.) になります。

クラスパスの詳細は、「クラスパスの設定」を参照してください。

-Dproperty=value
システムプロパティの値を設定します。

-jar
JAR ファイルの中にカプセル化されたプログラムを実行します。最初の引数は、スタートアップクラスの名前ではなく、JA R ファイルの名前になります。このオプションが機能するには、JAR ファイルのマニフェストに「Main-Class:classnameという形式の行を指定する必要があります。classname には、アプリケーションの開始位置として機能する public static void main(String[] args) メソッドを含むクラスを指定します。JAR ファイルとそのマニフェストについては、JAR ツールのページおよび Java チュートリアルの「Jar Files」を参照してください。

このオプションを使用すると、指定された JAR ファイルは、すべてのユーザクラスのソースになり、ほかのユーザクラスパス設定は無視されます。

oldjava ツールと oldjavaw ツールは、-jar オプションをサポートしていません。

-verbose
-verbose:class
クラスがロードされるたびにクラスに関する情報を表示します。

-verbose:gc
ガベージコレクションイベントが発生するたびに報告します。

-verbose:jni
ネイティブメソッドおよびその他の Java Native Interface (JNI) の使用に関する情報を報告します。

-version
バージョン情報を表示して終了します。

-showversion
バージョン情報を表示して続行します。

-?
-help
使用法を表示して終了します。

-X
非標準オプションに関する情報を表示して終了します。

非標準オプション

-Xmixed
混合専用モードで動作します (デフォルト)。頻繁に使用されるプログラムセグメント (ホットスポット) がネイティブコードにコンパイルされ、残りのバイトコードはバイトコードインタプリタによって実行されます。このモードでは、Java HotSpot Client VM が提供するパフォーマンス上の利点がすべて実現されます。

-Xint
インタプリタ専用モードで動作します。ネイティブコードへのコンパイルは無効になり、すべてのバイトコードがインタプリタによって実行されます。Java HotSpot Client VM に適合するコンパイラが提供するパフォーマンス上の利点は、このモードでは実現されません。

-Xdebug
デバッガが有効な状態で起動します。Java インタプリタは、jdb が使用するパスワードを表示します。詳細と例については、jdb の「解説」を参照してください。

-Xbootclasspath:bootclasspath
ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをセミコロンで区切ったリストを指定します。指定されたパスに存在するブートクラスファイルは、Java 2 SDK に含まれるブートクラスファイルの代わりに使われます。注: このオプションを、rt.jar 内のクラスをオーバーライドする目的で使用するアプリケーションは、指定しないようにしてください。 指定すると、Java 2 Runtime Environment バイナリコードライセンス違反になります。

-Xbootclasspath/a:path
ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをセミコロンで区切って指定して、デフォルトのブートストラップのクラスパスに追加します。

-Xbootclasspath/p:path
ディレクトリ、JAR アーカイブ、および ZIP アーカイブのパスをセミコロンで区切って指定して、デフォルトのブートストラップのクラスパスの前に追加します。注: このオプションを、rt.jar 内のクラスをオーバーライドする目的で使用するアプリケーションは、指定しないようにしてください。 指定すると、Java 2 Runtime Environment バイナリコードライセンス違反になります。

-Xfuture
クラスとファイルの形式を厳密にチェックします。下位互換性を保つため、Java 2 SDK の Virtual Machine が実行するデフォルトの形式チェックは、JDK ソフトウェアのバージョン 1.1.x が実行するチェックほど厳密ではありません。-Xfuture フラグは、クラスとファイのル形式仕様への準拠を強制する厳密なチェックをオンにします。Java アプリケーション起動コマンドの将来のリリースでは厳密なチェックがデフォルトになるため、このフラグは新しいコードを開発するときに使用するとよいでしょう。

-Xnoclassgc
クラスのガベージコレクションを無効にします。

-Xincgc
インクリメンタルガーベジコレクタを有効にします。インクリメンタルガーベジコレクタは、デフォルトでは無効ですが、プログラムの実行中にガーベジコレクションが一時停止しないようにします。ただし、減少できるのは GC 全体のパフォーマンスの約 10% までです。

-Xmsn
メモリ割り当てプールの初期サイズをバイト数で指定します。指定する値は、1M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 k または K を追加します。 メガバイトを指定するには、文字 m または M を追加します。既定値は 2M バイトです。例:
       -Xms6291456
       -Xms6144k
       -Xms6m
       

-Xmxn
メモリ割り当てプールの最大サイズをバイト数で指定します。指定する値は、2M バイトより大きい 1024 の倍数にしなければなりません。キロバイトを指定するには、文字 k または K を追加します。 メガバイトを指定するには、文字 m または M を追加します。既定値は 64M バイトです。例:
       -Xmx83886080
       -Xmx81920k
       -Xmx80m
       

-Xprof
実行中のプログラムのプロファイルを生成し、プロファイリングデータを標準出力に出力します。このオプションは、プログラム開発用のユーティリティとして提供されているため、本番稼動システムでの使用を目的としたものではありません。

-Xrunhprof[:help][:<suboption>=<value>,...]
cpu、ヒープ、 またはモ ニターのプロファイリングを有効にします。通常、このオプションのあとには、コンマで区切られた「<suboption>=<value>」のペアが続きます。サブオプションおよびそれらのデフォルト値の一覧を取得するには、コマンド java -Xrunhprof:help を実行します。

関連項目