プログラミング基礎

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

Applicationのコンパイルと実行

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

次のアプリケーションコード HelloWorld を例に、コンパイルと実行を説明する。 HelloWorld.java というファイル名で、以下のソースコードを作成する。 ファイル名とクラス名(public class の後に続く名前)が大小文字とも一致していることに注意。

ファイル名:HelloWorld.java
(例題1)
/*
 HelloWorld.java
 */

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

Javaソースのコンパイル

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

% javac HelloWorld.java

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

コンソールでの実行

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

% java HelloWorld

実行結果
Hello World !

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

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

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

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

以下のサンプルでは、様々な変数を標準出力へ出力している。
また、+を利用することにより、文字列の接続ができる。
(例題2)
/*
 HelloWorld.java
 */

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World !");
        System.out.println(1);
        System.out.println(100);
        System.out.println(123.456);
        System.out.println(true);
        System.out.println("Hello " + "Java!");
        System.out.println("Hello " + "Java " + "World!");
    }   
}
以下のサンプルは、標準入力をキーボードから受け付けるサンプルである。
// から行末まではコメントであり、コンパイルや実行に影響が無い。ソースコードの説明を追加したりし、ソースコードを人が読みやすくするために利用する。
ファイル名:StdInput.java
ファイル名と public class名が大小文字とも一致していることに注意
(例題3)
import java.io.*;
public class StdInput {
    public static void main(String[] args) throws IOException {
        String s1; //String(文字列)の変数宣言
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
        s1 = buf.readLine(); //標準入力から一行読み、変数へ設定
        System.out.println("input data is " + s1); //標準出力へ出力
    }
}
実行すると、標準入力の待ち状態になる。
何か文字列を入力し、[Enter]キーを押すと、処理が続行する。
この例では、入力した文字をそのまま表示している。

% java StdInput
hello
input data is hello

mizutani
ohmi (加筆修正)
mackin (削除編集 2003-)