JAVA 〜キーワード解説〜
1.JAVAの特徴
Java
95年5月に米サン・マイクロシステムズが開発したオブジェクト指向のプログラミング言語。C++がベースになっている。最近では、プリンターや携帯電話、テレビなどの家電製品などさまざまな分野での利用が考えられ、Javaという言葉自体が単にプログラミング言語よりも広い概念になりつつある。
プログラミング言語としては、動的に確保したメモリーが参照されなくなると自動的に解放されるガベージコレクション機能を備え、ポインターの概念がないという特徴もある。
ネットワーク上にあるプログラムをダウンロードしてWebブラウザー上で動作できる。このプログラムをJavaアプレットという。これに対し、Webブラウザーなしに単体で動作するものをJavaアプリケーションと呼ぶ。
Javaで作ったプログラムを実行するにはJava VM(Java仮想マシン)というソフトが必要になる。Javaで記述したプログラムをコンパイルすると、Java VM用のバイトコードが生成される。そのため、Java VMを搭載していれば、どのプラットフォームでもJavaで作ったプログラムを動かすことができるというメリットがある。
OSや機種ごとのプラットフォームに依存しない半面、実行速度はそのプラットフォームに最適化されたソフトに比べて遅くなる。そのためJavaのバイトコードを実行時にプラットフォーム依存のコードに変換して高速化するJIT(just in time)コンパイラーという技術がある。
(1)"Write once, Run anywhere"
・OS
・バイトコード
・JVM
通常プログラムをコンパイルすると、プラットフォームに依存した機械語に翻訳される。ところが、Javaで書かれたプログラムをコンパイルするとプラットフォームに依存しないバイトコードが作られる。
JVMはこのバイトコードを実行する。JVMを搭載しているOSなら、Javaで作ったアプリケーションはどのOSでも動作する。
( ちなみに、"Write once, Run anywhere"は、一度プログラムをかけば、どんなプラットフォームでも動くという意味である。)
<バイトコード>
特定のコンピューターに依存しないように定義された命令セットを利用する実行形式のこと。それは、バイトコードといって、中間言語の一つである。
<中間言語>
異なる複数のOSで利用できるソフトでは、いったん中間言語に変換する例が多い。
<Java VM>
java virtual machine
Javaで作られたアプリケーションやJavaアプレットを実行するための環境
ただし、バイトコードをコンピューター固有の命令に置き換えながら実行させるため、実行速度が遅くなるという難点がある。
(2)豊富なライブラリ
・部品化
・再利用
・生産性
・パッケージ
プログラムで使う関数やサブルーチン、データなどの集まり。プログラムの開発で、決まった処理や高度なプログラミング技術が必要な場合、部品化されたライブラリーを使うと短期間で作成でき生産性があがる。また、一度作成したライブラリを他のプログラムで使って、再利用したり、差分プログラミングすることによっても生産性があがる。また、複数のクラスをグループ化し、グループ毎に名前空間を分離する事ができる。グループ化した単位をパッケージと呼ぶ。パッケージ間で同じクラス名やインターフェース名を使う事が許されるため、データや処理の共有化がスムーズにできる。これらによって、一層生産性が高まる。
JAVAでは、クラスライブラリーと呼ぶ共通ライブラリーの利用が前提になっている。そして、クラスライブラリは、パッケージとして登録されている。
<クラス>
class
オブジェクト指向のプログラミング言語で、データとデータを扱うプログラムを1つにまとめたもの。クラスを集めたものをクラスライブラリーという。プログラムの中に、作成したクラスを定義することでその機能を使えるようになる。
オブジェクト指向プログラミングでは、まずプログラムをオブジェクトに分け、そのオブジェクトに合ったクラスを作成するのが一般的。プログラミング言語は、いくつかのクラスを用意しているが、足りないものは自分で作ることになる。一度作成したクラスをほかのプログラムで再利用したり、作成したクラスを基に、そのプログラム独自のクラスを作成することもできる。こうすることで、似通ったコードを繰り返し記述する必要がなくなる。→差分プログラミング
(3)アプレット
・ブラウザ
・HTML
・Classファイル
・ダウンロード
・JVM
・アプリケーション
#ブラウザでもアプリケーションでも動ける
解説 ver1
JavaアプレットはJavaで記述された小さなソフトで、Webブラウザー上などで動作する。サーバ側のページのソースにHTML形式でClassファイルやアプレットの大きさなどを指定する。するとブラウザーが動いているマシン(クライアント)にClassファイルをダウンロードし、JVMが実行する。また、Javaで作成されたソフトのうち、ユーザー側のコンピューターに組み込んで、Webブラウザーとは独立して単体で動作させることが可能なJAVAアプリケーションがある。これは、Javaアプレットとは異なり、ローカルディスクのファイルを読み込んだり、データを保存することが可能。
<applet code="*.class" width=200 height=200>
</applet>
解説 Ver2
JavaアプレットはJavaで記述された小さなソフトで、JVMを備えたWebブラウザー上などで動作する。サーバ側のHTMLファイルにHTML形式でにClassファイルやアプレットの大きさなどを指定する。すると、クライアントは、WebサーバーからClassファイルをダウンロードし、Webブラウザー上でJava アプレットが実行される。
また、Javaで作成されたソフトのうち、ユーザー側のコンピューターに組み込んで、Webブラウザーとは独立して単体で動作させることが可能なJAVAアプリケーションがある。これは、Javaアプレットとは異なり、ローカルディスクのファイルを読み込んだり、データを保存することが可能。
<applet code="*.class" width=200 height=200>
</applet>
(JAVAアプレットの特徴:ユーザーのセキュリティを守るため、ダウンロードしたJavaアプレットは基本的にユーザー側のコンピューターのファイルを読み書きできない、ほかのアプリケーションを起動できないなどの制限がJavaの規約で定められている。最初にJavaアプレットが置かれたWebサーバーからデータを読み込んだり、保存することは可能。)
(Netscape CommunicatorやInternet Explorerなど、JVMを備えたWebブラウザーで実行できる。)
<アプレット>
applet
ほかのソフトの中で動作する各種ソフト。例えば、JavaアプレットはJavaで記述された小さなソフトで、Webブラウザー上などで動作する。
2.アプリケーション
(1)開発手順
・JDK1.2
・ソースファイル
・コンパイル
・JAVACコマンド
・Classファイル
・バイトコード
・ClassPath
・Path
・DOS
#エディタ *.Java → JDK1.2 JAVAC → バイトコードが作られて *.class ファイルが作られる
<<JDK>>
JDK1.2(java development kit)は、JavaアプレットやJavaアプリケーションを開発するためのキットで、米サン・マイクロシステムズによって無料で提供されている。Java2とも呼ばれ、セキュリティ機能や日本語環境が強化され、パフォーマンスが向上した。
JDKには、Javaで作成したプログラムをJavaの実行形式であるバイトコードに変換するコンパイラー、アプレットのテストや実行に利用できるAppletViewer、プログラムのバグを見つけるのに利用できるJavaデバッガーなどが含まれている。
米サン・マイクロシステムによって、無料で提供されているJDK1.2(JAVA用開発ツール)をつかって、コンパイルする。
ソースファイルをメモ帳などのエディタをつかって作成する。その際、拡張子はJAVAにする。作成したソースファイルをJDK1.2が提供するDOSコマンドであるJAVACコマンドでコンパイルして( Javac *.java )、Javaの実行形式であるバイトコードで構成されるClassファイルに変換する。また、batファイルを使って、あらかじめ使うコマンド群を通しておく事により、開発者の負担を軽減する。この事をpathを通すという。同様に、ClassPathを通す事により、クラスライブラリの使用ができるようになる。
(2)実行手順
・JDK1.2
・JVM
・JAVAコマンド
・プログラム名
・パラメータ
#プログラム名=最初に呼び出されるクラス名??
JDK1.2のコマンドを使う実行方法は、次の2つのやり方がある。
JDKで用意されたアプレットで実行する場合は、Appletviewer *.html、
アプリケーションで実行する場合は、Java [プログラム名]
これらをMS-DOSプロンプト上で打込み、JDKにあるJVMで実行する。
また、JAVAアプレットの場合は、ブラウザのJVMを使う事もできる。
などのJAVAコマンドの次にプログラム名を記述し実行する。
なお、Javaコマンドの最後にパラメータを追加する事によって、JAVAプログラムに引数を渡す事ができる。また、出力結果をテキストで出力するオプションを使う事もできる。
3.オブジェクトの実装方法
・クラス
・属性
・メソッド
・カプセル化
・情報隠蔽
・クラスの協調
・メッセージング
#メソッドを開放して(を呼び出して)→ メッセージパッシング
オブジェクト指向:
対象(オブジェクト)そのものに重点を置き、対象の振る舞いや操作を対象の属性としてひとまとまりに扱う考え方のこと。
クラスとは、オブジェクト指向のプログラミング言語で、データとデータを扱うプログラムを1つにまとめたもの。クラスを集めたものをクラスライブラリーという。プログラムの中に、作成したクラスを定義することでその機能を使えるようになる。クラスには、対象の振る舞いや操作をメソッドとして定義し、対象のトリガーを属性として定義する。このように、データと処理を一体化する事をカプセル化と呼ぶ。このカプセル化されたオブジェクトの内部には、メッセージングをしてアクセスする。この事をメッセージパッシングという。カプセル化する事により、オブジェクト指向の特徴である情報隠蔽が実現される。また、オブジェクトを実装する事によって、機能の部品化による共有やカプセル化によるオブジェクトの独立性の実現など、クラスの協調が容易になる。
<<カプセル化>>
オブジェクト指向プログラミング言語が持つ要素のひとつ。ほかのオブジェクトからの独立性を高くし、ソフトウエアの保守を容易にする。
<クラス>
class
オブジェクト指向プログラミングでは、まずプログラムをオブジェクトに分け、そのオブジェクトに合ったクラスを作成するのが一般的。プログラミング言語は、いくつかのクラスを用意しているが、足りないものは自分で作ることになる。一度作成したクラスをほかのプログラムで再利用したり、作成したクラスを基に、そのプログラム独自のクラスを作成することもできる。こうすることで、似通ったコードを繰り返し記述する必要がなくなる。
<オブジェクト指向>
対象(オブジェクト)そのものに重点を置き、対象の振る舞いや操作を対象の属性としてひとまとまりに扱う考え方のこと。
例えば、一般にペンは手に持つ。そこで「ペン」という対象を認識し、それから「手に持つ」という操作をひとまとめにしておく。つまり、「ペンと認識したら手に取る」ということにする。このような考え方でソフトウエアを作ることで、コンピューターの操作性を向上できると期待されている。当初はプログラミング言語に限定してとらえられていたが、現在ではGUIやデータベース、ソフトウエア開発ツール、システム設計など、コンピューターにかかわるさまざまな面に影響を与えている。
<オブジェクト指向プログラミング>
オブジェクト指向の考え方に基づいてプログラミングすること。C++やJava、Smalltalkなどオブジェクト指向に基づいたプログラミング言語の利用が前提になる。プログラムの再利用が容易になり、ソフト開発の生産性を高められる。
オブジェクト指向プログラミングには大きく3つの要素がある。カプセル化(encapsulation)、継承(inheritance)、多義性(polymorphism)である。これらの要素を盛り込んだ言語がオブジェクト指向プログラミング言語と呼ばれる。
カプセル化とは、データに対する操作をオブジェクトに属する手続きに限定すること。ほかのオブジェクトはその処理がどう実現されているかは関知しない。これにより、個々のオブジェクトの独立性が高くなり、ソフトの機能変更や保守をする時に、該当するオブジェクトだけを変更すれば済む。ソフトの保守が容易になり、読みやすいプログラムを作れる。
継承とは、内容がやや異なるオブジェクトを作成する時に、ほとんどの内容を既存のオブジェクトから受け取り、異なる部分だけを新たに付け加えること。オブジェクトの再利用で開発時間の短縮が図れる。
多義性とは、あるオブジェクトがメッセージを発信した時に、そのメッセージを受け取るオブジェクトによって処理が異なるという性質。例えば「描画」というメッセージを受け取った時、円オブジェクトならば円を描くし、三角形オブジェクトならば三角形を描く。
4.ポリモフィズム(多様性)
・インヘリタンス(継承)
・extends
・インターフェース
・implements
・実装
・メソッドのオーバライド
#あたかも親を呼び出しているように子供のメソッドを呼び出す
<インヘリタンス>
inheritance
インヘリタンス(継承)とは、オブジェクト指向のプログラミング言語が持つ要素のひとつである。新しいクラスを作成する時に、既存のクラスの属性を引き継ぐことを指す。作成したオブジェクトを再利用しやすくなる。AA extends A とすれば、A を AA が引き継ぐ事ができる。abstractクラスでは、スーパークラスの中の一部に対して、メソッドの宣言のみを行い、その実装をオーバーライドする事を前提とした設計ができる。また、スーパークラスのメソッドがすべて宣言のみで、インターフェースのみを継承する事を前提とした設計もできる。具体的には、サブクラスで、AA implements A とする事によって、スーパークラスAから受け継いだインターフェースをAAで実装(上書き)する事ができる。この事をメソッドのオーバーライドという。
#“メソッドのオーバライド”は、オーバーライトではなく、オーバーライ“ド”である。
<<スーパークラスのメソッドのオーバーライド>>
サブクラスでは、スーパークラスと同名のメソッドを定義し直す事ができる。
これをメソッドのオーバーライドという。スーパークラスの性質を受け継ぎながらメソッドの動作を変化させた新しいクラスを作成する事が目的である。従って、引数の数、型、戻り値は、スーパークラスのものと同じでなければ、ならない。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<JDK>
java development kit
JavaアプレットやJavaアプリケーションを開発するためのキット。米サン・マイクロシステムズが無料で提供する。Windows 95/98/NT版などがある。96年12月に発表したJDK1.1から日本語が扱えるようになり、98年12月にJava2(JDK1.2)が出荷された。Java2ではセキュリティ機能や日本語環境が強化され、パフォーマンスが向上した。
JDKには、Javaで作成したプログラムをJavaの実行形式であるバイトコードに変換するコンパイラー、アプレットのテストや実行に利用できるAppletViewer、プログラムのバグを見つけるのに利用できるJavaデバッガーなどが含まれている。
ただし、JDKでは必要最低限の開発環境が提供されているだけなので、これを強化してGUIでの開発環境を提供するマイクロソフトのVisual J++、シマンテックのWinCafe、インプライズのJBuilderなどが発売されている。
T:1999年作成
戻る