プログラミングの流れ
プログラミング体験いよいよ Linux 上でプログラムの作成と実行を行う。 これから学んでいくのは、プログラミング言語 Java である。 今回はプログラムの内容についての理解は置いておいて、 プログラムの作成を体験することから始めよう。
Java でプログラムを作成する場合はどういった手順が必要なのか見てみよう。 この説明では、Java のプログラム作成・実行環境である「J2SDK」が 既にインストールされていることとする (学科仕様の Vine Linux 2.6r4 には J2SDK が含まれている) 。 また、作業用のディレクトリは ~/computer2 ディレクトリとして説明する。 (~/computer2 と異なる場合、それぞれの環境に応じて各自読み替えること。)
プログラムの作成と実行は次のようなステップを踏むことになる。
- プログラムの作成
Emacs などを用い、テキスト形式でプログラムを作成する。 テキスト形式で書かれたプログラムのことを「ソースコード (source code) 」と呼ぶことがある。
- コンパイル
ソースコードはコンピュータ上で直接実行することができない。 プログラムの実行に先立ち、 コンピュータが理解できる形式に変換する必要がある。 この変換を「コンパイル (compile) 」と呼び、 変換を行うソフトウェアを「コンパイラ (compiler) 」と呼ぶ。 具体的には javac コマンドでプログラムをコンパイルする。
- デバッグ
プログラムに誤りがあった場合、コンパイラはエラーを報告する。 エラーが発生した場合、エラーメッセージに従い ソースコードを修正し再度コンパイルを行う。
- 実行
コンパイルされたプログラムを実行する。 具体的には java コマンドで実行する。
まず、以下のようなコマンドで ~/computer2 ディレクトリに移動する。 ここを、後期の「コンピュータ基礎および演習 II (Java プログラミング) 」の 作業場所としておこう。
$
cd ~/comptuer2
|
Emacs を用い、実際にプログラムを入力してみよう。 ファイル名は Hello.java とする。 それでは、以下のように Emacs を起動する。
$ emacs Hello.java & |
次に、Emacs に次のようなプログラムを入力しよう。 正確に。空白も正確に。「String[]」の括弧は、大括弧 ([, ]) である。 また、 Java では大文字と小文字を区別して扱うので注意。
入力が終わったら、保存 (C-x, C-s) する。 Emacs の起動時にファイル名を指定しなかった場合、 最下行でファイル名の指定が求められるので、 Hello.java と入力する。
public class Hello { public static void main(String[] args) { System.out.println("Hello."); } } |
これは、単に「Hello.」 と表示するだけの簡単なプログラムである。 内容は気にしないでまずは実行してみよう。
コンパイルに先立ち ls コマンドで、 Hello.java が作成されているか確認しておこう。 もし表示されていない場合、作業ディレクトリを確認すること。
$
ls
Hello.java |
ここで Hello.java~ や #Hello.java# などが表示されることがある。 Hello.java~ は Emacs が作成した編集前のバックアップファイル、 #Hellow.java# は Emacs が強制終了されたときに編集中だった内容である。
それでは、次のように javac コマンドを用い、 プログラムをコンパイルする。
$ javac Hello.java |
プログラムに何も問題がなくコンパイルが正常に行われた場合、 何も表示されない。
プログラムに誤りがあると次のようなエラーメッセージが表示される。
Hello.java:2: <identifier> がありません。 public static void main(String{} args) { ^ |
エラーが発生した場合、 エラーメッセージを良く読んで、 Emacs に戻りプログラムを修正する。
プログラムのコンパイルがうまく行っていれば、 以下のように ls でファイル一覧を表示させると、 Hello.class というファイルができているはずである。 Hello.class が無い場合、コンパイルがうまく行っていない。
$
ls
Hello.class Hello.java |
Java では、コンパイラはソースコードを Java Virtual Machine (Java VM, Java 仮想機械) で実行可能な、 バイトコードと呼ばれる形式にコンパイルする。 バイトコードは 〜.class というファイルで作成される。 この .class が付いたファイルを Java VM で実行するのである。
それでは先程のプログラムを実行してみよう。 実行には java コマンドを使う。 コンパイラの javac コマンドではないので注意。
java コマンドには、実行したいプログラムの名前を指定する。 プログラムの名前は、 〜.class から「.class」を取り去った、「〜」の部分である。
$
java Hello
Hello |
ここで Hello と表示されれば成功である。
実行時にエラーが発生した場合にも、 画面にエラーメッセージが表示される。 よくある間違いは、実行するディレクトリが間違っている場合である。 この例では、Hello.java と Hello.class がある ~/computer2 ディレクトリで実行している。
一度 〜.class ファイルを作成してしまえば、 java コマンドを使って何度でも実行することができる。 ソースコードを変更した場合は、 javac コマンドを使って再びコンパイルする必要がある。
「コンピュータ基礎および演習 II (Java プログラミング) 」では、 毎回授業で講義された内容について演習問題が課される。 演習問題の大半はプログラムの作成であり、 所定の提出場所に提出する必要がある。
提出場所は、サーバ earth.mlab.im.dendai.ac.jp の、 ディレクトリ /home/submit/1I-Computer2/[出題日]/[各自の学籍番号] である。 FTP を用いて提出すること。 練習用に今日の日付のディレクトリが作成してあるので、 今日作成した Hello.java を提出してみよう。
参考: Linux の gFTP を用いた提出方法 (実験室マニュアル)