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 起動コマンドでは、なんらかの理由で起動が失敗した場合は、エラー情報を示すダイアログボックスが表示されます。
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 2 Classic VM は、Java 2 SDK にのみ含まれます。Java 2 Runtime Environment には含まれません。-classic オプションは、Java 2 Runtime Environment では機能しません。java -classic MyApp
java と oldjava の違いは、次のとおりです。oldjava を使った次のコマンド
- oldjava 起動コマンドは、拡張機能機構をサポートしていません。ただし、クラスとリソースのアーカイブとして拡張機能パッケージを使用することは可能です。
- oldjava 起動コマンドはすべてのクラスに対してブートストラップクラスローダを使用しますが、java 起動コマンドはブートストラップクラスに対してだけブートストラップクラスローダを使用します。このため、基底クラスローダと互換性のないプログラミング手法が可能です。
- java 起動コマンドの -classpath オプションと -cp オプションは、ユーザクラスの検索パスを指定するオプションなので、ブートストラップクラスの位置を指定するために使用することはできません。oldjava 起動コマンドの -classpath オプションと -cp オプションは、ブートストラップクラスを含む「すべてのクラス」の位置を指定するオプションです。
CLASSPATH 環境変数の扱いについては、java と oldjava の間に「違いはありません」。-classpath または -cp によって上書きされる場合は別ですが、CLASSPATH は常にユーザクラスの位置を示しており、ブートストラップクラスの位置の指定は含まれていません。
- oldjava 起動コマンドは、Java 2 プラットフォームのすべてのセキュリティ機能をサポートしています。ただし、oldjava を使うと、クラスパスからロードされたクラスに保護ドメインがないため、java 起動コマンドではブートストラップクラスにしか許可されないアクセス権が、すべて許可されてしまいます。
は、java を使った次のコマンドと同じです。oldjava -classpath <path> ...どちらの場合も、<path> にはファイル rt.jar が入っています。rt.jar および SDK ソフトウェア内でのこのファイルの位置については、「SDK ファイル構造」の説明を参照してください。java -Xbootclasspath:<path> -Djava.ext.dirs= ...
デフォルトでは、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_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 MyAppjava -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% までです。