2002年3月19日更新(その後のJavaプログラム例の追加)  2000年8月3日更新(目次とジャンプ,リンク集へのリンク追加)  関谷のトップページへ   作者へのメッセージ

JAVA言語の調査と能力開発セミナー

Research of Java Language and Seminar of Java

1999.3.20 情報処理科  関 谷 順 太
Zyunta Sekiya

Java言語の調査とプログラミングを4年間にわたって行い、能力開発セミナー「Java言語プログラミング」を1回実施した。

Java言語は、オブジェクト指向言語C++を改良し、マルチプラットフォーム、ネットワーク対応をしており、企業での採用,大学等での教育用にも例がある。

統計計算、対話処理、グラフィックス、ネットワーク分野のプログラミングを行った。C言語と比較して、生産性の高いプログラムが出来ることを確かめた。

目次

1.はじめに
2.KIP講演会、KIPでの勉強会
3.授業でのJavaの紹介・実習
4.Javaプログラム作成
5.能力開発セミナー
6.終わりに
参考文献, リンク

1.はじめに

JAVA言語は、サン・マイクロシステムズ社(以後はサンと呼ぶ)が1995年5月に発表して以来、著しく発展し普及している。その間の事情を北九州情報サービス振興協会(以後はKIPと呼ぶ)スクールでの3年間の勉強会、授業での一部試行、プログラム作成比較、能力開発セミナー「Java言語プログラミング」の計画と結果を報告する。

2.KIP講演会、KIPでの勉強会

1)1996年6月、KIP通常総会における(株)ゼンリンの土谷の講演「JAVAの現状と将来」の要旨は以下のとおりである。「Javaは、アメリカのサンが開発したオブジェクト指向言語であり*1),C++がベースになっているが、ポインタなどの機能は削除されている。マルチプラットフォーム、ネットワークに対応するものである。リアルタイムの情報提供やイントラネットでの利用、ネットワーク端末などが開発されようとしている。情報源として、インターネットのホームページなどがある。」

2)1996年度KIPスクールにおける「JAVA」研究会では、8月から1997年3月の発表会までに、会員7名による夜間2時間の会合が8回、西日本コンピュータ(株)の事務所でもたれた。*3)

 この会合では、各人が興味のある課題やテキストを自習し、発表した。筆者は、参考書の例題アプレット−複利計算(図1)やハノイの塔アプレットハノイの塔(図2)―について、GUI,マルチスレッド、キー割り込みなどを改造した。同行の古屋は、アナログ・デジタル時計を作った。

図1 複利計算アプレット 参考文献2,pp.83-101

図2 ハノイの塔、参考文献4、pp.435-458

3)1997年度KIPスクールでも「JAVA」グループに参加した。1998年3月の発表会までに、会員6名で、夜間2時間の会合11回をもった。*5)

サンの認定コース(T,U合計5日間で22.7万円、東京)をメンバの1名に受講してもらった。その人を講師とし、コースで使っているテキスト(市販本)*6)を使用して、学習をした。

筆者は、次章4の3、4項を発表した。

4)1998年度KIPスクールも「JAVA」グループに参加した。1999年3月の発表会までに、会員12名で、夜間2時間の会合11回を短大のパソコン室でもった。

前半は、前年と同じテキストの学習、後半は各自の作品の作成をした。筆者は、チャットプログラムのデモと改良を行った。

発表会では、チャットプログラム2件、データベースの利用、KIPのホームページの作成について報告がされた。この会場での参加者の話しては、JAVAでの実際の業務システム開発・テストが進行中で、起動時間が長く、レスポンスが悪かった。前者のため、プログラムの1部をクライアント側に持つようにし、後者では、データベースのチューニングが必要だったとのことである。

なお、日経コンピュータの最近の記事*15)では、Javaが本稼動とのタイトルで、事例と問題点、今後の展望などが紹介してある。開発生産性は文句なし、可搬性とプログラム配布には制約とある。性能のネックはアプレット起動時間とのことで、発表会の話を裏付けている。

3.授業でのJavaの紹介・実習

1)1997年9月の「統計手法」科目で「正規確率紙」を使った。この用紙の作成法を、WindowsNT環境でのC言語−平林雅英のSLSによるもの*7)−とJavaのアプレットプログラムによるものとで比較した。

確率分布関数をCでは独立したファイルで分割コンパイルしたが、JAVAではCでの関数を、インスタンス.メソッドに置換え、別のクラスにはしなかった。

2)続けて、「分散分析表」のGUIによるアプレット(図3)を作成した。ここでは、確率分布関数を独立したクラスに分けた。JDK1.1の新しいイベント処理(キー入力やマウスのクリック)が使われている。

図3 分散分析表アプレット

 

4.Javaプログラム作成

1)1997年12月年には、「ワイブル確率紙」の作成を行った。画面のハードコピーでなく、

印刷ボタンにより、Javaでの印刷を行った。

 この印刷*8)は、アプリケーションではできたが、アプレットでは、できなかった。

2)「テキストファイルの読み込みと表示」を作成した。例外処理が分かった。

3)グラフィックスの非GUIプログラム群を、SLSとJAVAとで比較した。河西朝雄の例プログラム*9)(DOSのQuickCプログラムなど)をまず、SLSを使ってWindowsのプログラムに移植した。次にこのCプログラムを以下の方法によりJavaに変えた。

−Appletクラスから派生し、main()をpaint()メソッドにする

−関数名をクラスのインスタンス名.メソッド名に変える

−ポインタ変数をクラスのメンバ変数に変える

−グローバル変数を止めて、メソッドで返す(別クラスの場合)

−数学関数の前にMath.を付ける

−データの入力は、非GUIを使用するなど

図4 透視図 参考文献9,pp.374-377

(2000.9.8追記 その後、マウスでのドラッグによる軸測投影の回転プログラムも作っている。)

4)データベースを使うプログラム*16)を参考書をもとに学習した。また、イントラネットでのJavaの使用事例*14)を確認した。

5)1998年8月、第1回のセミナーの後、ネットワークを使ったプログラムとして、チャット(複数のユーザ−クライアント−のキー入力・表示−対話)プログラムを作成した。

サーバでは、同時に20名までのクライアントをマルチスレッドのクラスで受け持ち、メッセージの受信と全クライアントへの送信を行う。GUIのクライアントでは、キー入力の割り込みでテキストを受付けてサーバに送る。サーバからのメッセージは、スレッドで読んで、テキスト領域に表示している。

このプログラムでは、ソケット通信とスレッドの利用*7,14)、日本語処理、ファイルの作成、GUIのプログラム例などを参照した。

異なるPC間はアプレットでは出来なかった。

以下にサーバの画面例、図5にクライアントの

1つの実行の画面を例示する。

 チャットプログラム(サーバ−MS-DOSプロンプトの窓)での実行例

K:\Java_sekiya\Chat_SC>java SocketServerM

< SocketServerM Started at Fri Mar 26 18:45:26 JST 1999

sekiya1 Started at Fri Mar 26 18:59:52 JST 1999 ]

sekiya1 Conected!Socket[addr=A102/172.16.73.102,、port=1032,localport=4002

(18:59:52) sekiya1 入室しました。

sekiya2 Started at Fri Mar 26 19:02:51 JST 1999

sekiya2  Conected! Socket[addr=A101/172.16.73.101,port=1032,localport=4002]

(19:2:52) sekiya2 入室しました。

(19:3:51) sekiya1>KIP_java発表会のデモをします。

(19:5:5) sekiya2>1からのメッセージが届きました。

(19:6:5) sekiya1>2からの確認文も、OKです。

(19:7:5) sekiya2>隣でも、2秒ほどの遅れがありますね。

(19:8:19) sekiya1>今度はそれほど、遅れはありません。Windows98の せいでしょう。

(19:9:40) sekiya2> わかりました。

(19:10:21) sekiya1> おわります。

(19:10:40) sekiya1 退室しました。

sekiya1 has disconnected at Fri Mar 26 19:10:40 JST 1999

(19:11:26) sekiya2>終わります。

(19:11:33) sekiya2 退室しました。

sekiya2 has disconnected at Fri Mar 26 19:11:33 JST 1999

Server is waiting new Clients.

図5 チャットプログラム(クライアント)の実行例

5.能力開発セミナー

1)1998年の8月「JAVA言語プログラミング」セミナーを計画し、プログラミング経験者を対象として募集し、11名の受講者があった。

2)テキストは、KIPスクールで使ったサンの教科書*6)と「JavaWorkshop2.0プログラミング」(翔永社刊)の2冊を用意した。

3)開発ツールには、岡田がダウンロードしたJDK1.1.6(コマンドラインで使用)を利用した。このため、DOS窓やエディタの操作について説明をした。なお、日本語のオンラインドキュメントは1.1のものである。

4)セミナーの進め方は、サンのテキストに基づく簡単な講義、例題と演習問題での実習を予定していた。しかし、受講者のレベルとニーズにより、臨機応変の対応をとり、C言語などのプログラミング言語の未経験者には、文法の基礎からの例題によるもっと,やさしい参考書*10)での学習をしてもらった。

5)GUIプログラムの開発では、ビジュアル開発ツール*11)として、教育機関向け無償の「サンJava Workshop2.0」を紹介した。チュートリアル(電卓)をテストした。サンには、簡単な貼り付けソフトJava Studioもある。後者に興味を持った受講者には、これを使ってもらった。

 当時は、まだ、正式版が出ていなかったが、MicrosoftのVisual J++6.0では、Visual Basicと同様に、GUIで、Javaプログラムの開発が出来るようになっている。

6)受講者の経験レベルと受講目的、進め方:

プログラミング経験が無い方が3名居た。逆に予定していた受講者レベル以上に、十分にC言語を経験した方も1名居た。

ホームページをJavaで作りたい人が半数以上も居た。

これらの違いがあったので、共通でのテキストの解説と実習は、初日のみで終わりにして、後の3日は、それぞれの習得したい事項についての自己学習に切り替えた。

7)受講者が作成して発表したテーマは以下のようなものであった。

☆アニメーション:ホームページ

・文字・画像・図形のラバーバンド処理

・魚・泡のアニメーション、文字のスクロール

・dukeアニメーションを並べて、マウス操作

・イメージや図形の描画(複数の配置)

Java Studioの利用

☆ Java ScriptでのGUIホームページ

8)アンケートから-意見・要望

・コースの分割をして欲しい。

初級では文法、中級ではアプレット、上級ではネットワークやデータベースの処理などが、考えられる。

・社内での教育のために、プログラミング技術や教材の情報等の入手しやすい環境を作って欲しい。

後日、「自己啓発情報シート」を作ったので、それを送付したい。

9)アンケートから−理解度・有効度

「あまり理解できなかった」人が1/3

も居た。(クラス分けが必要だと痛感した。特にプログラミング言語を学習したことのない人の対してのコースが必要である。Javaによるホーム・ページ作りのコースも欲しい。ただし、Javaの初歩を学習してが良いが。) 

「役に立ったか?」については、役に立ったとのことで、ほっとした。

10)オブジェクト指向のシステム開発では、その前提として、クラスの分析と設計が必要である*12)。これは、Javaプログラミングとは別のセミナーとして、計画したい。

 なお、CASEツールでも、UMLでのクラス図などの設計からJavaソースプログラムのスケルトンを作るものが、市販されている。(ヴェストソフトウェア株式会社のVEST−SAVER for Java*13)がある。これは、UML+Javaによるオブジェクト指向システム開発を支援するオブジェクトモデリングCASEツールであり、これ自身がJavaで開発されていると言う。)

6.終わりに

1)JAVAの調査の結果、オブジェクト指向言語として、C++言語よりも習得が易しい。ビジュアル開発ツールや開発されつつある部品(JavaBeans)を使用すれば、下泉が推奨するVisual Basicと同様にプログラムを高い生産性で作ることができる。

2)Javaが今後、企業での主な開発言語の一つになると、学生の授業でも取り入れることになろう。既に、古屋は昨年の卒研で、岡田は今年のネットワークプログラミングの授業で試行している。

3)以上のような状況を考慮し、今後は、セミナー「JAVA言語プログラミング」を、さらに細分して計画していきたい。

謝辞:この論文は、北九州職業能力開発短期大学校の第7回研究発表会の講演予稿集*17)の原稿に、加筆したものである。予稿集の作成では、堤校長ほか、情報系の先生方に見ていただき、ありがとうございました。

参考文献

1)有我成城ほか,Java入門,翔永社,1996.2

2)溝口文雄,入れたてJava,共立出版,1996.4

3)関谷ほか,KIPスクール96・Java報告,1997.3

4)Lalaniほか,スリーエーシステムズ訳,JAVAプログラミングケーススタディ、翔永社,1997.2

5)関谷ほか,KIPスクール97・Java報告,1998.3

6)日本サン・マイクロシステムズ(株),JAVAプログラミング講座,アスキー,1996.10

7)平林雅英,Windows95プログラムを10倍簡単に作る C言語版,共立出版,1996.4

8)有賀妙子ほか,Java1.1プログラミング,ソフトバンク,1997.5,pp.289

9)河西朝雄,C言語によるはじめてのアルゴリズム入門,技術評論社,1992.5,pp.345-408

10)河西朝雄,Internet Language 3 Java入門,技術評論社,1996

11)広告特集-JAVA開発ツール徹底活用、日経バイト,日経BP社,1998.4,pp.248-249

12)萩本順三ほか,最新オブジェクト指向技術 応用実践, エーアイ出版,1998.1

13)ヴェストソフトウェア株式会社,VEST−SAVER for Javaのご紹介,1999.3

URL:http://www.vest.co.jp

14)電通国際情報システム株式会社星野光一ほか、JAVAイントラネット構築技法、1997.7

15)中村正弘、特集Javaが本稼動-導入ユーザが明かす真実と幻想,日経コンピュータ,1999.2.15,pp.126-143

16)菊田英明,実践JDBC Javaデータベースプログラミング術,オーム社,1998.5

17)関谷順太,JAVA言語と能力開発セミナー、北九州職業能力開発短期大学校 第7回研究発表会講演予稿集,1998.8.20,pp.17-18


(リンク集へのハイパーリンク追加)Java入門書、JavaチュートリアルLINK集(2000.8.3)

(その後のJavaプログラム例の追加)

 その後、「数値計算実習2001s」「図形処理実習2001」などの授業科目で、Javaプログラムの作成を行っている。そのほか、発表会用タイマーのJavaへの移植を行った。(2002.3.19 sekiya)