% javac HelloWorld.java または % javac HelloWorldApplet.java |
/*
HelloWorld.java
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World !");
}
}
% java HelloWorld Hello World ! |
/*
* HelloWorldApplet.java
*/
import java.applet.Applet; // 必要なクラスファイルのインポート
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
public void init() {
resize(250, 100); // アプレットウィンドウのサイズ
}
public void paint(Graphics g) {
g.drawString("Hello World", 70, 50); // 文字列描画の開始位置の指定
}
}
<html> <head> <title>HelloWorldAppletを表示する</title> </head> <body> <h1>アプレットでHelloWorldを表示する</h1> <applet code="HelloWorldApplet.class" width="250" height="100"> </applet> </body> </html>
このときWebブラウザで helloworld.html ファイルを眺めると、そのWebページ内で次のように表示される:
アプレットビューアの利用 Webブラウザでアプレットを表示させることがアプレット利用の目的であるが、コードのデバグ・修正そしてコンパイルの繰り返しに対して、その結果がWebブラウザに反映されない。 Netscape Navigatorをいったん終了して、もう一度起動しなければならない(最初のアプレット情報がキャッシュに貯められるため)。
このため、アプレットの開発には次のようにしてアプレットビューアを使うとよい。
% appletviewer helloworld.html |
Javaに限らず、プログラミング言語で書かれたプログラムは、機械語(コンピュータが直接実行できる言語。マシン語ともいう)に変換されて実行される。この変換の仕方は大きく分けてコンパイラ方式とインタプリタ方式がある。
Javaはコンパイラとインタプリタの両方を用いるコンパイラ・インタプリタ方式である。 JavaはJavaコンパイラ(javacコマンド)で.javaファイルを.classファイルに変換する。 .classファイルの内容をバイトコードと呼び、 Javaインタプリタ(javaコマンド)はこのバイトコードを機械語に変換しながら実行する。
なぜ、このようなまどろっこしいことをするのであろうか。 それは実行速度と移植性のバランスを取ったためだと思われる。 インタプリタ型は移植性を高くするのに向いているが実行速度が遅い。 対してコンパイラ型は、コンパイルして機械語にしたコードは他の環境では動かない。 そこでJavaでは環境に依存しないバイトコード(中間コードとも呼ばれる)を設計し、 バイトコードまではコンパイルし、バイトコードはインタプリタで実行することで そこそこの実行速度を持ちながら移植性の高さを保つことに成功した。 Javaはコンパイラとインタプリタの良い面を取り入れたハイブリッドな言語と言える。
Hell, World. Let's study Java Language.
import java.awt.Color; // この行をインポート行に追加する
...
...
public void paint(Graphics g) {
setBackground(Color.yellow);
g.setColor(Color.red);
g.drawString("Hello ", 75, 100);
g.setColor(Color.blue);
g.drawString("World", 75, 125);
}
このアプレットを作成して実行してみよ。