ソフトウエア入門目次

HelloWorldを表示する-Javaプログラムの書き方とコンパイル

ApplicationとAppletの2方法

Javaソースのコンパイル

すべてのJavaソースコードのファイル名には拡張子 .java をつけなければならない。 以下のように記述したソースファイルをコンソールで次のようにしてコンパイルする。

% javac HelloWorld.java
   または
% javac HelloWorldApplet.java

コンパイルに成功すると、拡張子 .class のついたクラスファイルが生成される。

アプリケーション版の表示

次のアプリケーションコードをコンパイルする。
ファイル名:HelloWorld.java
ファイル名と public class名が大小文字とも一致していることに注意
/*
 HelloWorld.java
 */

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World !");
    }   
}

コンソールでの実行

目的のクラスファイルHelloWorld.classがあることを確認して、次のように実行する。 クラス拡張子を付けていないことに注意する。

% java HelloWorld
Hello World !

アプレット版の表示

次のアプレットコードをコンパイルする
ファイル名:HelloWorldApplet.java
ファイル名と public class名が大小文字とも一致していることに注意

/*
 * 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);  // 文字列描画の開始位置の指定
    }
}

アプレットのHTMファイル指定

アプレットを表示するには、それを読み込むHTMLファイルが必要で、最低限次のようにしてアプレットを指定する。 この例では、一対のアプレットタグでは何も挟まれていない。
ファイル名:helloworld.html
<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
すると、ウィンドウが開いてアプレットが実行される。 アプレット内容の変更はすぐに反映される。 ただし、HTMLファイルに記入したアプレットタグ以外の情報は全て無視される。

プログラミング言語の実行方式

教科書 p.12

Javaに限らず、プログラミング言語で書かれたプログラムは、機械語(コンピュータが直接実行できる言語。マシン語ともいう)に変換されて実行される。この変換の仕方は大きく分けてコンパイラ方式とインタプリタ方式がある。

教科書 p.13

Javaはコンパイラとインタプリタの両方を用いるコンパイラ・インタプリタ方式である。 JavaはJavaコンパイラ(javacコマンド)で.javaファイルを.classファイルに変換する。 .classファイルの内容をバイトコードと呼び、 Javaインタプリタ(javaコマンド)はこのバイトコードを機械語に変換しながら実行する。

なぜ、このようなまどろっこしいことをするのであろうか。 それは実行速度と移植性のバランスを取ったためだと思われる。 インタプリタ型は移植性を高くするのに向いているが実行速度が遅い。 対してコンパイラ型は、コンパイルして機械語にしたコードは他の環境では動かない。 そこでJavaでは環境に依存しないバイトコード(中間コードとも呼ばれる)を設計し、 バイトコードまではコンパイルし、バイトコードはインタプリタで実行することで そこそこの実行速度を持ちながら移植性の高さを保つことに成功した。 Javaはコンパイラとインタプリタの良い面を取り入れたハイブリッドな言語と言える。


演習問題

  1. 上のアプリケーションとアプレットを実際に実行せよ。
  2. 次のように複数行に文字列を表示するアプリケーションとアプレットを作成せよ
    Hell, World.
    Let's study Java Language.
    
  3. アプレットウィンドウのサイズを変えてみよ。
  4. アプレットウィンドウの左上に文字列 Left Up、および右下に Right Down を表示するアプレットを作成せよ。
  5. アプレットウィンドウの背景色、描画色の指定について調べてみよ。 たとえば、 Paint()メソッド内で次のようにしてみよ。
    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);
    }
    
    このアプレットを作成して実行してみよ。

  6. 以上のソースプログラムを印刷し、左上隅に、学生番号と氏名を明記し、提出せよ。
  7. javacとjavaコマンドが何をするものかを説明せよ。

mizutani@rsch.tuis.ac.jp
ohmi@rsch.tuis.ac.jp (加筆修正)