プログラムの構成要 素を画面上で並べてプログラムをおこなうビジュアルプログラミングも研究は されているが, 完全にテキスト入力なしに実現しているものは少ない.
この講義では、統合環境と呼ばれるプログラムの修正や実行、デバッグなど を一体に組み込んだシステムは使わず、テキストエディタを用いてプログラム の作成, 修正をおこなう。教育用計算機システムで標準に用意されるテキスト エディタは Emacs であり, Emacs の使い方は情報処理でマスターしてあるは ずである.
教育用計算機システム中ではNC環境(Linux)とUnix環境のどちらを使ってもプ ログラミングできる。
ktanaka@nc01921> java -version java version "1.4.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92) Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)のようにJava 2 SDK 1.4が使われる設定になっている.自宅のPC等でJava処理 系をインストールして使う場合は、なるべく同じ(あるいは更に新しい)バー ジョンにしておいた方が混乱が少ない。
個人の設定で,シェル変数pathを変更している場合は古いバージョンのJava処 理系が使われる可能性があるので,注意すること.
ktanaka@nc01921> cd ~ ktanaka@nc01921> mkdir java ktanaka@nc01921> cd javaのようにして,~/java以下で作業をする.最初は混乱するかもしれないが、す べてのファイルをホームディレクトリ直下に作るようにすると、ファイル数が 多くなってしまい見つけにくくなる。
手で一文字一文字入力するのが慣れるための早道なので, マウスを使ってのコピー & ペースト は用いないように(慣れてきたら,後の方ではコピー & ペースト しても良い).フォントの関係で見にくくなっているが [] は'[' と']' を入力する.
class Test { public static void main(String[] argv){ System.out.println("Hello World"); System.out.println("Hello Again"); } }ファイルを保存したら, ktermのウィンドウでUnixコマンドの ls を実行して, ファイルができていることを確認する.
ここで、Test.javaというファイル名も重要である。「.java」の部分の拡張 子は Java言語ののソースプログラムであることを表しているし、その前の Testというのも、プログラム中の「Test」と対応させておくと都合が良い。
コンパイラ方式の言語処理系では, プログラムを記述するテキストファイルの ことをソースファイル(source file)と呼び, コンパイラによって作られる機 械語のファイルのことをオブジェクトファイル(object file)と呼ぶ. コンパ イラを使ってソースファイルからオブジェクトファイルを作成することを「コ ンパイルする」と言う.
標準的な Java の処理系は Java 言語を開発した Sun MicroSystems社の出し
ている Java 2 SDK (Standard Development Kit)である( Java2 Standard Edition ). 今回の授
業では Java 2 SDK 1.4というバージョンを用いる.
言語の仕様と, 言語処理系は一対一対応ではないが, Java言語の場合は言語
の仕様の一部として, 仮想的な計算機(Virtual machine, 仮想機械)を定め,
コンパイラはバイトコード(bytecode, 仮想機械の機械語にあたる)を生成する
仕組みを取っている. この方式は,
オブジェクトファイルの実行には, バイトコードインタプリタという仮想的
な機械をシミュレートするプログラムが使われることが多い. しかし, この方
式は直接, 対象とするマシンの機械語を生成する場合と比較して遅い(数10倍
程度)ので, JIT(Just-In-Time)
コンパイラといって, 実行時にバイトコードから実行するマシンの機械語に変
換する方式もある.
計算機が直接実行するのはメモリ上に2進数の形で蓄えられたコードで,機械
語と呼ばれる.機械語は機械が直接実行しやすいよう設計されたコードなので,
人間が直接書くのは難しい.機械語に一対一で対応するように,人間が書きや
すくしたものが,アセンブリ言語である.
という特徴がある.
javac Test.java正しくソースファイルが作られている場合は, 何もメッセージを出さずに終了 する. メッセージが出る場合は, どこかに問題がある場合である. 典型的なエ ラーメッセージとその対策を書く.
エラー: Test.java を読み込めません。 エラー 1 個
Test.java:2:がありません。 pulbic static void main(String[] argv){ ^ Test.java:5: ';' がありません。 } ^ Test.java:2: シンボルを解釈処理できません。 シンボル: クラス pulbic 位置 : Test の クラス pulbic static void main(String[] argv){ ^ エラー 3 個
Test.java:2: \65371 は不正な文字です。 public static void main(String[] argv){ ^ Test.java:4:がありません。 System.out.println("Hello Again"); ^ Test.java:6: 'class' または 'interface' がありません。 } ^ Test.java:7: 'class' または 'interface' がありません。 ^ Test.java:4: シンボルを解釈処理できません。 シンボル: クラス out 位置 : java.lang.System の クラス System.out.println("Hello Again"); ^ Test.java:2: メソッド本体がないか、abstract として宣言されています。 public static void main(String[] argv){ ^ エラー 6 個
java Testと入力すると,
Hello World Hello Againと出力されるはずである.