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