Java のプログラミングは、テキストエディタ、make(1S)、および以下のものによって Solaris Java Virtual Machine (以降 Solaris Java VM とします) でサポートされています。
javac |
Java コンパイラ。Java ソースコードファイル (name.java) インタプリタ (java(1)) が処理できるバイトコードファイル (name.class) に翻訳する。Java アプリケーションと Java アプレットの両方がコンパイルされる。 |
javald |
ラッパージェネレータ。Java アプリケーションのコンパイルと実行に必要な環境を取り込むラッパーを作成する。ラッパーが呼び出されるまで指定されたパスが結合されないので、ラッパーは JAVA_HOME および CLASSPATH パスの再配置を考慮している。 |
java |
Java インタプリタ。コマンドとして呼び出して Java アプリケーションを実行したり、HTML コードによってブラウザから呼び出してアプレットを実行したりできる。 |
appletviewer |
Java アプレットビューワ。このコマンドは、指定されたドキュメントまたは資源を表示し、ドキュメントが参照している各アプレットを実行する。 |
javap |
Java クラスファイルの逆アセンブラ。javac によってコンパイルされたバイトコードのクラスファイルを逆アセンブルし、結果を標準出力に出力する。 |
javah |
C ヘッダおよびスタブファイルジェネレータ。指定されたクラスごとに、classname.h という名前のヘッダファイルを作成してカレントディレクトリに入れる。またオプションで、C ソーススタブファイルを生成する。 |
make(1S) の使用方法については、『プログラミングユーティリティ』を参照してください。
通常の Java 環境変数は、次のとおりです。
変数 |
説明 |
---|---|
JAVA_HOME |
Java ソフトウェアのベースディレクトリのパス。たとえば、javac、java、appletviewer、javap、javah は、すべて $JAVA_HOME/bin にある。Solaris Java VM を使用するために設定する必要はない。 |
CLASSPATH |
アプリケーションおよびアプレットで使用するためのコンパイル済み *.class ファイルを持つディレクトリへのパスがコロン (:) で区切られたリスト。javac、java、javap、javah によって使用される。設定しないと、すべての Solaris Java VM 実行可能ファイルは、/usr/java/lib/classes.zip をデフォルトとする。Solaris Java VM を使用するために設定する必要はない。 |
PATH |
通常の実行可能ファイル検索リストに、$JAVA_HOME/bin を入れることができる。 |
Java VM ツールは /usr/java/bin にインストールされ、各実行可能ファイルへのシンボリックリンクは、/usr/bin に格納されます。これは、新たにインストールされる Java VM パッケージを使用するためにユーザの PATH 変数に何も追加する必要がないことを意味します。また、すべての Java VM 実行可能ファイルは、パス /usr/java/lib/classes.zip をデフォルトとして標準 Java クラスライブラリを見つけます。
ベース Java プログラミング環境は、デバッガを提供していません。デバッガは、別売りの Java WorkShopTM パッケージに含まれています。
Java プログラムは、アプリケーションとアプレットという 2 つの形式で作成されます。
Java アプリケーションを実行するには、コマンド行から Java インタプリタを呼び出し、コンパイル済みアプリケーションを持つファイルを指定します。
Java アプレットは、ブラウザから呼び出します。ブラウザによって解釈される HTML コードは、コンパイル済みアプレットを持つファイル名を指定します。こうすると、ブラウザは Java インタプリタを呼び出し、インタプリタがアプレットをロードして実行します。
例 2-1 は、"Hello World" を標準出力に表示するだけのアプリケーションのソースです。メソッドは、呼び出し時に引数を受け入れますが、それらを使用して何も行いません。
// // HelloWorld Application // class HelloWorldApp{ public static void main (String args[]) { System.out.println ("Hello World"); } }
C と同様に最初に実行されるメソッド、すなわち関数は main として識別されます。キーワード public によって、メソッドは誰でも実行できます。static は main に HelloWorldApp クラスを参照させ、クラスの他のどのインスタンスも参照させません。void は main が何も戻さないことを示し、args[] は String 型の配列を宣言しています。
アプリケーションは、次のようにコンパイルします。
$ javac HelloWorldApp.java |
また、次のように実行します。
$ java HelloWorldApp arg1 arg2 ... |
例 2-2 は、例 2-1 のアプリケーションと同等のアプレットのソースです。
// // HelloWorld Applet // import java.awt.Graphics; import java.applet.Applet; public class HelloWorld extends Applet { public void paint (Graphics g) { g.drawstring ("Hello World", 25, 25); } }
アプレットでは、参照されているすべてのクラスを明示的に取り込ま (import) なければなりません。キーワード public と void は、アプリケーションの場合と同じことを意味しています。extends は、HelloWorld クラスが Applet クラスから継承することを示しています。
アプレットは、次のようにコンパイルします。
$ javac HelloWorld.java |
アプレットは、HTML コードによってブラウザで呼び出されます。アプレットを実行するための最小限の HTML ページは次のとおりです。
<title>Test</title> <hr> <applet code="HelloWorld.class" width=100 height=50> </applet> <hr>
Java アプリケーションを正しく実行するには、JAVA_HOME、CLASSPATH、および LD_LIBRARY_PATH 環境変数を正しく設定する必要があります。これらの環境変数の値は、各ユーザによって制御されるため、パスが通常とは異なるように任意のパスに設定できます。また、通常、アプリケーションは CLASSPATH 変数に独自の値が必要です。
javald(1) は、Java アプリケーションのためのラッパーを生成するコマンドです。ラッパーは、JAVA_HOME、CLASSPATH、および LD_LIBRARY_PATH 環境変数のいずれか、またはすべての正しいパスを指定できます。パスを指定しても、これらの環境変数のユーザの値には影響しません。Java アプリケーションの実行中は、これらの環境変数のユーザの値を無効にします。さらにラッパーは、Java アプリケーションが実際に実行されるまで指定されたパスが結合されないことを保証するので、アプリケーションの再配置性が最大になります。