JJ:ジャンのジャバ学習日誌

私のJava学習の記録です。ジャバ学習日記からジャバ学習日誌に名称を変更しました。

末広ページへ このコーナの目次最新のJJ日誌


☆ 99年1月26日(火)

 最近は,岐阜大学工学部応用精密化学・生命工学科の授業のために,JavaScriptを勉強しています。JavaScriptで,ブラウザをかなり制御できるのに驚いています。

 昨日は,月刊雑誌『Java World』1999/3 号を購入しました。特集は,Webアプリケーション・サーバ先鋭研究です。吉川和己さんが中心に執筆されています。


☆ 98年6月18日(木)

 岐阜大でのJavaの授業もかなり進んで,私のJavaの理解も深まりました。インターフェースも前はよく分かりませんでしたが,やっと分かるようになりました。インターフェースという英語の意味に振る舞わされていた感じです。抽象クラスから,さらに具体的な記述(実装)を取り除いたものがインターフェースでした。残ったものは,そのクラス(インタフェース)が持つべきメソッドすなわち,受け付けるメッセージの宣言だけです。そのメッセージの書式を決めるものという意味でインターフェースという特殊クラスを想定したのだと理解しました。

 このインターフェースによって,Modula-2が実現した,定義モジュールと実現モジュールの分割を可能にしています。

 インターフェースの理解ができたら,JDK1.1からのイベントモデルも芋ずる式に分かったような気がします。

 昨日名古屋に出たついでに,Java関係の書籍を購入した。

 『愛と青春のJavaプログラミング〜初めてのJava奮闘記〜』掌田津那乃 著,毎日コミュニケーション発行,3500円
 『SwingにやるJavaGUIプログラミング』大村忠史著,98/06/10,カットシステム発行,3600円
 『Javaで作るインターネットアプリケーション』John Rodley著,岩谷宏 訳,96/11/01,ソフトバンク発行,3900円
 『Java API アプリケーション・プログラミング・インターフェース Vol 1 コア・パッケージ』James gosling, Frank Yellin, The Java Team,村上雅章 訳,96/12/04,アジソンウェスレイ発行,5000円

Javaの本ではありませんが,オブジェクト指向関係で,次の本を購入しました。

 『オブジェクト指向における再利用のためのデザインパターン』Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides著,本位田真一・吉田和樹監訳,95/10/16,ソフトバンク発行,4500円

 本日,雑誌『C Magazine7月号』購入しました。

☆ 98年5月30日(土)

 『月刊ジャバワールド』7月号を最近購入し,すでに一通り目を通した。特集で,「Javaはこんなに速くなる!」である。遅い遅いと言われているJavaであるが,年内に登場すると言われているHotSpotの話である。

 私がかってオブジェクト指向の次にくるべきものは何かと考えたとき,「覚醒型」「成長型」「修行型」というコンセプトがやってくるであろうと予想した。

 実行時に動作が決定すること,実行しながら自分自身で自分を最適化すること,実行中に使用者にレポートを提出すること,などである。HotSpotの解説を読んでいると,私がかって考えたいたことが実現してきたなと感じた。HotSoptは,Java実行時に実行しているプログラムを分析してネック(ホットスポット)を見つけてそこを,最適コンパイルし直して,ネイティブコードにするという技術である。

 構造化○○と言うのは,事前に分析し,階層化し,部品化していく発想であった。次のオブジェクト指向は,部品かされたもの同士がメッセージをやりとりしながら動作していく考えである。「覚醒型」は,さらにそれを越え,実行時に自分自体の最適化をしていく考えである。CやFortranの世界では,実行に先立って事前にコンパイルして最適化されたオブジェクトプログラムを用意していく。それは,できるだけ準備しておけばそれなりにいいという考えに従っている。確かに最適化は可能である。「覚醒型」では,事前分析より実行時分析が重要と考える。システムに自分自身を成長させるロジックを組み込む訳である。

 Newの謎が解けたような気がする。学習日記2月ごろの謎である。

 1 配列と文字列と New

 まず,配列と文字列のNewをつけるかつけないかのいい加減さは,これは,言語仕様決定時に,基本型と参照型の中間として配列と文字列をおいたところにあると判断した。整数などの変数は,厳密にオブジェクト指向化すると,整数クラスのインスタンスと捕らえることができる。しかし,頻繁に登場する整数をクラスやインスタンスとするもの面倒である。配列,文字列も普通の変数と同じようにしてもいいのだが,メモリ上に広い場所を占領するので,参照型にする。インスタンスは参照型として定義されているので,配列,文字列は,基本型でもあるし参照型でもあるようになってしまったのが真相であろう。

整数

文字列

配列

Color(一般的なクラスの代表)

基本型or参照型

基本型

参照型

参照型

参照型

宣言

int a;

String a;

int[] a;

Color a;

初期値付宣言

int a = 3;

Stirig a = "abc";

int[] a = new int[2];

あるいは
int[] a = {5,3};

Color a = new Color(255);

備考

 

Stringはクラス

 

Colorはクラス

 

 2 クラス定義のときの New

 インスタンスを生成するときにNewをする必要がある。なのにクラス定義のソースをみるとNewがないものがある。例えば,岐阜大学のJavaの授業に使用している教科書のプログラム

//教科書 100ページ List7.2 ColoredCircle.java
import java.awt.*;
class ColoredCircle extends Circle3 {
private Color c;

//コンストラクタ(構築子)その1 X,Y座標指定
public ColoredCircle (int vx, int vy, int vr, Color vc){
super (vx, vy, vr); //親クラスのコンストラクタ(構築子)呼出し
c = vc;
}

(省略)

}

ここで,private Color c;と定義されているが,newがこのクラス定義ではない。このクラスを利用するプログラムは次の通りである。

// 教科書 104ページ List7.3 ColoredCircleTest.java
import java.applet.Applet;
import java.awt.*;

public class ColoredCircleTest extends Applet {
  public void paint(Graphics g){
  //3つの円を緑,青,赤で生成
  ColoredCircle a = new ColoredCircle(50,50,10,Color.green);
  ColoredCircle b = new ColoredCircle(50,50,20,Color.blue);
  ColoredCircle c = new ColoredCircle(50,50,30,Color.red);
  //3つの円を表示
  a.draw(g);
  b.draw(g);
  c.draw(g);
  }
}

 ここにもColorのインスタンスに関してnewがない。

考えて分かったことであるが,まず,List7.2で,private Color c;で,参照型変数(インスタンス)の c を使用すること,その参照先は,色クラスのインスタンス(実現値)であると宣言した。

public ColoredCircle (int vx, int vy, int vr, Color vc)のColor vcのところで,このメッソドが呼ばれるときは,Colorクラスのインスタンスを参照するvcが引き渡されることが分かる。

で,ここで,このメッソドを呼び出すところをみると,List7.3で,

ColoredCircle a = new ColoredCircle(50,50,10,Color.green);がそうである。

このColor.greenが参照しているところが結局渡されることになる。ではこのColor.greenは一体何か。これは,Colorクラスで定義されている。それを見ると,public final static Color greenとある。実は,public(外から使われる) final(最終的な,値が代わらない,定数)のstatic(静的な,クラス定義時にすでにインスタンスとして使用できる)と定義されている。

 「クラス定義のときのnew」は,できるだけせずに,使用にあたって必要なときだけ,必要になったときにすればいいことが分かる。もし,最初のprivate Color c; のところでnewすれば,c=vcが実行された段階で,無駄になることになる。

 newの謎は,staticの謎と同じ根っこであった。

☆ 98年5月23日(土)

 JASプロジェクトの第1回目のレビューを木曜日に実施した。
サンプルとして
 jas0001 ハロージャバ
 jas0002 HTMLなしアプレット
 jas0003 line
 jas0004 文字
 jas0005 乱数
 jas0006 数学関係

を仮決めした。浅野くんはアプレット関係,稲川くんは色関係,私はアプリケーション関係と分業してサンプル担当するとこにした。

次回はさらにこれのレビュと,jas0007からいくつかを追加する

 職場のJava学習会を金曜日に実施した。前回が中止になっているので,第5章参照型,第6章クラス定義を勉強した。他にC言語とかの知識があればなんとか理解できるが,ないと難しい内容である。

 岐阜大学の授業は,この教科書に従って進めて,難しいところを飛ばして行う方針でいくつもりである。300ステップ以上のJavaアプレットを作成したあとで,教科書を読めば理解できるであろう。

 第6章の岐阜大学での授業では,83ページの例題の解説から始める予定である。例題のスタッククラスは触れない,課題は

 第6章の難しい要因

 コンストラクタがクラス名と一致していること

 スコープの概念が必要

 インスタンスの中にメッソドがあること

☆ 98年5月18日(月)

 JASプロジェクトの第1回目のレビューが延期している。今度の木曜に実施する予定です。

 最近購入した本・雑誌は次の通りである。

『Java動くホームページ』青柳龍也著,工学図書,1700円
『これならできるJavaプログラム入門 Javaによる問題解決手法』小高知宏著,森北出版,1900円
『図解 Java流オブジェクト指向入門』Yoo Hong Jun著,技術評論社,1880円

雑誌で
 『ドクター・ドブス・ジャーナル日本語版』6月号
 『C Magazine』6月号

書籍案内で2つのリンク先を見つけた。

 ディジタルキャットのJava関連書籍
 安藤氏FAQのお奨めJava本

☆ 98年5月10日(日)

 昨日は浅野君とJASプロジェクトの運営について話す。基本的な考えを岐阜市で行う専門学校のフェアで発表する予定である。今度の水曜に第1回目のサンプル昇格レビュをする予定である。

 ある機能を実現するときに,継承で実現するか,メッセージで実現するかで,メッセージで表現するほうが,従来型の手続き型言語に近い。教科書では,インスタンスを作成するためのクラスの説明が先である。継承のためのクラスというのは後で説明される。

 そういえば,VBも,基本はインスタンスの生成である。クラスの継承は後回しであった。フォームに,コントロールを貼るのは,インスタンスを生成していることである。

 先日読んだ,『イントラネット』6月号の記事「ソフトウエア開発の現場でオブジェクト指向を考える」に,オブジェクト指向が難しいと言われるのは,教える教師側(教科書など)の質に問題もあるという指摘もあった。著者の考えとは,別の意味で,私も最近感じている。いい加減に「世界をものとして認識する」レベル的な説明から脱却しなくてはいけない。

 それにしても勉強不足である。もっとJavaに時間を割く必要がある。本日はスレッドとイベントモデルのサンプルを作成したが公開までは当分いけそうもない。もっと簡単なサンプルから公開していくつもりある。

☆ 98年5月7日(木)

 明日は,職場でJavaの勉強会,岐阜大学の予行練習を兼ねている。今回のテーマは,『クラスと継承』である。差分プログラムの観点から,継承の価値を説明するつもりである。教科書の第6章,第7章である。コンストラクタは,『インスタンス』のときに少し触れる予定で,今回は飛ばす。さらに,アクセス制御は『スコープ』の観点から説明する予定で飛ばす。岐阜大学の実習室(UNIX端末)では,バグのためアプレットが動作しなくなっている。サンプルにアプレットが使用できないのは痛い。

☆ 98年5月5日(火)

 最近購入した雑誌,書籍は次ぎの通りである。

 『Javaプログラミング1001Tips』Muark C.Chan他著,舟木将彦訳,オーム社,5000円
 『JAVA プログラミング クィックリファレンス』David Flanagam著,小俣裕一監訳,オライリー・ジャパン発行,4300円
 『イントラネット』6月号,ソフトバンク発行,980円

 サンプルプログラムとして,HTML無しでアプレットを表示するアプリケーションを作成した。
以下にxMFrame.javaのソースを載せます。(段つけが無くなっていますね。)

xMFrame.javaの中身

/* サンプルの目的
 アプレットをHTMLの記述なしで実行させる
*/

/* 注意
終了するときは,起動したコマンドラインから,CTL+Cで終了すること
*/

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Frame;

public class xMFrame extends Applet{
public void paint(Graphics xg) {
xg.drawString("HTMLなしで表示。終了は注意",100, 50);
}

/* 以下のmainメソッドをアプレットに追加して記述する。以下の点を修正すること
   1 生成するインスタンスのクラス名は,このクラス名
   2 アプレットのサイズ
 HTML無しアプレット表示 Ver1.02
*/

public static void main(String[] xargs){
/* 1 このプログラムのクラス名に変更 */
xMFrame xiAp = new xMFrame(); //アプレットのインスタンス生成
Frame xiFr = new java.awt.Frame("x無題");
//フレームのインスタンス生成

/* 2 アプレットのサイズを合わせる */

xiFr.setSize(500,150);
xiFr.add(xiAp);
xiFr.show();
}

}

☆ 98年4月26日(日)

 久しぶりのジャバ学習日記である。先週の日曜は情報処理技術者試験でそちらのホローのため,Java関係の学習はあまり進まなかった。

 最新の話題は,JKD1.1.6が公開されたことである。Win95/NT版だけだが,JITコンパイラも付属することになったそうである。岐阜大学のUNIXマシーンの環境ではJDK1.1.5とNSとの動作で安定していない。私としてまだしばらくJDK1.1.5で行くつもりある。仕事で使うならJDK1.0.2レベルで作成すべきという意見も多い。

 岐阜大学工学部応用情報学科でのJavaプログラムの授業も開始している。さらに,事前に予習をかねての日本総合ビジネス専門学校の教職員のJavaの学習会も開始している。さらに,専門学校生の浅野くんとサンプルプログラムの公開プロジェクトを開始することになった。こちらは,プロジェクトは,Javaの各種の機能のサンプルを著作権フリーで公開していこうというプロジェクトである。

 最近購入した雑誌,書籍は次の通りである。

 『C Magazine』5月号
 『Java PRESS』Vol1,技術評論社発売
 『月刊ジャバワールド』12月号(創刊号),5月号,6月号
 『ドクター・ドブス・ジャーナル日本語版』5月号
 『Javaプログラミング徹底演習』中山茂著,日刊工業新聞社,2400円

 Javaとは直接関係がないが,インターネット関係では『正しいHTMLリファレンス作法』ビジレッジセンター出版,1200円を購入した。

 最近気づいたことであるが,制御文の構文もPASCAL系とC系(Javaも含む)さらにVB,コボルと結構ちがう。それぞれほとんど違いはどうでも良いレベルだが,このどうでもいいレベルで違うというのは言語処理系は標準化が思ったより遅れているということである。標準化は遅れているが,市場を取ったら勝ちという感じである。パスカル系のオブジェクト指向言語にEifelがあるが,それを知っている人は,Javaのオブジェクト指向の取り組みはEifelがすでに吟味したレベルの序の口であるということである。Java言語仕様を決定するときにもっとEifelの勉強をしてほしかったとは複数の方のご意見であった。

 Javaの学習をするにつれて,VisualBasicのすごさを実感している。VBは天才が生みだした言語である。Javaは確かにきれいであるが,VBほどばっさりと切り捨てていない。しかし,保守性や開発の規模を考えるとJavaの方が優秀ではある。

☆ 98年3月22日(日)

 『JavaBeansプログラミング入門』坂元衛 著,オーム社 1997.11.20 2400円
を昨日購入した。

 オブジェクト指向関係で,

 『はやわかりオブジェクト指向』P.Wegner 著,尾内理紀夫 訳,共立出版 1992
 『オブジェクトモデリング表記法ガイド』 MISCOオブジェクト指向研究会 著 今野睦 監修,プレンティスホール出版,2200円
を購入

さらに,Java周辺関係で,
 雑誌の『C Magazine』4月号,『ドクター・ドブス・ジャーナル日本語版』4月号
,『インターネットを256倍使うための本 Vol2』志村拓 著,アスキー出版,1200円を購入した。

 『はやわかりオブジェクト指向』は,NIFTY SERVEのFPLで,佐野慎一さんに紹介してもらった本である。題からは,簡単に読めそうな内容と思えるが大間違いである。オブジェクト指向の主な概念の検証がされている本である。Javaを勉強する上での私の疑問点がおおく論じられていた。ある程度のソフトウエア工学の勉強した人向けの本である。現在はこの本を読んでいて,55/140まで目を通した。この後は,さらにパラパラとめくって終わりとした。また,時期をおいて読んでみようと思う。この本で,データ抽象化,スーパー抽象化はなんとなく理解できたが,メタ抽象化がよく分からなかった。

読みかけの本は
 『最新オブジェクト指向技術応用実践』は,250ページ
 『一歩先を行くインターネット Java入門』は,72ページ

最近,気がついたこと

 Javaでは,定数がない。定数は,変数の一種と定義されている。変数を定義するときにfinalを付けることによって宣言する。

 例えば

 int a; は
 final int a; とすれば,定数aということになる。

なかなか便利な定義である。他の言語で,「定数」の項目の説明を見ると,「変化しない数」で取り扱いは,変数に準じるとなっている。日本語で「変数」と「定数」は,対立的な面が強調される。また,英語のvariable(変数)とconst(定数)も対立した言い方です。ジャバの文法書は,定数という項目はない。例:フォントの色の白

☆ 98年3月14日(土)

 筏井女史に薦めて頂いた3冊の本を購入した。さすがに筏井さんである,どの本も最初の10ページほど読んだだけだが,私には分かり易く大変おもしろい。感謝。

 昨日は,ソフトウエア技術者協会の名古屋支部のセミナでブラザーの西原さんから,Javaを使用して開発したプリンタシステムの講義を受けた。大型プリンタを制御するシステムで,エンドユーザーから印刷出力指示をイントラネットで構築している。そこのユーザーインターフェース部分をWebで構築している。そこにジャバを使用したそうである。ジャバを使用して,クライアント側にメモリがかなり必要になること,スピードに難があること,また,日本語を使用するためのコード変換がソースのそこらじゅうに埋め込む必要があったこと,開発はVisual J++を使用したこと(サポートがよくなかったとのこと),クライアントの各機種ごとに動作が違うので苦労したことを聞くことができた。

 『最新オブジェクト指向技術応用実践』を現在(250/335)読んでいる。ソースコードを飛ばして読んでいる。クラスの図式の仕方など,今まであやふやだったのが良く分かった。

 本は,すでに数冊読んだが,実際のJavaプログラミングの経験がほとんどない。岐阜大学で使用する教科書も決めたので,その本のサンプルを入力して動かしてみようと思う。

☆ 98年3月7日(土)

 最近日記,更新をしていませんでした。しかし,その間に読んだり,購入した雑誌・本は以下の通りです。

『Javaによるオブジェクト指向プログラム入門』培風館 越田一郎著 1800円。岐阜大学の授業の教科書に決定した。

『JavaScript&Javaプログラミング』インプレス Tim Ritchey著 石川和也訳を購入した。岐阜大学での授業では,JavaScriptでJavaになれて,それから,Javaに進めるつもりであった。そのため参考のために購入した。いい教科書が見つからないため,JavaScriptからJavaに教えていくいい教科書が見あたらないため方針を変更した。言語はJavaだけに絞ることにした。JDK1.1対応で授業をするつもりである。

『最新オブジェクト指向技術応用実践』AI出版,萩本順三 他 3800円 まだ,まったく読んでいない。

 雑誌『月刊ジャバワールド』4月号を読み終える。特集はJDK1.2β2の話。

 先日ソフトウエア技術者協会の名古屋支部に顔を出したときに,筏井女史に,Java関係の書籍を3冊薦められた。

『一歩先を行くインターネット Java入門』SE 有我成城著 2800円
『Javaパワープログラミング』ソフトバンク Paul Tyma他著 吉川明広著 5900円
『Javaプログラムデザイン』ソフトバンク 戸松豊和 2500円

3冊とも現物をちらりと見せていただいた。いい本のような気がした。

 

☆ 98年2月15日(日)

 ジャバの用語の整理をジャバ辞典と名称を変更した。Java言語と他の言語比較を始めた。比較対照する言語は,Java,JavaScriptを中心にVBScript,SQLと行うつもりである。

☆ 98年2月10日(火)

 中山茂著『HotJava入門』を読み終える。今日は,本屋で,Cマガジン3月号とVisualBasicマガジン3月号(ホームページは2月号のままですが)を購入した。Cマガジンの方は,3本ほど連載がJava関係の記事のようである。きださんの書かれた「Javaプログラムレファレンス」が読みたくて購入した。VBマガジンの方は,専門学校の授業で,来期も担当しそうなので,勉強しておこうと思い購入した。先日のJavaマガジンを端から端まで読むやり方をVBマガジンの様にも適用してみるつもりだ。

 Javaの学習をしてきて,VBはよくできていると思った。コンポーネット(VB用語ではコントロール)を使うと限定して,難しいところをばさっと捨ているところは見事である。オブジェクト指向のサブセットとして,VBをみると,切り分けは見事である。天才の作品と思う。VBの欠点は用語の乱れですね。

☆ 98年2月9日(月)

 河西朝雄著『Java入門』は,GUI部分になったので,ちょっと休憩して,中山茂著『HotJava入門』を読み始める。この本は,Javaが話題になって,一番に出版された本だったと思う。今日,読んでびっくりした。言語仕様に対して,かなりつっこんで書いてある。急いで出したと思えない内容である。また,誤植は,単純なミスを一カ所見つけたが,言語の解説,ソースなどでは見つけていない。いろいろな用語を日本語で表現しようとしているところも,このページと同じ方針なので,うれしかった。一気に190ページまで読んだ。この本は,Javaの発表当時の熱気と,文法への調査で読む価値がある本であった。

 メモしたことは

 クラスからインスタンスが作れる。インスタンスからインスタンスへメッセージが走る。(メッセージの届く先は,インスタンスであることを認識した。すっきりした)

 区切り子(セパレータ),構築子(コンストラクタ),直定数(リテラル)

 finalが使われる理由は,コンパイラにいろいろ最適化を行わせるためである。

 インスタンス変数とローカル変数の対比

 オーバーライドとオーバーロードの対比

 数字を使う時は,整数は,int型,実数は,double型が一番良さそう。

☆ 98年2月8日(日)

 河西朝雄著『Java入門』を読み始める。本日は,102ページまで目を通す。入門書をいくつか読んで,だいたい感覚がつかめてきた感じがする。河西さんは,工業高校の先生をされているせいか,文ばわかりやすい。この本は,平成8年12月に最初に出版され,私が購入した本は,第4刷目であるが,誤植がいくつか目に付いた。著者のホームページがあるので,後で見てくることにする。

今日,メモしたこと。

 Imageクラスから作成したインスタンスは,newなしで使用できるようである。newを必要とするインスタンスと必要としないインスタンスがある。これらの区別はなんであろうか。

 メソッドの引数は,インスタンスも可能のようである。

 g.drawString("Hello Java", 50, 20*i);
は,インスタンスgに,メッセージとして,drawString("Hello Java", 50, 20*1)を送ると捕らえることができるのであろうか。

 importとでは,他のパッケージからクラスを使用できるようにする予約語であるが,変数などのimportできるのであろうか。

 インターフェースという特殊なクラスがある。それは,メソッドのインターフェースを定義するためのクラスである。これがなぜ多重継承の代わりになるのであろうか。

 クラスから横にでるのが,インスタンスで,縦に出るのが継承を表して,サブクラスと見たらどうであろうか。

 importの役割と,継承の役割の区別が付かない。あるものを定義するときに,importしたクラスを使用するのか,それとも継承で差分を書くのか。

 プログラムはクラスとして定義される。コンパイルした後のバイトコードは,拡張子はclassである。実際に実行するプロセスは,このバイトコードである拡張子classのファイルのインスタンスと捕らえているのか。

☆ 98年2月7日(土)

 『JDKだけでここまでできるJavaプログラミング入門』を一通り,読み終える。この本を読みながら,用語を『Java言語ハンドブック』で確認すると,アダプタークラス,イベントリスナーなどの用語がいくつかある。

 変数とインスタンスは,それぞれ,変数型から変数が定義される,クラスからインスタンスが定義されると似ている。定義の表記法は

 int a;
 String b;

と同じである。これだけ見ると,a,bはそろぞれint型,String型の変数の様である。これは,Stringがクラスであると知っていなけれあば,bはインスタンス名とは気づかない。

この変数,インスタンスを使用するときは,

 a = 3;
 b = new String();
 b = "abc";

とインスタンスの方は,newで一度,インスタンスを実際に生成しなくてはいけない。変数の方は,int a;でaが生成されている。ここまで来ると,Stringはクラスなので,newが必要であると意識できる。

 これで終われば,すっきりするが,Stringクラスは,なんと特別なクラスでこのnewを省略できるのである。だから,省略したときは,a, bは,変数としてともに変数として見える。

変数のうち,配列もnewを使用して生成する必要がある。宣言だけでは使用できなく,このように宣言のあとに,newを使用して,生成するものを参照型の型という。

 

 ここで,最初の

 int a;
 String b;

から,

 型名 変数名;

という書式で,変数名が宣言できると言える。これで宣言された変数を使用にあたって,newを付けるものと付けないものがある。付けないものを基本データ型,付けるものを参照型というので,

 参照型の一つとして,配列と同じ仲間としてクラスがあると言える。

 変数の中にインスタンスがあるのか,インスタンスのうち,一番,粒が小さいものを変数というのか,それとも変数=インスタンスなのか,どうであろうか?

 私としては,変数の中に,構造を持たない単純なものと,構造を持つ複雑なものがあり,構造を持つ複雑なものは,さらに,子供の変数を持つとして捕らえていくことにする。前者は,整数とか,実数なのど変数,後者は,配列とクラスから作る変数(インスタンス)する。よって,インスタンスとは,変数の一種で,クラスから作られた変数を指すということにする。

☆ 98年2月3日(月)

 雑誌『月刊ジャバワールド』3月号を読み終える。疑問点を書き込みながら読んだ。分からないことが多いが,また,後で,読めばその書き込みの疑問を見て,どれだけ答えれるようになっているか楽しみである。特殊のJavaCardの話が勉強になったのと,ゲームのキャラクタの動きにスレッドを利用するという記事がおもしろかった。

 次は,『JDKだけでここまでできるJavaプログラミング入門』を読む予定である。

 NIFTYのFPLで質問したteiadaの件は,クラスのソースなどを参照するのにいいツールというコメントを付けてもらえた。エディターになれるのが一番という回答でもあった。teikadaの導入はしばらく見合わせることにする。最低一日一プログラムの入力をしてみる。

☆ 98年2月3日(月)

 雑誌『月刊ジャバワールド』3月号を読み終える。疑問点を書き込みながら読んだ。分からないことが多いが,また,後で,読めばその書き込みの疑問を見て,どれだけ答えれるようになっているか楽しみである。特殊のJavaCardの話が勉強になったのと,ゲームのキャラクタの動きにスレッドを利用するという記事がおもしろかった。

 次は,『JDKだけでここまでできるJavaプログラミング入門』を読む予定である。

 NIFTYのFPLで質問したteiadaの件は,クラスのソースなどを参照するのにいいツールというコメントを付けてもらえた。エディターになれるのが一番という回答でもあった。teikadaの導入はしばらく見合わせることにする。最低一日一プログラムの入力をしてみる。

☆ 98年2月2日(月)

 PFUが方が開発されて無料で配布してくれているteikadaがある。Java開発ツールということなので,コンパイル,実行がスムーズに行えるかもしれない。また,全然そんな目的のツールでなくて,クラスの継承関係をブラウズするツールかもしれない。NIFTYのFPLで質問をしてきた。

 昨日,アメリカIBMより,国際宅急便(?)のUPSで,書類が届いた。きっと,IBMのホームページでメーリングリストの登録をしたせいであろう。英語がよく分からないのでまだ読んでいない。IBMは,ただでいろいろくれるので,これもそうかもしれない。この書類,記入して送れと書いてあるところがあるので,きちんと読まなくては。

 なにかもらえるかもしれない。昔は,OS/2のβ版をよくもらった。ノートパソコンももらった(^^);

 ところで,このteikadaの開発は,ソフトウエア技術者協会理事の熊谷さんの仕事場の隣の部署ではないだろうか?

☆ 98年2月1日(日)

 今朝,自宅で,JDK1.1.5関係をダウンロードした。

内容

ファイル名

容量

ダウンロード先

JDK1.1.5本体インストールプログラム(英語版)

jdk115-win32(1).exe

9.5Mバイト

http://java.sun.com/products/jdk/1.1/

このページの中央の

1. Download JDK 1.1.5 software

のところで,Win95用を選択してcontinue

JDK1.1.1メッセージ日本語化モジュール

jdk1_1_1-win32-x86-ja(1).exe

135kバイト

http://java.sun.com/products/jdk/1.1.1/ja/index.ja.html
(2001/01/08 現在リンク切れ)

このページの

1. DJDK1.1.1 Japanese Supplementoのダウンロード

のところで,Win95用を選択して「ソフトウエアのダウンロード」ボタンをクリック

そこのホームページの説明にはJDK1.1.4用と書いてあるが無視。

日本語ドキュメント

jdk1_1_1-docs-ja(1).zip

2Mバイト

http://java.sun.com/products/jdk/1.1.1/ja/index.ja.html

このページの

2. DJDK1.1.1 日本語 HTML ドキュメント

のところで,Win95用を選択して「ドキュメントのダウンロード」ボタンをクリック

 

 ダウンロード(288モデム)は朝7時半ぐらいからはじめ,8時半にはすべて終了していた。

先ず,JDK本体を適当なところで,起動するとインストール先のフォルダを聞いてくるので,適当に決める。私の場合は,e:\j115とした。そのe:\j115に,JDK1.1.1メッセージ日本語モジュールを入れて,そこで起動(解凍)する。さらに,日本語ドキュメントは,好きなところ(私はe:\j115内)で,圧縮を戻す。

Java学習用のワークフォルダとして,e\jwork2を作る。コマンドコムのショートカットを作成し,

プログラムの設定を
 コマンドライン C:\WINDOWS\COMMAND.COM
 作業ディレクトリ e:\jwork2
 バッチファイル jstart
とした。

 さらに,jstart.batを作成して,e:\jwork2に入れた。

jstart.batの中は,
 PATH=e:\j115\bin;%path%
 doskey

 現在,コンパイルエラーメッセージなど日本語で表示されるようになった。また,APIの説明を日本語見ることができる。日本語ドキュメントの見る環境は,HTML化されているため,IEか,NSである。IE3.02だと,readmeなどは,表示するアプリケーションを尋ねてきて,面倒であるが,NS4.0だと正常に表示できた。

☆ 98年1月31日(土)

 『JDKだけでここまでできるJavaプログラミング入門』伊藤弘康著,エーアイ出版,2800円を購入する。JDK1.1に対応しているのと,JDKだけでGUIまで触れていたので購入した。コンパイルエラーメッセージの日本語化についても書いてあった。JDK1.1から,CDにそれが入った書籍はあまり見あたらない。インターネットからダウンロードをするさいに顧客情報,開発者の情報をとるためであろうか? 10Mバイトを越えるJDKは,雑誌の付録で配布してほしいものである。この本は,サンプルソースのみをFDにつけて販売している。FDの付録とCDの付録ではコストはどちらが高いのであろうか。

☆ 98年1月28日(水)

 今日,朝のJR岐阜駅のホームで,定義と動作,クラスとインスタンス,クラスとメソッドと変数の関係を考えていた。神様がアダムとイブを作ったのではなく,神様が作ったのは,男クラスと女クラス(女クラスは男クラスを継承)で,さらにそのインスタンスとしてアダムとイブを作ったと言える。よくオブジェクト指向の解説の初めに世の中はオブジェクトでできているので,オブジェクトを中心として考えていくと都合がいいといった記述ではじめるものが多い。しかし,オブジェクト指向は,世界をまず,クラスとして取られているなど,かなり現実的とはいえないのではないだろうかと思った。Javaの解説など見ると,ほとんどクラスの説明をしている,しかし,インスタンスの方がより本質ではないだろうか?

 アダムとイブの存在が,男クラス,女クラスの概念より重要と思う。男クラス,女クラスは後から生まれる概念ではないだろうか?

 クラスよりインスタンスの方が先であろうというのが今日の結論であった。クラスからインスタンスを作るのではなく,インスタンスを効率よくつくるためにクラスがあると言える。

 構造化の発想は,先ず全体があり,それを細分化,体系化していくことであったと思う。オブジェクト指向は,むしろ,最終的に細分化された部品自体に焦点をあてたと思う。

 雑誌『月刊ジャバワールド』3月号を最初のページから,順に読んでいる。読んだ記事は,特集「スマートカード&JavaCardの正しい見方,とらえ方」(勉強になった),「総点検! Java対応開発ツール徹底比較」(面白かったが,徹底は言い過ぎ),後は連載記事など,全体の2/3ほど読む。雑誌の記事は,JDK1.1が前提のようである。また,具体的な例が設定されていず,構造の説明を書いているものは,こちらの知識不足で,記事が読み切れていない。記事の中のところどころに「デザインパターンが使われている」といった記述がある。何か違和感がある。「デザインパターン」が偉そうに一人歩きをしている感じである。この項目もJJ(ここ)で扱いたい。

 プログラミングに特化した雑誌を最初のページから順に読むという方法もいいものであることを発見した。VisualBasicマガジンなども読んで見たくなった。

 JavaCardなど,用語もいろいろ出て来たので,用語の整理に追加したい。FAQのコーナでは,コーディング・スタイルについて書いてあった。いずれ,JJ(ここ)でもきちんと扱う項目である。

 本屋でCマガジンをチラリとみた。Javaについて書いて見えた,きださんの連載が読みたい記事であった。

☆ 98年1月25日(日)

 詰めジャバエラーメッセージ解説のコーナーを新設した。

 雑誌『月刊ジャバワールド』3月号を購入した。付録のCD-ROMにViusalAge for Javaの日本語β版が入っていた。GUIでの開発は当然である。しかもJDK1.1対応である。しかし,しばらくは,JDK1.0.2を使用して文法自体を勉強しようと思う。理由は,小さな見通しのいい環境でじっくり勉強するためである。

☆ 98年1月24日(土)

『Java言語ハンドブック』を一通り,目を通す。自宅のパソコンにJDK1.0.2を導入した。用語の整理にJDKのバージョンを整理する。

☆ 98年1月21日(水)

 昨日,『Java言語ハンドブック』池田誠著,ナツメ社,97,5.14,1700円を購入した。誤植が目に付くが,分かり易く勉強になっている。文法に特化した用語集である。383ページ中146ページまで目を通した。

 『Java使いの友』を第3章113ページまで読む。抽象クラス,インターフェースあたりで,本だけでは少し理解が困難な状況になっていたが,『Java言語ハンドブック』の該当するところ読んでなんとか,理解をした。

☆ 98年1月20日(火)

 Javaのメーリングリスト,2つに加入をする。NIFTYSERVEのFPL(プログラム言語フォーラム)のJava会議室をまた読むことにした。2年前に一度発言をしている。2年間,勉強を後回しにしていた。あの会議室が開かれる前に,きださん(シスオペ)にJavaをどう思うかとたぶん当時のフリートーク会議室でたずねたことがある。

 今日の疑問は,抽象クラス,インターフェースである。

☆ 98年1月18日(日)

 休みの日はじっくりと本を読むような勉強は難しい。最近の私の本読みはほとんどファーストフード店でコーヒーを飲みながらである。

 Eiffelの本『オブジェクト指向入門』BERTRAND MEYER著,酒匂ご夫妻訳,アスキー出版,90.11.21 4980円 を確認したら,クラスから作られるのがオブジェクトとなっていた。いたるところで,「クラスは型であり,オブジェクトは型のインスタンスである」という記述がある。

 『JavaScript』上田学著では,そこらじゅうで,「このメソッドを持つオブジェクト」書いており,クラスをオブジェクトとして表現している。JavaScriptではそうであるのであろうか?(たぶんこの著者の見解でしょう)

 私の従来からの習慣で,オブジェクト指向を語るときは,オブジェクトという用語は使用しないを方針とすることにする。

☆ 98年1月16日(金)

 本屋で『Java使いの友』ソフトバンク刊,武田圭史著,97.2.1,2575円を購入した。『Java使いへの道』の続編の感じの名前が付いているが,内容は単独の内容である。前著より,詳しく,サンプルも豊富になっている。前著の約,倍の分量である。今日は,86ページまで読む。

 「クラスから作成されるのがインスタンスである」が普通に言い方と思うが,どうもJava関係の本の中では,「クラスから作成されるのをオブジェクト」と言っているようである。インスタンスという用語は,インスタンス変数に限定して使用している。「クラスからオブジェクトが作成」され,「オブジェクトはインスタンスとメソッドを持つ」と言った言い回しが随所に現れる。

 個人的には,オブジェクト指向の中では,「オブジェクト」という用語は使用しない方がいいと思って来た。Java風に言うべきであろうか。また,メッソドはJavaの記述をみる限り,関数と言っても問題がない。「新しい概念は新しい用語で語る」より,「新しい概念はできるだけ古い用語で語る」を信条としているので,これからどうしようか考えるところである。

 また,サンプルソフトを見ていると,Javaの予約語とオブジェクト名(私風にいうとインスタンス名)の区別が曖昧である。一見して区別ができる方がありがたい。

 『Java狂想曲』でも指摘されていたが,staticがどうもくせ者である。理解できていない。プログラムをクラスという単位で捕らえているが,コンパイルは,クラス単位でなく,パッケージ(クラスの集合)がコンパイル単位のようである。

☆ 98年1月15日(木)

 『Java狂想曲』技術評論社刊,吉田弘一郎著,96.9.5発行を読み直す。これも発売とほぼ同時に購入していた。そのとき,一通り読んでいる。今日は,66ページまで読み直す。C++を例にして,説明したあるので,私には,解読は少し難しい。Eiffelの言語とJavaが似ている著者の主張である。私自身の言語の習得は,最初はBASICそして,UCSD-PASCAL,それからオフコンの仕事でRPG,趣味でMODULA-2,Eiffelである。CとCOBOLはほんの少し。C++はほとんど知らない。Javaは,UCSD-PASCALの子供とも言えるとも書いてあった。オブジェクト指向に対して理解がほとんど無いころ,3日間ほど缶詰でSmalltalkを教えていただいたが,ちんぷんかんぶんであった。今なら身につくと思う。

 残念ながらEiffleは,紙の上でしか勉強していない。しかし,お陰でオブジェクト指向言語の感がつかめたことを覚えている。本を読みながらだんだんと興奮してきた。

 本屋で,『Java入門』技術評論社,河西朝雄,96.12.5発行を購入した。

☆ 98年1月14日(水)

 仕事の帰り,モスバーガーでコーヒーを飲みながら,『Java使いへの道』を読み切った。小説ではないので,読めばいいと言うわけではない。サンプルソフトを動作させながら復習をする予定である。

 また,時間を見つけてJava関係の本だけは読むことにする。

☆ 98年1月13日(火)

 『Java使いへの道』ソフトバンク刊,武田圭史著の著者より,サンプルプログラムをここで公開してよいと許可をもらう。今日は,本は進まず,65ページまで読む,用語集の方を少し更新する。

☆ 98年1月12日(月)

 2年ほど前に購入した『Java使いへの道』を読み始める。57ページで1/3位。ある程度オブジェクト指向のことを勉強したことがある人なら,分かり易い本なので,どんどん進んでいる。

 Javaをマスタした人を,ジャパッチ,もしくは,ジャバラーと呼ぼう。前者が若者,後者は老人向けとする。

☆ 98年1月11日(日)

 Javaは,環境,ツールがたくさんあって何が何を指しているのかよくわからない。整理することにする。まず,正式な名称と商品名の区別,それが何を指しているのか一覧(用語集)を作成しょうと思う。

☆ 98年1月9日(金)

 お昼休みに,本屋で雑誌『イントラネット』2月号を購入した。第2特集で,IBMサンフランシスコプロジェクトが組まれていた。私の知らないところで,すでにこうったことが始まっていたのだ。あと,雑誌『ジャバワールド』を購入した。

☆ 98年1月8日(木)

 前の職場のテスクに遊びにいったら,開発はJavaを想定してのアクションがあってびっくりした。テスクは,RPGが主力の会社であるので,そこまでJavaが普及しているとは想像をしていなかった。CASEツールでリポジトリを作成してそこでRPGを作成するのは,予想通りで当たりまえで,プログラムの配信をインターネットを使用すると聞いて,そこまで考えているかと関心して,Javaの発想だねといったら,ツールの準備が出来次第,RPGからJavaにすると言われてびっくりである。

IBMサンフランシスコプロジェクトの話を聞いてまた,びっくりである。

 テスクに行く前に,大須で『JAVA API Reference』 Colin Fraizer,Jill Bond著を購入した。APIの英語の綴り確認用である。

☆ 97年12月○日

 ソフトウエア技術者協会(名古屋)の忘年会の席でJavaはどれくらい普及するかと回りに聞いたところ,うちはプリンタドライバをJavaで書いてもう出荷しているよって,言われてびっくり。私の経験では,この手の技術は耳にしてから10年位で現場でやっと実験が始まって15年位で商品化されるのが当たり前だった。C++などもそうである。Javaを耳にしたのは2年ほど前であるので,これは以上に早いスピードである。

☆ 97年9月2日

 とりあえずホームページを開設する。末広ホームページの最初も2,3行しかなかった。このJJ日記も何もないところが始まる。算数(数学)が小さい頃から得意であった。しかし、数学は若いうちが勝負という。40才を記念して、自称天才プログラマーが挑戦する。

 


 


spage@yscon.co.jp

末広ページへ このコーなの目次