javaは、コマンドラインベースの Java VMです。
entryname 引数は、初めに実行されるエントリーポイントです。これには、以下の二つの意味があります:
- デフォルトは、最初に実行されるクラスの名前です。CLASSPATH環境変数や -classpath
オプションで指定されたクラスファイル中から指定されたクラスを探し実行します。
- -jar オプションが指定された場合、JAR アーカイブ名を指定します。アーカイブには
Main-Classヘッダーのある manifest ファイルが含まれていなければなりません。 Main-Class
ヘッダーに記述されたクラスが初めに実行されます。
エントリーポイントには以下のメソッドが含まれていなければなりません:
public static void main(String[])
entryname のあとに続く argument は、javaで呼ばれるmain() メソッドの引数として渡されます。
クラスは、javac のような Javaコンパイラによってコンパイルされた、バイトコードファイル(.class)といった形で提供されます。例えば、
MyClass.class というファイルには MyClass というクラスがあります。そして、それらを実行するにはファイル名でなくクラス名である
MyClass を指定します。
% java MyClass
MyClass.class ファイルから MyClass がロードされ、 MyClass.main()
メソッドが実行されます。
javaの動作は CLASSPATH の設定に左右されます。使用する
.class ファイルは、 CLASSPATH に登録されたディレクトリや JAR
アーカイブ、ZIPアーカイブに含まれていなければなりません。 javaは、CLASSPATHにカレントディレクトリーが指定されていない場合、カレントディレクトリーをサーチしません。
CLASSPATH を設定したにもかかわらず、 javaが entryname をサーチできない場合、以下の様にフルエントリー名を指定してみて下さい:
% java COM.MyCompany.MyPackage.MyClass
このバージョン(JDK 1.2β)の注意
クラスや JARファイルおよびポリシーを指定する場合、-new オプションを指定しなくてはならない。でも、将来このオプションはなくなるでしょう。なんでだろう?あまり必然性が感じられない。新しい機能だから?
ま、いいか.....
JAR ファイル指定の場合
% java -new -jar foo.jar
クラス指定の場合
% java -new MyClass
検証
インタプリタは検査のメカニズムを介して、クラスが許可されているかどうかの判定をします。検査により、実行に先立って、クラスファイルがいかなる言語制約にも違反していないことを保証します。
JITの利用
このバージョンの JDKは、ジャストインタイム(JIT)コンパイラをサポートしています。クラスがロードされた時に
JIT はバイトコードをネイティブのマシンコードに翻訳します。JITを使用すると、それぞれのクラスをロードする時間がかかりますが、プログラムの実行時間は飛躍的にアップします。
このバージョンの java は、JITをデフォルトでは使用しません。もし、JITを利用したい場合、JAVA_COMPILER
環境変数を設定するか java の -D オプションを利用して下さい。
Solaris版は、"sunwjit"と呼ばれる JITが含まれています。Windows版は、"sunwjit"と"symcjit"と呼ばれる
JIT が含まれています。
JITを利用したい場合:
% setenv JAVA_COMPILER sunwjit
% java MyClass
JITの利用を中止したい場合:
% unsetenv JAVA_COMPILER
コマンドラインで使用の有無を決定したい場合:
% java -Djava.compiler=sunwjit MyClass