ObectSquare

[インターネット時代のオブジェクト指向入門]


(4) 代表的技術1:Java

Javaはインターネットの普及とともに急速に広まったオブジェクト指向言語です。最初は、テキストや静止画が主な内容であったWWWのページに、アニメーションを実現できるといったことで、話題を呼びました。しかし、アニメーションを実現するだけならば、Javaを使うまでもなく、ShockWaveなどのブラウザ拡張用のプラグインで対応することもできます。Javaの本当の魅力は、WWWのシステムをオブジェクト指向技術を用いることで、安全かつ柔軟に拡張できるということにあります。

従来ではWebブラウザにロードされる情報は、HTMLで書かれたものがページが主でした。WWWブラウザはHTMLに埋め込まれたタグを解析し、適切なフォーマットに整形して表示します。

WWWのシステムでは、HTMLタグを解釈できるブラウザでさえあれば、ユーザはクライアントのOSやブラウザの種類などを気にせずに、サーバ側の情報を表示可能になったわけです。しかし、このアプローチだけでは、拡張性という点で不十分なところがあります。例えば、サーバ側で、新たな機能を実現するために独自のHTMLタグを新規に追加したとします。この場合、情報にアクセスするクライアントのブラウザ側でも、その新たなタグを解釈できるようになっていなければなりません。これでは、サーバに置かれているHTMLタグに合わせて、クライアントのブラウザを選ばなければならないという、矛盾した問題が生じてくることになります。標準のHTMLでは実現できないような機能をクライアント側に提供したい場合、ユーザは特別な意識をはらう必要がないというのが、理想的な形態です。このためには、機能を実現する部分が、ブラウザとは独立していることが必要になってきます。

Appletは、Javaで記述されたプログラムとして、WWWサーバ側に置かれています。ブラウザはAppletを通常のファイルと同じようにクライアントに読み込みます。しかしAppletは、それ自体が実行能力をもったプログラムであるため、ブラウザ自体とは独立して、機能を提供することが可能になります。

通常、Javaアプレットは <APPLET>タグにより、HTMLに埋め込めれます。例えば時計の機能を実現するアプレットをHTMLのページ上に埋め込みたい場合は以下のようになります。

<APPLET CODE="Clock.class" WIDHTH=100 HEIGHT=100>Clock</APPLET>

ブラウザは、HTMLを解釈する際に、アプレットがページ上のある位置に、100x100の大きさで表示するという情報のみを受け取ることになります。時計の具体的な処理に関しては、ブラウザからは一切隠され、Javaのプログラム(Clock.class)が自ら行うことになります。

様々な環境でアプレットが動作するためには、プログラムは、ブラウザが起動しているプラットフォームに依存しない中間的な形式の実行ファイルになっている必要があります。Clock.classは、バイトコードと呼ばれる中間的な実行形式であり、ブラウザに搭載されたJava仮想マシン(プラットフォームの違いを吸収するJavaの実行エンジン)上で動作します。仮想マシンはプラットフォームの違いを吸収するだけではなく、セキュリティ上でも重要な役割を果たします。インターネットの使用にあいてはあまり面識のないサーバ上から、Appletをダウンロードすることもありえます。その際にAppletにウイルス的な危険なことをされたりしないように、実行時にチェックがかかる仕組みになっているのです。

Javaの分散環境でのシステム構築に適したこの他の事項としては、Interfaceという言語仕様上の特徴があります。これは、クラスの実装とは独立して、クラスの利用者側から見たサービスを規定するものです。最近はJavaを単にクライアント側でAppletとして実行させるだけでなく、サーバ側で実行させ、互いに通信をさせることも試みられてきています。サーバ側で実行されるJavaプログラムはServletとよばれます。AppletとServletを使用することで、3階層のWWWシステムをさらにスケーラブルな多階層へと押し上げていくことが可能です。このような分散環境においては、オブジェクトのメッセージの送信先が、利用者側に存在しないことが多くなるのですが、Interfaceを有効に使ったJavaプログラムでは、クライアントがサーバの実装から独立できるため、サーバオブジェクトの変更に左右されずにサービスを利用することができます。


© 1998 OGIS-RI Co., Ltd.
Prev Index Next
Prev. Index Next