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 と同時に使用される
argument
main 関数に渡される引数

解説

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

Java Runtime は、ブートストラップクラスパス、インストール型拡張機能、およびユーザクラスパスの 3 つの場所から、スタートアップクラスとその他の使用するクラスを探します。

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

java と oldjava

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

JIT

起動コマンドのデフォルトの動作では、Just In Time コンパイラ (JIT) を使ってバイトコードを実行します。デフォルトでは、コンパイラは jre¥bin¥symcjit.dll にあります。JIT は、クラスがロードされると、クラスのバイトコードをネイティブマシンコードに変換します。JIT を使うと、各クラスのロード後に若干の遅延が発生しますが、プログラム全体のパフォーマンスは向上します。場合によっては、実行時間が 10 分の 1 に短縮されることもあります。

JIT が無効になっている場合は、バイトコードがインタプリタによって直接実行されます。JIT を無効にするには、次の 2 つの方法があります。

また、JAVA_COMPILER または java.compiler を使って代替 JIT の使用を指定できます。
C:¥> set JAVA_COMPILER=foo
または
C:¥> java -Djava.compiler=foo myapp
「foo」に .dll 拡張子が追加されるため、Virtual Machine は、foo.dll という名前の JIT コンパイラを検索します。代替コンパイラの検索は、jre¥bin ディレクトリおよびシステムの PATH で行われます。代替コンパイラが見つからない場合は、インタプリタが使われます。

オプション

起動コマンドには、現在の実行環境および将来のリリースでサポートされる標準オプションがあります。このほかの非標準オプションは、現在の Virtual Machine 実装に固有のオプションで、将来変更される可能性があります。非標準オプションは -X で始まります。

標準オプション

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

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

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

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

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

-jar
JAR アーカイブの中にカプセル化されたプログラムを実行します。最初の引数は、スタートアップクラスの名前ではなく、JAR アーカイブファイルの名前になります。スタートアップクラスは、Main-Class マニフェストヘッダによって指定されます。指定された JAR ファイルは、すべてのユーザクラスのソースになり、ほかのユーザクラスパス設定は無視されます。

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

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

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

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

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

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

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

非標準オプション

-Xbootclasspath:bootclasspath
ブートクラスファイルを探すディレクトリ、JAR アーカイブ、および ZIP アーカイブをセミコロンで区切ったリストを指定します。指定されたパスに存在するブートクラスファイルは、JDK 1.2 ソフトウェアに含まれるブートクラスファイルの代わりに使われます。

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

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

-Xmsn
メモリ割り当てプールの初期サイズを指定します。指定する値は、1000 より大きくなければなりません。値を 1000 倍にするには、文字 k を追加します。値を 100 万倍にするには、文字 m を追加します。既定値は 1m です。

-Xmxn
メモリ割り当てプールの最大サイズを指定します。指定する値は、1000 より大きくなければなりません。値を 1000 倍にするには、文字 k を追加します。値を 100 万倍にするには、文字 m を追加します。既定値は 16m です。

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

-Xrs
オペレーティングシステムシグナルの使用を減らします。

-Xcheck:jni
Java Native Interface (JNI) 関数に対して追加チェックを行います。

関連項目