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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

16.31.Javaの世界 - まだ霧が晴れない

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


Javaの壁

英語圏の方からのメールで、Javaはexotic(風変わり)で、not applicable (適応できない)と言っていきました。

こんな絵もくれます。

うーん、風当たりが厳しいなぁ。MLのメンバーになったけど、ROM (Read Only Member)。実は、まだ、概念が分からない。AS/400のNetの定義をやりながらも、Javaを読み、なんてことしてて、どっちも煮え切りません。仕事も、もうじき始まり、今度はかなり忙しいみたいで、どう考えても時間がとれそうもないです。焦っています。

それから私は、学生時代から乱読主義で、分からないことは、何冊も違う本を読んで、分かるようになる、という方法をとってきました。(しかし、今回のオブジェクト指向言語に関して言うならば、概念の精読の必要が有るようですが...)。

さてそこで、3冊のJavaプログラムの本を読みました。どれも満足のいく本では無かったです。必ず、アニメーションの話しになるのです。不思議でした。そして、1996年に初版発行の「一歩先ゆくインターネットJava入門」で初めて、この謎が解けました。当時、アニメーションソフトのデファクトスタンダードのFlashはまだ流布していなかったのです。このFlashはとても使いやすいソフトのため、よく利用している(Macでの互換性問題のために、アニメーションGifに変換してしまっているけど)優れたソフトで、何もJavaなんて出る幕ないのです。しかし、当時は、ホームページの上でアニメーションが出ていると、凄かったらしいのです。曰く「...実際にこのページをアプレット対応ブラウザで見ると、このロゴマークが色を変えながらぐるぐる回ります。このロゴのアニメーションがアプレットです。既存のWWWになれてしまった人だと多分このアニメーションを見ただけで歓声をあげることでしょう...」。うーん、もし、Javaアプレットの魅力がこれだけだとすると、問題ですが、勿論、その本には、インタープリタ、VM、セキュリティ、他、きちんと説明がありましたので、アニメーション=Javaとは書いてはなかったです。しかし肝心のサーバーのデータを利用して、云々など、全く出てきません。JAVAって本当はレコード処理なんて出来ないんじゃないのかぁ?まで思いました。でもJDBCが有るんだから、できるよなぁ。「Java for RPG Programmers」には、解説があるようなので、これから読んでみます。

そう言えば、Visual Age for JAVAを動かしたら、苦労して読んできた言語の指定が、部品を画面にドラッグするだけで、勝手にソースが別ウインドウに出来ていくのを見て、がっかりしました。最近あまり耳にしなくなりましたが「CASEツール」みたいです。なんだあ、時間の無駄だったのかぁ。実行ボタンを押したら、コンパイルなんて勝手にしてくれて、アプレットビューワーが勝手に出てきて....もう泣き出したいくらいでした。でも、学んだことは無駄にはならんないさ...でも、でも、「学んだこと」って何があるんだ?

言語の違い

RPGなどをコンパイルするとき、必要な外部情報は、「ジョブ環境」から取りだされるのは、皆さんご存知ですよね。では、PCのJavaはどうでしょうか。実は、Javaには、「継承」というものがあります。AWTと言われる、画面周りの部品集(マウスの制御とか、ボタンの機能とか...)みたいなものなのですが、import命令でこのawtの在処を指定します。(「継承」と「import-extends」だったら、「import-extends」の方がずっと分かりやすいなぁ。)

import java.awt.*;

見たいに指定しますが、こうすると、そのawtの下にある全てのクラス(それに含まれるメソッド)が使えるようになるそうです。これって、なんだか、ライブラリーリストに似ています。RPGの中で、ライブラリーリストを指定しているようで(知りませんよ!本当のところは!ただ、そんな感じがしてしまう、というだけの事です。)妙な感じです。(これはAS/400のJavaではなくて、PCでのお話です。)よく考えてみると、AS/400でのコンパイルは、当然、OSの管理下で行われるのだから、CRTRPGPGMも当然OSの管理下なわけで、広い立場から見ると、コンパイルでジョブ環境の情報を使うのは、特殊な言語なのですね。OS400が無ければ、RPG400は存在し得ないわけです。今までAS/400中心、RPG中心の自分が、初めて、異端の存在であることに気が付きました。かなり特殊な環境でプログラムを作成していたんですね。そう考えてみると、RPGのプログラマーは、必ず、実行管理には習熟していないと、だめですね。それから、CLP+RPGというのが、まあ、基本だとすると、Javaは、両方含んでいるらしい言語とも言えますね。よく考えてみれば、そりゃそうですよね。

例えば、 for instance

メソッドは、どうやら、サブルーチンと考えて良いようです。このように割り切ると、先に進みやすいです。しかしながら、未だにあーなのかな、こーなのかな、と概念の理解に手間取っているのが、INSTANCE。これは、「例」「実例」「事実」「場合」「段階」「訴訟」って、いろいろ意味が有るんですが、、Javaにも出てきます。命令文だと、newなんですけど、実は、よく分からなくて、どうやら、事前定義の事のようです。サブシステム記述があって、それを指定してSTRSBSをすると、活動し始めるのは、記述ではなくて、それを元にしたシステムジョブですよね。どうも、何かしら、どっかそれと似ていて、プログラム関係の中身を、「抽象」と「具体」とに分けるとすると、「インスタンス化」というのは、「具体化」ということの様です。フィールドにデータが有る場合、「フィールド」は抽象的な存在で、「データ」が具体的なものらしいです。抽象的なものを、「たとえば、何々」と具体的に例証していくのではないだろうか。だから、instanceという言葉を選んだような気がします。

はあ、できあがるのは、結局同じプログラムだというのに、まあ、どうしてこーも、違うのでしょう。きっと、概念自体に、何かメリット(そう考えるとによって、なにかしらの解決手段になる)が有るのだと思いますが、それがなんなのか、まで至っていません。Javaプログラムのコンパイラのロジックを教えて貰った方が、良いような気がするけれど、そんな本、見つからないし...exoticって言うのは、言い得て妙です。

以上

2000-2-4


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

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

 

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