ある日、久しぶりにIBMのサイトを覗いたら、「Java
for RPG Programmers」という本が翻訳されたと出ていた。IBMが、AS/400関係(RPG)で、翻訳版を出すのは、2冊目。(一冊目は、ご存知「Inside
the AS/400」)。力を入れているなぁ、自分の方向性に誤りはないと、納得して、購入。また、本屋さんで、Javaの本を2冊購入して、読み始めた。購入したのは、
「最新Javaがわかる」
技術評論者、藤田一郎著、サイト(「イチローのJavaと遊ぼう!」)(IBMの方らしい)図画多くて、分かりやすい。ボリュームが適当なので、全体の把握がしやすかった。
「愛と青春のJavaプログラミング」
掌田津耶乃著、毎日コミュニケーションズ;自分の「AS/400予備校」に取り入れたい書き方で、その意味でも勉強になった。
今日、現在は、「Javaがわかる」を読み終わり、「愛と青春の...」のpaintメソッドのところまで...先は長い。この後、Java
for RPG Programmersに進む。この本は、かなり内容が硬いので、精読しないと、なかなか、理解できない。私は、急いでいるのだ.。
VMの喜び
もし、貴方がプログラマーなら、自分の作ったプログラムが、別のマシンで動いたら、面白いだろうなー、と思ったことがあるのではないだろうか。Javaは、皆で寄って集って、それを実現しようとしてる(Write
Once, Run Anywhere.の精神)。多くの企業が参加して、規格もきちんとまとまり、Windowsでも、MACでも、動くのだ。すんげー、ことだと思う。まあ、多少の方言はあるかもしれないけど、信じられない。マシンはバラバラでも、共通な動き方をするプログラムを作成できる言語。それから、勘違いしていたんだけど、Javaは何も、ブラウザーの「ためだけ」の言語ではなかった。でも、ほとんどの使われ方は、知性のあるブラウザーが、業務処理ができるようにすることだろう。まあDOSの画面がプログラムから文字を直接出していたのに、WindowsやらMACは、まずウインドウが出ないと、オペレータとやり取りできない。しかも、インターネットを仲介してデータの自由にやり取りしたい。それで、ブラウザーに目をつけたように、思える。それから、まだ、市場にでて、せいぜい5年程度の若い言語ということも見逃せない。これから、異様に成長すると思うので、今が習得のチャンスかもしれない。
遅いことは遅い
Just In Time Compiler (JIT) ...
実行時にコンパイルする。変換済みのものがあれば、それを再利用する。(このおかげでAppletのデバッグがしにくい場合があった)。
これが遅いと言うことで、回避策として、HotSpotという考え方ができた。プログラムの動作から、コンパイルした方がよさそうなときのみ、コンパイルするらしい。そのコンパイルしたほうがよさそうな部分をHotSpotというそうだ。
コンパイラの在りか
http://java.sun.com/products/jdk/1.2/ja/
このページは、日本語のページ。ダウンロードは、結構時間がかかる(64kで50分ほど)が、仕方ない。exeファイルが得られる。また、インストールは、単純で、exeを実行するだけ。但し、コンパイル(javac)は、MS-DOSのコマンド入力ウィンドウから行う。pathの設定も必要となる(たいしたこと無い)。
コンパイルして、実行してみたところ。「最新Javaがわかる」のサンプルの実行例。
多分、思いっきり、大胆なきり方だと思うけど、こうしないと分からなかった。いづれ、少しづつ、より正しい方向へ、自分の理解が進むだろうと、信じて、今は、バッサリと、定義してしまおう。間違っているかも知れないけど。
Sample.java
public class Sample {
public static void main(String [] args) {
System.out.println("Hello Java");
}
} |
xxx.javaファイル
ソースファイル。この後のクラス名と、同じでないと、コンパイルエラーになる。つまり、javaファイル名
= Class名となる。したがって、多分、javaソースファイル1つに、クラスは1個なのだろう。上の例では、Sample(大文字、小文字も識別すること)がJavaのファイル名。ちなみに、エディターは「秀丸」。本当に便利だ。正式ユーザーになっていてよかった。
クラス(class)
上の例では、public class Sampleの最後のSample(大文字、小文字も識別すること)がクラスの名前。この名前と、上記のファイル名の名前が違うと、コンパイルエラーになる。
クラスは、プログラムを全体を意味する部分。「フィールド」と「メソッド」の集まりと本に出ている。ほとんど、「ソースファイルそのもの」=「クラス」だと思う。上記のソースファイル名があれば、クラス名なんていらない(コンパイラが勝手に判断してほしい)のでは、思ったが、実は、「public」とかの「可視性修飾子」とか、「継承」が、classの書式に定義できるので、ここに存在価値があるらしい。
「継承」は、まだよく分からない。
メソッド(method)
サブルーチンらしい。但し、mainは、メインルーチンとして、1クラスに1個指定できるらしい。このサブルーチンは、すべて、必ず、パラメータの定義が入る。たとえ使わなくても、「使わない」とvoidと、コードしなくてはならない。一つのjavaソースにいくつも指定できる。このメソッドを、別のクラスから、利用できる。その場合、呼び出されるのは、一種の外サブになるのだろう。
インスタンス(instance)
これがよく分からなかったが、バイトコードが、VM上で実際に動き出すときの、クラスの実オブジェクトらしい。多分、内部オブジェクトだろう。newとかの命令で、インスタンス化するらしい。まだ、よく分からない。
アプリケーション(application)とアプレット(applet)
アプリケーションは、ブラウザなしでも単独で、動かせる(コマンド名:java)、形式のもの。DOSのコマンドで呼び出せる。アプレットは、別にhtmlファイルを作って、その中に、タグ<applet>...</applet>で呼び出して、wwwブラウザで表示(実行)するもの。(appletviewerでもいい。)※Javascriptって、かなり、このApplicationに似ているみたいです。
演算子
たくさんあるが、カウンター用の演算子がある。これには妙なものがある。
java |
RPG |
m = n++ |
@ Z-ADDn m A ADD 1 n |
m = ++n |
@ ADD 1 n A Z-ADDn m |
常識的には、下のほうだろうけど、まあ、「カウントアップ」のタイミングが、フィールドの転送の「前」か「後」で、「前」なら++n、「後」ならn++と考えると、++(カウントアップ部分)とnとで、順番を覚えやすいかな?
否定の演算子が != と、exclamation markを使っている。CLPでは、¬だが、フォントによって表示しない場合があるので、厄介なマークだ。その点、!
は助かる。
フィールドタイプ
オーあるある。PCの言語は、やたら変数のタイプが多い。
整数型 |
byte, short, int, long |
浮動小数点型 |
float, double |
文字型 |
char |
判断型 |
boolean |
配列
指標は [ i ] で表す。また、宣言文が、DCLなんて含まず、なんとなく、int[]
i; と i = new int[3];
なんて定義して終わり。この他にも指定の方法があるから、驚く。何で、いくつも宣言の仕方があるんだろう?指標が0から始まるのも注意だ。要素の数が三つならば、指標は、0
1 2の3つとなる。
コメント
CLPと同じ /* */。挟み込んだ部分がコメントになる。
もしくは、//のみ。このマークがついた行は、//から開始してコメント化する。
javadoc
これには驚いた。ある書式で、コメントを書いておいて、コマンドjavadocでhtmlを生成できる。このhtmlがプログラムの見出しスペックになる。便利だ。
構造化命令
RPG |
Java |
演算1 IFxx 演算2
ELSE
ENDIF |
if (論理式) {
}else{
}
|
演算1 DOWxx 演算2
ENDDO |
while (論理式){
} |
演算1 DOUxx 演算2
ENDDO |
do {
} while (論理式) |
開始値 DO 終了値 フィールド
ENDDO 増分値 |
for (フィールド;条件式;カウント文){
} |
演算1 CASxx 演算2 サブルーチン
演算1 CASxx 演算2 サブルーチン
ENDCS |
switch(フィールド) {
case xx :
case xx:
...
default:
} |
厄介なのは、whileがRPGのDo Whileで、do - whileがRPGのDo
Untilである点だ。混乱する。これって、多分Java側の表記が変だと思うのだが。
まだまだ
ふう、この後、アプレットで、AWT(Abstruct
Window Toolkit:画面制御用の部品プログラムの集まりみたいなものらしい)をimportして、extendsで継承して、画面に絵を書いた。まあ、RPGでも、画面ファイルを作るのは、簡単とは言いがたいので、画面周りは やや定義が複雑だ。でも、1から作るよりかは、ずっと楽なんだろうなぁ。
これから、まだまだ、学習が続く。急がないと、AS/400が来るし、いろいろと忙しくなる。急がないと...