31.1 Java プログラムの作成と実行

まず一番簡単な例として,一日の秒数をコンピュータに計算させてみましょう.要するに,60×60×24 を求めるわけです.

hwb32.1 OCamlプログラムの作成と実行のように,プログラムを書けば即座に実行してくれるインタープリタが作られている言語もありますが,Java ではソースコードをいったんファイルに保存して変換,実行とステップを踏む必要があります.

このように,ソースファイルを実行できるファイルに変換するソフトウェアを一般にコンパイラと呼びます.

Java プログラムの作成

最初にソースコードを書いたファイル(ソースファイル)を作りましょう.

ソースファイルを作るには,テキストエディタを使います.テキストエディタの使い方に関してはhwb8. テキストエディタをご覧ください.Java ではソースファイルには “.java” で終わるファイル名を付けるという約束がありますので,ここでは “Program.java” という名前のファイルを作ることにしましょう.

Java で「60×60×24」の計算をするには,

60 * 60 * 24

と書きます.ここで乗算記号として “×” ではなく “*” を使うのが,コンピュータ関連では一般的です.同じように除算記号として “÷” ではなく “/” を使います.

計算式自体はそれでよいのですが,それをプログラムのソースコードにして,実行時に結果を表示させるにはいろいろと文言を付けて次のようにする必要があります.

// Program.java: 最初の例 class Program { public static void main(String[] args) { System.out.println(60 * 60 * 24); } }

この内容でソースファイルを作ってください.上の記述は以下のような意味を持っています.

  • 1 行目の “//’ ‘から行の終わりまでは注釈であり,Java は読み飛ばすので,プログラムとしては何も書いていないのと同じことです.
  • 2 行目ではこのプログラムの名前 “Program” を指定しています.
  • 3 行目は実行されるもの “main” の指定です.やたらと飾り言葉がありますが気にする必要はありません.
  • 4 行目が計算と表示の指示です.
  • 5 行目の “}” は 3 行目の “{” と対になって,“main” の範囲を指示しています.
  • 6 行目の “}” は 2 行目の “{” と対になって,“Program” の範囲を指示しています.

なお,プログラム名とファイル名(のうち “.java” より前の部分)は同じである必要があります.プログラム名を好きに決められるこの仕組みは,大規模なプログラムを作る時には重要なのですが,これからの内容は一度に1つのプログラムしか作らないので,プログラム名は “Program”,ファイル名は “Program.java” で統一することにします.

Java プログラムの実行

いよいよプログラムの実行ですが,先にコンパイラを使ってソースファイルを変換する必要があります.

Java では,ターミナルウィンドウを開いて,

javac Program.javareturn2

と入力します.するとプログラムに間違いがなければ,“Program.class” というファイルが作られます.

そしてこのファイルを使って実行を行います.引き続きターミナルウィンドウで,

java Programreturn2
と入力します.

このようにして変換と実行を行った結果を示します.念のため以下では

  1. “Program.java” というファイルがあることを確認し,
  2. コンパイラでソースファイルの変換を行い,
  3. “Program.class”というファイルができたことを確め,
  4. プログラムを実行してみます.
ls Program.javareturn2
# Program.javaというファイルがあることを確認します Program.java # このように表示されればOKです
javac Program.javareturn2
# Java コンパイラでファイルの変換をします # 正常に完了すると何も表示されません
ls Program.classreturn2
# Program.classというファイルができたことを確認します Program.class # このように表示されれば OK です
java Programreturn2
# プログラムを実行します 86400

最後を見ると,“86400” という計算結果が求められていることが分かります.正確には,ソースコードの “System.out.println” の部分を処理する時に括弧の中身が計算されて表示されます.

このように,プログラムは処理と処理を束ねたもので構成されていて,処理の中では数学でお馴染みの数式も使えます.この数式を,数値だけでなく色々なデータを扱うようにして,また処理の種類を増やしたものが本格的なプログラムの正体です.

また,プログラムは一定のルールに則って書く必要があります.間違った場合,例えば

// Program.java: エラーの例 class Program { public static void main(String[] args) { System.out.println(60 : 60 * 24); } }
javac Program.javareturn2
Program.java:4: ')' がありません. System.out.println(60 : 60 * 24); ^ Program.java:4: 文ではありません. System.out.println(60 : 60 * 24); ^ Program.java:4: ';' がありません. System.out.println(60 : 60 * 24); ^ エラー 3 個
では,“*” が “:” になっているため計算が行えず,“エラー” と表示されています.

このような時は書いた記述が正しいかどうかをよく確認してください.

caution
この先プログラムが複雑になっていくと,プログラムを実行した時に計算が止まらなくなることがあるかもしれません.そのような場合は, cを入力すると,実行を中止してターミナルのプロンプトが表示されます.