最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

16.30.Javaの世界 - 真実はまだ霧の中

[ Previous ] [ HOME ] [ Upper ] [ Next ]


注意

多分このページを見られている方は、Javaに興味を持っている人だと思う。ただ、私は実はJavaの勉強をはじめて、まだ、3日目(昔、読んだことは、「忘却」。)なので、バリバリJavaを使っている方は、このページを見ないほうがいいです。

この短い期間で、Javaから、学んだことを、ほとんど自分のためにまとめました。

なぜ、Javaか

答えは簡単。

これからのAS/400は、PCとインターネットの連携の上に成り立つから。

ということは、PCのアプリケーションなり、言語なり、を習得しなくてはいけないわけだ。ExcelやらAccessよりも、言語だ。自分は今、サイトを持ち、曲りなりにも、ページををつくり、多くの人からの訪問をうけ、メールもいただく。この狭いAS/400の世界なのに、訪問者がいるのだ。インターネットの凄さ、を、感じる。つまり、ある日突然、インターネットが無くなる、なんてありえないわけで、WWWブラウザもなくならず、これからも、WWWの窓として機能していくに違いないのだ。なら、ブラウザやインターネットに関連するものがいい(無駄な投資にならない)。また、AS/400にも、当然関係しなくてはいけない。すると、Javaという答えは、必然と得られるのだ。

きっかけ

ある日、久しぶりに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に進む。この本は、かなり内容が硬いので、精読しないと、なかなか、理解できない。私は、急いでいるのだ.。

Javaって、こんな感じ

もちろん「東南アジア大スンダ列島南東部の島。インドネシア共和国の中心をなし、首都ジャカルタがある」ではない。言語のことだ。

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がわかる」のサンプルの実行例。

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が来るし、いろいろと忙しくなる。急がないと...

リンク集

Java(TM) 2 SDK, Standard Edition

http://java.sun.com/products/jdk/1.2/ja/

IBM樋口研究室

http://www.ibm.co.jp/software/groupware/tips/index.html

Java Frequently Asked Questions(FAQ)

http://tech.webcity.ne.jp/~andoh/java/javafaq.html

sunのJava 入門 

http://www.n-sun.com/java/Tutorial/index.html

サイト訪問していたら、発見!井手さん、楽しみにしています!

http://www.pp.iij4u.or.jp/~ide/

以上

2000-1-15


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送