Java関係の用語を整理・解説します。
記号 A B C D E F G H I G K L M N O P Q R S T U V W X Y
訳語対照表:「マルチメディア/ハイパメディア調査研究委員会WG2活動報告」より
用語集:上記の用語定義集から
村上氏サイトJava用語辞典
Java Glossary(英語)
(固有)
:商品名、会社名、人名
.java,awt,アプリケーション,アブレット,インスタンス,クラス,パッケージ,Java対応ブラザ,Java,JavaScript,HotJava,JDBC,JDK,JFC
クラスやフィールドを宣言するときの修飾子で、スコープ(有効範囲)を限定する。
public, private, protected, (なし)があります。
クラス内のフィールドにアクセスするためのメソッド
コンピュータのコマンドラインから、ジャバインタープリタによって実行されるものです。アプレットの親玉という感じです。
Java言語で開発され,コンパイル済のものです,インターネットを通じて配布可能になります。小さなアプリケーションの意味で,アプリケーションのアプと,小さいのレットでできた用語と思われます。
Javaで開発されるプログラムは,4種に分類され,
1)アプリケーション
2)アプレット
3)ビーンズ
4)サーブレット
アプレットは,WWW上で動作します。
アプリケーションは,コンピュータのコマンドラインから
「 > java アプリケーション 」
と実行されるものです。
ビーンズは、コンポーネットです。VBのコントロールにあたります。
サーブレットは、サーバ上で動作するプログラムです。
クラス:Appletを継承することで、そのクラスから作成されたインスタンスは、5つの状態を遷移します。
基本の流れは、init()→start()→実行→stop()→destroy() です。このうち,ウエブで他のページをみて,もどってきたりすると,stop() の後,start()に戻ります。
|
init() ロード状態に実行されます。
destory() 終了状態(アンロード時)に実行れます。 |
アプレット(そのサブクラスから作成されたインスタンス)とは、Web上で動作するプログラムになります。
実行状態になったときに、paintメッセージが発生して、paintメソッドが実行されます。
アプレットを動作させるソフトウェアツール。それしかできないものを指す場合が多いが、IEやNSなどもその一種である。
インスタンス(オブジェクト)がクラスに分類されること。データ抽象化。
対話型プログラムなどで、キーを押す、マウスをクリックするなどをイベントといいます。このイベントによってプログラムを動作するように組むことをイベント駆動プログラムといいます。オブジェクト指向プログラムではこの実現がしやすくなってます。
イベントによって、メッセージが発生します。メッセージはそれを受け取るインスタンスに送られ、該当するメソッドが起動されます。
クラスから生成されるものです。クラスから継承して作られるクラスとは違います。クラスを孫悟空,インスタンスは,孫悟空の髪の毛から作られた分身と考えるとわかりやすいです。多くの書籍では,クラスを設計図,インスタンスをそれによって作られた製品という説明をしています。クラスを鯛焼きの金型,そこで焼いて作った鯛焼きをインスタンスと説明しているものをあります。
インクリメント演算子は、JavaがCより受け継いだものです。++i などの演算子です。この場合は、i ← i+ 1の意味です。
Javaにおける多重継承を実現する手段です。同時に定義と実装を分離する手段としても利用できます。
インターフェースという英語から想像すると分かりにくいですが、これはクラスの特殊な形態として捕らえます。抽象クラスよりさらに抽象度を上げたクラスと捕らえます。インターフェース(クラス)は、実装をもたないメソッド(抽象メソッド)と定数(static final)のみで構成されます。一方、抽象クラスは実装を持ったメソッド(普通のメソッド)も持つことも可能です。
インターフェースを利用することにより、メソッド名の標準化が可能になります。
|
|
通常クラス(普通のクラス) |
抽象クラス |
インターフェース |
|
インスタンス作成可能 |
可能 |
不可能 |
不可能 |
|
子クラスへ与える影響 |
拡張(extend) |
拡張(extend) |
実装(implement) |
|
親クラスに対しての関係 |
通常クラス、抽象クラスからの継承可能(extend) |
通常クラス、抽象クラスからの継承可能(extend) |
インターフェースからの継承可能(extend) |
|
抽象メソッド保持可能 |
不可能 |
可能、実装されたメソッドも記述できる。 |
可能。実装されたメソッドは記述できない。 |
|
目的 |
|
複数クラスに対して統一化を与える。 メソッド名の統一化 |
定義と実装の分離。 多重継承 メソッド名の統一化 |
GUIを実現に関するクラスが集まっているパッケージ。JDKに付属しています。見た目が実行するOSに依存します。(@2002/09/23)
組み込み機器用のJavaバイトコードを動作させるための環境で、狭い意味ではそのOSを指します。PersonalJavaよりも対話性が低く、JavaCardよりも大きい機器用です。(@2002/09/23)
通常,オブジェクトと言ったときは,インスタンスを指します。それぞれのインスタンスを抽象化したものが,クラスです。逆に言えば,クラスを実現化したものをインスタンスといいます。ちょうど,変数の型と変数の関係です。クラスが設計図で,それに従って作成された製品をインスタンスという見方もできます。
私は,オブジェクトという用語を使うときは,クラスとインスタンスを区別しないときし,区別する必要があるときは,クラス,インスタンスという用語を使用すべきと思います。クラスとインスタンスの関係は,設計図とそれで作成された製品のイメージではなく,クラスが本体で,インスタンスはその分身ととらえることを勧めます。クラスが孫悟空で,インスタンスは孫悟空の髪からうまれた孫悟空の分身です。クラスとインスタンスは本来同一の物で,ときどき,分身の術を使って,別の実体として存在するという感じです。
オブジェクトのイメージは,ロボットで,メッソドは,そのロボットの機能,プロパティは,そのロボットのメモや持ち物を指すと考えるといいと思います。(@2001-01-21)
Javaでは、変数の型は、整数、文字(1字分)を表す基本データ型と配列、文字列、クラスを参照する参照型に分類されます。配列型,文字列型は参照型の一つです。
次のように分類するのが妥当と思われます。(斎藤の分類)
その1 は,説明がしやすい分類,その2は,実態に近い分類
|
基本データ型 |
数値型 |
整数型 | バイト整数型,文字型,短整数型,整数型,長整数型 |
| 浮動小数点型 | 単精度浮動小数点型,倍精度浮動小数点型 | ||
|
真偽値型 |
|||
| 参照型 (広い意味でのクラス型) |
クラス型 (中間の意味のクラス型) |
一般的なクラス型(狭い意味でのクラス型) | |
| 列挙型(特殊なクラス型) (JDK 1.5 から) | |||
| 文字列型(特殊なクラス型) | |||
| 配列型(特殊なクラス型) | |||
| インタフェース型 | |||
|
基本データ型 |
数値型 |
整数型 | バイト整数型,文字型,短整数型,整数型,長整数型 |
| 浮動小数点型 | 単精度浮動小数点型,倍精度浮動小数点型 | ||
|
真偽値型 |
|||
| 参照型 (広い意味でのクラス型) |
クラス型 (中間の意味のクラス型) |
クラス型 | 一般的なクラス型(狭い意味でのクラス型) |
| 列挙型(特殊なクラス型) (JDK 1.5 から) | |||
| 文字列型(特殊なクラス型) | |||
| 配列型(特殊なクラス型) | |||
| インタフェース型 | |||
参考:Javaの解説本の一般的な分類
|
型名 |
宣言時のキーワード | ||
| 基本データ型 | 数値型 | 整数型 | byte, short, int, long |
| 実数型 | float, double | ||
| ブール型 | boolean | ||
| 文字型 | char | ||
| 参照型 | クラス型 | クラス名を使用 | |
| 配列 | 元になる要素名+[ ] | ||
| インターフェース | インターフェース名を使用 | ||
参考:Java言語仕様第2版での分類
|
型名 |
宣言時のキーワード | ||
| プリミティブ型 | 数値型 | 整数型 | byte, short, int, long, char |
| 浮動小数点型 | float, double | ||
| boolean 型 | boolean | ||
| 参照型 | クラス型およびインターフェース型 | クラス型 | クラス名を使用 |
| インターフェース型 | インターフェース名を使用 | ||
| 配列型 | 元になる要素名+[ ] | ||
参考:Java言語仕様第3版での分類(JDK 1.5)
文字列,列挙型に触れていない。
|
型名 |
宣言時のキーワード | ||
| プリミティブ型 | 数値型 | 整数型 | byte, short, int, long, char |
| 浮動小数点型 | float, double | ||
| boolean 型 | boolean | ||
| 参照型 | クラス型 | クラス名を使用 | |
| インターフェース型 | インターフェース名を使用 | ||
| 配列型 | 元になる要素名+[ ] | ||
基本データ型一覧
|
型名 |
表現 |
bit |
値の範囲 |
備考 |
|
バイト整数型 |
byte |
8 |
-128 から 127 |
符号付き |
|
文字型 |
char |
16 |
0 から 65535 |
Unicode、一文字だけの変数に使用。文字列は別に定義 |
|
短整数型 |
short |
16 |
-32768 から 32767 |
符号付き |
|
整数型 |
int |
32 |
-214783648 から 2147483647 |
符号付き。整数演算のデフォルト。 |
|
長整数型 |
long |
64 |
-9223372036854775808 から 9223372036854775807 |
符号付き |
|
単精度実数型 |
float |
32 |
IEEE754形式 |
|
|
倍精度実数型 |
double |
64 |
IEEE754形式。実数演算のデフォルト |
|
|
ブール型 |
boolean |
1 |
true, false |
1bitで表される。Cとの互換性はない。 |
参照型一覧
|
型名 |
備考 |
|
クラス型 |
広い意味でのクラス型と狭い意味でのクラス型がある。 広い意味では,参照型全体を指す。 狭い意味では,配列型や文字列型でない一般的なクラスの型 |
|
配列型 |
基本データ型あるいは参照型を要素として配列を定義する。配列型の配列も可能。添え字は、0から始まる。 |
|
文字列型 |
文字列は、配列型であるが、例外として取り扱われており、Newの必要はない。 |
| インタフェース型 | 一般的なクラスと区別される場合と同じように扱われる場合がある。 |
それぞれのオブジェクトの性質を定義したもの。それぞれのオブジェクトはインスタンスと呼ばれる。そのインスタンスの元となる型紙のようなもの。このクラスの内容を継承して新しいクラスを作ることができる。その継承関係を表す用語として,親をスーパークラス,子供をサブクラスいう。
アプリケーション,アプレットなど,バイトコードのプログラムのことです。
前判断,後判断,途中判断あり。
リアルタイムOSベンダであり、SUN社に買収された。97年2月Java対応リアルタイムOSを発表している
Java を発表した会社。もともとUNIXマシーン、UNIX系OSを製造・販売した会社。現在でもサーバーマシーンの会社として有名である。
97/6にサン社,ネットスケープ社によって,発表されたクラスで,awtの機能拡張版で,JDK 1.2に組み込まれてた。
JavaのAPI仕様の一つで,データベース管理システムへのAPI仕様である。JDK 1.1から標準機能となりました。
96年2月 ジャバソフト社から発表されました。
サンマイクロソフト社から配布されたJavaプログラム開発ツールセット。中心は,ジャバのコンパイラ。このJDKのバージョンが,Java言語仕様のバージョン,コンパイラがサポートする言語仕様バージョンとなる。よってこのJDKのバージョン番号が重要。
|
JDK |
出荷 |
主なトピック |
備考 対応しているソフト/書籍 |
|
Oak |
(92) |
Javaの原型,ケーブルテレビの受信変換器(セットアップボックス)のプロトタイプ開発に使用 |
|
|
1.0 β |
95/9 |
|
『Java使いへの道』 |
|
1.0 |
96/1 |
|
|
|
1.0.2 |
96/6 |
|
『Java使いの友』,『JAVAスレッドプログラミング』 |
|
1.1 β |
96/12 |
JavaBeans,Delegation,イベントモデル |
『Java言語ハンドブック』 |
|
1.1.1 |
97/2 |
|
Widow版・Mac版IE4.0(不完全+独自拡張あり) |
|
1.1.2 |
|
|
Window版・Mac版NC4.0(不完全) |
|
1.1.6 |
|
|
|
|
1.2 |
1998/12 |
JFC,ネイティブスレッド対応 コレクションフレームワーク導入 |
以後,Java2と呼ばれるようになった。 |
| 1.3 | 2000/5 | ||
| 1.4 | 2002/3 | ||
| 1.5 | 2004/9 | 大幅なバージョンアップ Generic,拡張If等 |
J2SE 5.0 という言い方がされる。『Java言語仕様』第3版 |
| 1.6 | 2006/12 | Java SE 6 という言い方がされる。 | |
| 1.7 | 2008予定 | ||
| 2.0 | JDK1.2が発表される前に,このバージョンが,Java2と思われていた。 |
JDK 1.0に組み込まれていた主なツール
Javac ジャバコンパイラ
java
アプリケーションを実行するインタプリタ
jdb
デバッカー
javah ヘッダ作成
javap 逆アセンブラ
javadoc
ソースからドキュメントを作成
appletviewer
アプレットを実行する
Win95、MAC.UNIXマシーン上でJavaバイトコードのプログラムを動作させる環境(仮想機械)。マイクロソフトのインターネットエクスプローラはJVMの一種である。
狭い意味ではプログラム言語Javaを指し,広い意味では開発環境全体を指します。Java言語は,1995年にサンマイクロシステム社が発表しました。
組み込み用のプログラムをJavaで記述したときに,そのプログラムを動作させるためのOSのこと。
組込用途を3つの環境に分けている。
PADやゲーム機用のPersonalJava環境、より対話性の低い機器例えば自販機、DVD機器用などのEmbeddedJava環境、スマートカード(ICカード)組込用のJavaCard環境です。
広い意味では、スマートカード(ICカード)用のJava開発環境の名称、狭い意味ではJavaが動作するスマートカードを指す。
Java言語で開発されたプログラム(アプレット)を実行可能なWWWブラウザのことです。具体的には,インターネットエクスプローラやネットスケープ社のナビゲータです。
本格的なプログラムを開発する言語でなく,インタープリタ処理され,簡単に制御するとき,スクリプトと言われいます。文法としてJava言語の体系を採用して,Webページ(ホームページ)を制御する目的に開発されたのが,JavaScriptです。同様に,VisualBasicの言語体系を採用しているものをVBScriptといいます。
JavaScriptは,サンマイクロ社と提携していたネットスケープ社が,NetScape2.0上で動作するスクリプト言語として発表しました。NetScapte2.0では,JavaScriptのサポートに加えて,同時期に,Javaをアプレットして動作可能としました。
JavaScriptは,ネットスケープ社の用語です。マイクロソフト社は,JavaScript互換のJScriptをインタネットエクスプローラで動作可能としています。
JavaScriptは,ヨーロッパの標準化団体,ECMA(European Computer Manufacturers Association)で標準化がされています。ECMA(ECMA-262)の標準が,ISO(ISO-16262)に採用されます。
| JavaScript | ECMA | NetScapte Navigator | Internet Explore | 主なトピックス |
| 1.0 | 2 | 3 | ||
| 1.1 | ECMA-262 | 3 | 短命なバージョン,配列 | |
| 1.2 | 4.0 | 4 | 正規表現,switch文,delete演算子 | |
| 1.3 | 4.06 | 5 | ||
| 1.4 | 例外処理(try, catch, throw)(→IE5ですでに採用済み) |
IDGジャパンが発行するJava関連の月刊雑誌。月刊ジャバワールド,JavaWORLDと書かれている。
Java言語の前身OAK言語の設計者、現在のJava言語の中心人物でもある。NeWSの開発者でもあった。
マルチタスクをさらに,細分化して,ひとつのタスク(プロセス)内で,並列に処理できる部分をスレッドと定義して,多重化します。スレッドは,記憶域を共有するため,切り替えする場合,
一般的にスレッドは,生成されると,ready状態,run状態,wait状態を繰り返し,終了は,run状態から,終了処理をえて,終了します。
Java では,ready状態とrun状態をあわせて,実行状態(runnable)と呼び,readyとrunの状態遷移は,JVMが管理をしています。
赤はJavaでの用語,緑は一般的な用語
| 初期状態(new) | new | スレッドの生成 |
| start() | スレッドを実行可能状態(ready)にする | |
| 実行状態(runnable)ready, run状態 | ready状態とrun状態の管理は,JVMが管理 | |
| 待機状態(blocked) wait状態 | sleep(時間) | スレッドを決まった時間,休眠状態にする。 |
| I/O待ち | I/Oの終了を待つ | |
| wait() | ||
| ロック | ロックの開放待ち | |
| 終了状態(dead) | run()終了 stop() |
ガーベッジコレクションの対象 |
Javaでは,定数は,変数の一種です。変更できないことを final で表現して変数を定数としています。
例:static final int a = 3:
クラスがスーパークラスに分類されること。インスタンスがクラスに分類されることを1次分類という。スーパー抽象化。
ゲーム機や携帯型端末に組み込まれるJavaバイトコードを動作させるための環境、狭い意味ではOSである。
クライアント・サーバーモデルなどで、どこのサーバーにどういった機能を持たせるかという設計上の問題。クラスを設計するときのどの機能をどのクラスに持たすかの問題でもある。
Javaはソースプログラムをコンパイルするとバイトコードと呼ばれる。一般的には、「オブジェクトコード」とか、「バイナリコード」と呼ばれるものである。Javaは、CPUに依存した機械語を使用せずに、中間コードを使用している。JVMがこの中間コードを読みとり実際に実行をする。この中間コードの命令部が1バイトであるので、バイトコードと言うそうである。
Java言語の前身OAK言語の開発者の一人で、WebRunner(後のHotJava)開発の提唱者
クラスをまとめたもの。関係度の高いクラスを一つのパッケージとする。Javaでのライブラリ管理方法。
Javaで分散処理を実現する際に利用できる環境(製品)として、HORB、RMI、CORBAの3つがある。
HORB
RMI
CORBA
Java言語を採用して,サンマイクロシステム社が開発したWWWブラウザーのことです。
Javaで作成したプログラムで特定の部分(ホットスポット)を高速化する技術。JDK1.2でサポートされると言われています。日本語に直すと?
y = f(x)
のような数学的な関数の書式を利用して,特定の固まりの仕事を,プログラムの世界でも関数として定義をします。オブジェクト指向の世界では,オブジェクトが保持する関数を,メソッドといい替えています。数学の関数の場合,引数と戻り値に重点が置かれますが,プログラムの正解では,関数実行時の動作に重点が置かれます。そのため,関数の書式を利用していますが,仕事をするということで,メソッドの方が,より正しい言い方かも知れません。
メッソドというと,教育のための方法や手順を指す場合が多いです。プログラム用語として,オブジェクトが持つ関数をメソッドというのは,実体を的確に表している用語でないでしょう。より妥当な用語が望まれます。
Javaの中では,ファイルノットファンド,ゼロ割りエラー,メモリ不足エラーの割り込みは,Throwable クラス(とサブクラス)のインスタンスとして表現される。この割り込みが発生すると,このインスタンスがエラー情報を保持して,投げ出され(throw),受け取った(catch)メソッドがその割り込みを処理をし,回復する。回復したら,投げ出されたとこに戻る。
赤の補足(チェック(される)例外クラス)は,コンパイル時に例外処理の記述があるかどうかのチェックされるという意味。
(親クラス ←→ 子クラス)
| Objectクラス | Throwable クラス | Errorクラス | OutOfMemoryErrorクラス等 | Javaのプログラム内で回復できない致命的なエラー。JavaVMが動作停止する。 | |
| Exceptionクラス | IOExceptionクラス | FileNotFoundExceptionクラス等 | 対応する処理が用意されていないとコンパイルエラー。チェック(される)例外クラス | ||
| RuntimeExceptionクラス | ArithmeticExceptionクラス(ゼロ割など)
IndexOutOfBoundsExceptionクラス(配列の添え字範囲外エラー) 等 |
対応する処理が用意されていなくてもコンパイルエラーとならない。チェックされない例外クラス | |||
| その他
自作の例外クラスはここに作成が普通 |
チェック(される)例外クラス | ||||
| その他の一般のクラス
|
|||||
拡張子 javaは,Java言語で記述したソースを指します。
ユーザーインターフェースに関するクラスが集まっているパッケージ。JDKに付属しています。OSのユーザインターフェースを利用しているため,それぞれのOSに依存します。
Javaコンパイラで作成されたJavaバイトコードを解釈実行するソフトウェアツール。
Javaで書かれたプログラムソースをJavaの中間コード(バイトコード)に変換するソフトウェアツール。
クライアントが、Javaアプレットをダウンロードするときに、クラインアント用にアプレット(バイトコード)を機械語に変換するコンパイラ。
Javaで作成されるアプリケーションプログラムに含まれるメソッドで、まず最初にこれが実行される。Cのmain関数にあたる。
例:
public static void main(String[] jarg){ (省略)}
クラス、メソッド、変数のスコープ(有効範囲)を指定するためのもの。
publicがつくと、他のパッケージからも利用可能になる。
例:
public static void main(String[] jarg){ (省略)}
メソッド,変数の宣言時にこれで修飾すると,このメソッド,変数はクラス,サブクラスからインスタンスが生成されるときにインスタンス内に生成されずにクラスの中に残ります。つまり,同一クラスそのサブクラスから生成されたインスタンスの共通のメソッド,変数になります。
static変数は,同一クラス(サブクラスを含む)からのインスタンス間の共通の変数となります。変数の指定の仕方は,普通は,インスタンス名.変数ですが,クラス名.変数名です。
staticメソッドも,同一クラス(サブクラスを含む)からのインスタンス間の共通のメソッドとなります。そのメソッドの指定の仕方は,クラス名.メソッド名です。staticを付けたメソッドとstaticをつけないメソッドの利用の用途においてさらに調査をします。???