昔からプログラムの修正なども一体に組み込んだ言語処理系はあるが, 普通 はテキストファイルは, テキストエディタを用いて作成, 修正する. 教育用計 算機センターのシステムで標準に用意されるテキストエディタは Mule であり, Mule の使い方は前回までの自習でマスターしてあるはずである.
そのため,センター標準の tcsh を使っている人は ~/.cshrcの最後に
set path=(/usr/java1.3/bin $path)を挿入すると,次回のログインから新しい処理系が使えるようになる.実行中 の kterm ウィンドウでも,
set path=(/usr/java1.3/bin $path)を実行すると,それ以降は新しい処理系が優先される.この設定がうまく行っ た場合は,
ktanaka@ux019> java -version java version "1.3.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0) Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)のように表示される.うまくいっていないと,
ktanaka@ux019> java -version java version "1.1.3"となる.
cd ~ mkdir java cd javaのようにして,~/java以下で作業をする.
class Test { public static void main(String[] argv){ System.out.println("Hello World"); System.out.println("Hello Again"); } }ファイルを保存したら, ktermのウィンドウでUnixコマンドの ls を実行して, ファイルができていることを確認する.
計算機が直接実行するのはメモリ上に2進数の形で蓄えられたコードで,機械 語と呼ばれる.機械語は機械が直接実行しやすいよう設計されたコードなので, 人間が直接書くのは難しい.機械語に一対一で対応するように,人間が書きや すくしたものが,アセンブリ言語である.
言語の仕様と, 言語処理系は一対一対応ではないが, Java言語の場合は言語 の仕様の一部として, 仮想的な計算機(Virtual machine, 仮想機械)を定め, コンパイラはバイトコード(bytecode, 仮想機械の機械語にあたる)を生成する 仕組みを取っている. この方式は,
オブジェクトファイルの実行には, バイトコードインタプリタという仮想的 な機械をシミュレートするプログラムが使われることが多い. しかし, この方 式は直接, 対象とするマシンの機械語を生成する場合と比較して遅い(数10倍 程度)ので, JIT(Just-In-Time) コンパイラといって, 実行時にバイトコードから実行するマシンの機械語に変 換する方式もある.
javac Test.java正しくソースファイルが作られている場合は, 何もメッセージを出さずに終了 する. メッセージが出る場合は, どこかに問題がある場合である. 典型的なエ ラーメッセージとその対策を書く.
error: cannot read: Test.java 1 error
Test.java:2:expected pulbic static void main(String[] argv){ ^ Test.java:5: ';' expected } ^ Test.java:2: cannot resolve symbol symbol : class pulbic location: class Test pulbic static void main(String[] argv){ ^ 3 errors
Test.java:2: illegal character: \65371 public static void main(String[] argv)} ^ Test.java:7: 'class' or 'interface' expected ^ Test.java:4: cannot resolve symbol symbol : class out location: class java.lang.System System.out.println("Hello Again"); ^ Test.java:2: missing method body, or declare abstract public static void main(String[] argv) ^ 6 errors
java Testと入力すると,
Hello World Hello Againと出力されるはずである.