2006 年 9 月 13 日 23 時 57 分

WWW と Java


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


今でこそ有名になった Java だが、
WWW での Java の普及には長い道のりがあった。

Java は、Sun Microsystems が提唱した、
プログラミング言語と、処理系の技術規格である。

言語としての Java は C++ を参考に作られ、
言語側に高度なメモリ管理機能を備えた、
完全オブジェクト指向の言語である。

また、実行系としてはコンパイル型言語であるが、
これが出力するのは擬似的な機械語とファイル形式であり、
特定の CPU や OS に依存しないように作られている。
この機械語は、Java バイトコードと呼ばれ、
通常、クラスファイルとして出力される。

Java のバイトコードは、実行する際に、
バイトコードを解釈する処理プログラムによって、
その環境の CPU の機械語に変換されて実行される。
この処理プログラムのことを Java 仮想マシンと呼び、
仮想マシンが OS や CPU の違いを吸収しているため、
プログラマが OS の差異を意識する必要はない。

C 言語などのコンパイラでは、特定の CPU 用の機械語と、
特定の OS で実行可能な形式のファイルを出力するため、
作成されたファイルは、その環境でしか実行できない。

Java の場合は、通常は CPU、OS 非依存である、
Java バイトコードの状態で配布するため、
OS に関係なく実行可能というのが大きな特徴である。

Java は、オブジェクト指向と自動メモリ管理による開発性、
ソーステキストで持ち運べるスクリプト言語の可搬性と、
機械語を出力するコンパイル言語の実行性能と、
他の言語の良いところをうまく採用している。

Java が最初に WWW で利用されたのは、
Java アプレットという形であった。
Java アプレットは、別のプログラムに埋め込まれて
実行される GUI を持つ小さなプログラムのことである。

Web ブラウザの Netscape Navigator が、
最初に Java アプレットの実行機能を搭載した。
レイアウトの一部として埋め込み可能で、
HTML の <applet> 要素として参照させる。

Java アプレットは HTTP 経由でバイトコードで配布され、
Web ブラウザ上で、利用者の環境で実行される。
Java が OS 非依存であることをうまく生かしている。

当時、Web ブラウザで動的な表現をするためには、
GIF によるアニメーションや、
JavaScript による動的な画像の置き換えしかなかったが、
Java アプレットを使えば、自由度が高く、
非常に高い表現力が得られたため、そこそこ普及した。

しかし、Java にとっては少し時代が悪かった。

当初の Java 仮想マシン (Java VM) は、
バイトコードを実行時に順番に解析して実行する、
いわゆるインタプリタ式が主流であったため、
マシンの性能はそれほど高くない当時、
複雑なコードで構成された Java アプレットは、
実行速度に難があることが多かった。

また、Java の思想が浸透していなかったこともあり、
各社 Java VM の実装がばらばらであった。

Sun Microsystems の意向に反し、
Java で定義されている要求仕様を満たしておらず、
Java 規格内で作成された Java アプレットにもかかわらず
実行できない Java VM が存在した。

また、逆に Java VM を独自拡張をしており、
Java アプレットを作成するソフトウェアと組み合わせて、
特定の Java VM 依存の拡張コードを吐かせ、
他の Java VM が実行できないコードを生成する環境もあった。

Microsoft と Sun の Java 訴訟問題は有名な例である。

これら、Java VM の問題が山積みであったため、
Java の OS 非依存というのは理想論であり、
現実的には使えないという悪いイメージを与えてしまった。

そのため、Java はクライアント側での利用から、
一時撤退を余儀なくされることになる。

現在では、Web ブラウザ上の動的表現としては、
表示のデザインとプログラミングのバランスで、
完全に Adobe Flash がその座を独占しているが、
古くからある学術系の Web サイトなど、
まだまだ Java アプレットを使ったページも存在する。

当初、Java の OS 非依存というのは、
クライアント側に適した技術と考えられていたのだが、
SSJS や ASP が出現する中、
サーバ側での Java の利用技術も発展することになる。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.