1学期第1週
テーマ:Javaとは何じゃ?
めだかの学校「Javaクラス」が始まりました。
まず、第1週はJavaとは何じゃ?という点について勉強しましょう。
このページには、先生や生徒のみなさんが授業のテーマについてまとめられたページなどをご紹介しています。
また、落ちこぼれないように授業の結果を「これだけメモ」に掲示していますので、ご覧ください。
参考となるWeb:
参考となる書籍:
今週のまとめ・感想など:
皆さんにまとめていただいたノートや資料をリンクします。テーマに関係のあるページを作られた方はどんどん応募してください。

せっかくですから、これだけはゼッタイに覚えておいて下さいね。
Javaの特徴
- インタプリタ
- コンパイラは、プログラムを一旦ソースコードからオブジェクトコードに翻訳した後一気に実行しますが、インタプリタは翻訳をしながらぼちぼち実行します。
従って、コンパイルされたプログラムと比較すると実行速度が遅くなります。
JavaはJavaコンパイラによってコンパイルされますが、その機種専用のコードを作るのでなく、Javaバーチャルマシンのバイトコードを生成します。このバイトコードをインタプリタで翻訳しながら実行するので、Javaバーチャルマシンが存在すればどの機械でも同じプログラムを実行できる訳です。
- シンプル
- JavaはC++から複雑な言語仕様を削除しましたので、非常にシンプルな言語になっています。
C++はもともとC言語にオブジェクト指向を付加したものであるため、もとのC言語風の書き方やオブジェクト指向の書き方などが可能です。
ところが、Javaはオブジェクト指向でしか書けないため、この点でもシンプルですが、オブジェクト指向がわからないとプログラミングができません。(^_^;;
- 中立性
- Javaはバーチャルマシン上で実行するように作られているため、UNIX、Windows、Macintoshなどのそれぞれの機種にJavaバーチャルマシンを想定した環境を置いておけば、機種を気にせずに利用できます。
NetscapeなどのJava対応ブラウザはその環境を取り込んでいるため、機種に関係なく利用できるわけです。
- オブジェクト指向
- 先に述べたようにJavaはオブジェクト指向言語です。
従来のCOBOL、FORTRAN、Cなどの言語は、データの入れ物をファイルやメモリーとして用意しておいて、機械にして欲しいことを順番に書いていく手続き型言語でした。
オブジェクト指向では、現実世界にあるモノを1つのオブジェクトとして取り上げ、そのモノの性質や行動をまとめて記述しておき、オブジェクト同士がメッセージを送りあって処理を進めていきます。
手続き型言語を知っているとどうしてもそれにこだわってしまい、オブジェクト指向が理解できないこともありますが、MacintoshやWindowsなどに見れらる画面操作のすばらしさは、オブジェクト指向あっての話です。
ま、がんばりましょう。
- 安全性
- Javaはネットワーク上で利用するため、仕様言語レベルから安全性に気を使っています。
例えばC++言語にあるポインタ型がありませんので、システムメモリの操作ができません。
インタプリターはバイトコードを実行中に、メモリの操作などを常にチェックをしながら実行しますので、安全性が高いと言えます。
- マルチスレッド
- 多くのプログラムは、同じ機械のなかで同時に1つの処理を実行するのが普通ですが、Javaは同時に複数の処理を並行して実行できます。そのため、1つのプログラムが長時間動作していても、別のプログラムを同時に起動することができます。
Javaの問題点?
- Javaアプレットにはできないことが多い?
- アプレットは、手元のブラウザを利用して他のホスト(サーバ)から呼び込んできたプログラムを実行します。
そのため、自分の機械のファイルの読み書き、ファイル情報の取得や削除などができません。
これは、ウィルスなどのような悪意のプログラムや、不完全なプログラムから自分の環境を守るために設けられた制約です。
- 他のホストに接続できない
- アプレットは、取り出してきたホストにはアクセスできますが、他のホストには接続できません。
これも、他人の名前で別のホストを悪用することを防止するためです。
- マルチスレッドでは機種によって結果が違う
- これは、機種によってマルチスレッドの処理の優先順位が異なるためです。
Javaは、機種のOSの仕事にまで係わっていないのです。
これは、バーチャルマシンの外側に残っているネイティブメソッドと言われる部分に共通の問題です。
例えば、当然のことですがMacintoshのアイコンやツールバーに係わる部分などはJavaの規定を強制できないのです。
- セキュリティが甘いのでは?
- Javaは安全性が考慮されているとのふれこみでしたが、セキュリティホールが次々に報告され、その都度Javaサイドの対策が取られています。
ま、もともと公衆網を使ってネットワークでプログラムを取り寄せて使おうという試みは従来ほとんどなかったわけですから、このあたりの問題解決は極めて重要かつ楽しみなテーマですね。
ご紹介いただいた書籍や、メールでのご意見などを参考に最低限知っておいていただきたいことをメモしていこうと思います。内容に関してご意見やご指摘をお待ちしています。


教員に対するご意見はこちらへ:(Mail to : cbu-staff@ML.psn.or.jp)
用務員:臼井義美
(Mail to : usui@kcn.or.jp)