java - Java インタプリタ

java は Java バイトコードを解釈 (実行) します。

機能説明

   java [ options ] classname <args>
   java_g [ options ] classname <args>

説明

java コマンドは、 javac などの Java コンパイラによって作られた Java クラス ファイルを実行します。

classname 引数は実行されるクラスの名前です。 classname は、その名前の中にパッケージ名を含むことによって完全に修飾されなければなりません。たとえば、次のとおりです。

   % java java.lang.String
コマンド行にある classname の後の引数はいずれも、クラス main メソッドに渡されることに注意してください。

java は、対応するソースファイルを javac でコンパイルすることによって作成される classname.class と呼ばれるファイルの中に、クラスのバイナリ表現があることを予想します。Java クラスファイルはすべて、ファイル名の最後に拡張子 .class が付きます。この拡張子はクラスがコンパイルされるとき、コンパイラが自動的に付加するものです。classname は次のように定義された main メソッドを含まなければはなりません。

   class Aclass {
    public static void main(String argv[]){ 
        . . .
    }
}
javamain メソッドを実行し、 main が 1 つもスレッドを作成しない場合は終了します。もしスレッドが main によって作成される場合、java は最後のスレッドが終了するまで待ちます。

クラスを定義するときは、それらの位置を指定する必要があります。そのときは、CLASSPATH を使用してください。CLASSPATH は、パスを指定するディレクトリのリストから成り、コロンで分割します。たとえば、次のとおりです。

   .:/home/xyz/classes
パスの指定に -classpath オプションを使用しない場合、システムは、常にクラスパスの終わりにシステムクラスの位置を追加することに注意してください。

普通、javac でソースファイルをコンパイルし、java を使用してプログラムを実行します。しかし、java は、-cs オプションが指定されていると、プログラムをコンパイルして実行することができます。クラスがロードされるたびに、その修正日付はクラスソースファイルの修正日付と比較されます。ソースにその後変更があった場合、再コンパイルされ、新しいクラスファイルがロードされます。java は、すべてのクラスが正確にコンパイルされ、ロードされるまで、この手順を繰り返します。

インタプリタは検査のメカニズムを介して、クラスが許可されているかどうかの判定をします。検査により、実行に先立って、クラスファイルがいかなる言語制約にも違反していないことを保証します。

java_g は、jdb などのデバッガの使用に適した、java の最適化されていないバージョンです。

オプション

-debug
Java デバッガ - jdb を、この java セッションに付加することができます。-debug がコマンド行で指定されているとき、 java は、デバックセッションの開始時に使われるパスワードを表示します。
-cs, -checksource
このオプションは、コンパイルされたクラスがロードされるとき、クラスバイトコードファイルとクラスソースファイルの修正時間を比較します。ソースに最近変更があった場合、それは再コンパイルされ、新しいクラスファイルがロードされます。

-classpath path
java がクラスを探すために使用するパスを指定します。デフォルト、あるいは CLASSPATH 環境変数の設定をオーバーライドします。ディレクトリはコロンで分割します。したがって、path の一般形式は、次のようになります。
   .:<your_path>
たとえば、パスの指定は次のとおりです。
   .:/home/xyz/classes:/usr/local/java/classes

-mx x
x にメモリアロケーションプール(ガベージコレクトヒープ)の最大サイズを指定します。デフォルトは 16MB メモリ。x には 1000 バイト以上が必要です。

デフォルトでは、x はバイト単位です。x には、文字 "k" を追加することでキロバイトを、文字 "m" を追加することでメガバイトを指定することができます。

-ms x
x にアロケーションプール(ガベージコレクトヒープ)のスタートアップサイズを設定します。デフォルトは 1MB のメモリです。x には 1000 バイト以上が必要です。

デフォルトでは、x はバイト単位です。x には、文字 "k" を追加することでキロバイトを、文字 "m" を追加することでメガバイトを指定することができます。

-noasyncgc
非同期ガベージコレクションをオフにします。オプションが有効なとき、ガベージコレクションを明示的に呼び出すか、プログラムがメモリを使い果たしたときだけ、ガベージコレクションは起動します。通常ガベージコレクションは、非同期スレッドとして他のスレッドと並列して実行されます。

-noclassgc
Java クラスのガベージコレクションをオフにします。デフォルトでは、ガベージコレクション中に使用されない Java クラスのスペースを、Java インタプリタが再利用します。

-prof
Java プロファイル機能を有効にして Java ランタイムを起動します。デフォルトでは、プロファイル結果を ./java.prof ファイルに入れます。

-prof: file
Java プロファイル機能を有効にして Java ランタイムを起動します。このフラグの形式では、ユーザがプロファイル情報に対して異なる出力ファイルを指定できます。たとえば、-prof:myprog.prof フラグは、プロファイル機能を有効にし、デフォルトの ./java.prof ファイルではなく myprog.prof ファイルにプロファイル結果を入れます。

-version
構築されたバージョン情報を表示します。

-help
利用メッセージを表示します。

-ss x
Java スレッドはそれぞれ、Java コードと C コードの2つのスタックを持っています。-ss オプションは、スレッドの中で C コードによって使用されるスタックサイズの最大値を、x に指定します。java に渡されたプログラムの実行中に生成されるすべてのスレッドは、C スタックサイズとして x を持ちます。x のデフォルト単位はバイトです。x の値は 1000 バイト以上が必要です。

キロバイトには文字 "k" を追加し、メガバイトには文字 "m" を追加することにより、x の意味を変更することができます。デフォルトのスタックサイズは 128KB ("-ss 128k") です。

-oss x
Java スレッドはそれぞれ、Java コード用と C コード用の2つのスタックを持っています。-oss オプションは、スレッドの中で Java コードによって使用されるスタックサイズの最大値を x に指定します。java に渡されたプログラムの実行中に生成されるすべてのスレッドは、Java スタックサイズとして x を持ちます。x のデフォルト単位はバイトです。x の値は 1000 バイト以上が必要です。

キロバイトには文字 "k" を追加し、メガバイトには文字 "m" を追加することにより、x の意味を変更することができます。デフォルトのスタックサイズは 400KB ("-ss 400k") です。

-t
実行された命令のトレースを表示します(java_g のみ)。

-v, -verbose
クラスファイルがロードされるたびに、java が標準出力にメッセージを表示します。

-verify
すべてのコード上で検査を行います。

-verifyremote
クラスローダによってシステムにロードされるすべてのコード上で、検査を行います。verifyremote はインタプリタのデフォルトです。

-noverify
検査をオフにします。

-verbosegc
メモリを解放するときはいつでも、ガベージコレクタにメッセージを表示させます。

-DpropertyName=newValue
プロパティ値を再定義します。propertyName は値を変更するプロパティの名前で、newValue は変更される値です。たとえば、このコマンド行は次のようになります。
   % java -Dawt.button.color=green ...
awt.button.color プロパティの値を green にセットします。 java では、コマンド行の -D オプションの数は複数であってもかまいません。

環境変数

CLASSPATH
ユーザ定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。たとえば、次のとおりです。
   .:/home/xyz/classes:/usr/local/java/classes

参照

javac, jdb, javah, javap, javadoc