プログラミング言語マスターへの道


Java(3)

1994年の6月から7月にかけて、ジョン・ゲージと、ジェームズ・ゴスリン、ビル・ジョイ、パトリック・ノートン、ウェイン・ロジン、エリック・シュミットの間で、3日間かけてブレインストーミングを行い、プロジェクトチームはウェブの世界に主眼を置くという方針変更を行いました。
彼らは、革新的なウェブブラウザである NCSA Mosaic の出現を目の当たりにし、ウェブを含むインターネットの世界は、ケーブルテレビの世界に劣らず、高度にインタラクティブな媒体に発展しつつあると認識するようになりました。Oakを使ったプロトタイプとして、ノートンはWebRunnerという小さなウェブブラウザを開発しました。このウェブブラウザの名称は後に「HotJava」と変更されます。
ウェブページにJavaアプレットという小さなJavaプログラムを埋め込んでおいて、ウェブブラウザHotJavaでそのページにアクセスすると、HotJava上でアニメーションの表示やマウスによるインタラクティブな操作ができました。同年、チームはOakの名称をJavaに変更しました。変更の理由は、商標を調べて、"Oak" という名前がすでにビデオカードアダプタの製造会社 (Oak Technology) によって使われていたことが判明したからです。

名前の由来

Javaという名称は、一部のチームメンバーがよく出入りしていた近くのコーヒーショップで命名されたといわれています。この名称が、何かの頭字語であるかどうかについては、よく分かっていませんが、下記のような諸説があります。

Javaの名前の由来説
頭字語ではないとの説が一般的に受けいれられています。
近くのコーヒーショップで供されていたコーヒーのブランドに由来すると考える人が多くいます。その根拠は、Java のクラスファイル(中間言語のバイトコード)の最初の4バイトが十六進記数法で必ず「0xCAFEBABE」となっている事です。
また、アメリカ英語においてはcoffeeを意味する一般名詞です。ただし一部では、James Gosling, Arthur Van Hoff, and Andy Bechtolsheimの頭字語との説があります。
また、Just Another Vague Acronymの頭字語との説もあります。

1994年のJava

1994年10月に、HotJavaとJavaプラットフォームが、サン・マイクロシステムズの幹部社員の前でデモンストレーションされました。そして1994年内に Java 1.0a(アルファ版)がダウンロードできるようになりました。

1995年のJava

JavaとHotJavaが最初に公的な場で公表されたのは、1995年5月23日のSunWorldカンファレンスでした。サンは、Javaで記述されたウェブブラウザHotJavaを使って、JavaとJavaアプレットの技術により、ウェブページ内でアニメーションの表示やマウスによるインタラクティブな操作が可能であることをアピールしました。カンファレンスでアナウンスを行ったのは、サンの技術部長ジョン・ゲージです。
このカンファレンスではまた、ゲージのアナウンスに関連する、当時のネットスケープコミュニケーションズの上級副社長マーク・アンドリーセンによるアナウンスが人々を驚かせました。それは、ネットスケープが自社のウェブブラウザである「Netscape Navigator」に Java の実行機能を追加する予定だというもでした。このアナウンスにより情報技術の世界でJava技術は広く知られるようになりました。
1995年秋には Java 1.0 のベータ版が公開されました。1996年1月9日にサンは、Java技術の開発を行うJavaSoft部門を立ち上げました。その2週間後に、最初の正式バージョンであるJava 1.0がリリースされました。

Javaとビル・ジョイ

サンの技術者ビル・ジョイは、ゼロックスのパロアルト研究所でAltoというワークステーション試作機のために開発されたプログラミング言語・Mesaと C の良いとこどりをした新しいプログラミング言語を構想していました。ジョイは Further という名前で呼ばれる論文を書き、自社で C++ に基づいたオブジェクト指向環境を開発するべきであることを進言しました。まずジェームズ・ゴスリンが C++ を改変し拡張することを試みました。ゴスリンはこの拡張版C++を、"C++ ++ --" と名付けました。
しかし、ゴスリンは、すぐにこの拡張版C++の開発を中止して、全く新しいプログラミング言語を開発する方針を採ることにしました。
ゴスリンはこの新しい言語に「Oak」という名前をつけました。この名前の由来は、ゴスリンのオフィスのすぐそばにオークの木が立っていたことによるといわれています。

クライアント側のJava(1)

ウェブブラウザでJavaアプレットを実行する技術は、広く使われています。Javaアプレットは、ブラウザ(ウェブのクライアント側)がウェブページ内でアニメーションの表示やマウスによるインタラクティブな操作を可能とする技術です。ただし、いくつかの有力な競合技術も存在します。
近年では、Yahoo! Games やビデオプレイヤーなどのアプリケーションで、Javaアプレットを採用する事例が多くあります。簡単でインタラクティブなアニメーション用には、JavaアプレットよりもGIF89aやAdobe Flashを採用する事例が多くあります。
この分野においては、最近では Ajax も普及しつつあります。Ajaxアプリケーションの作成に欠かせないJavascriptの開発では、Java開発で一般的に用いられているほどドキュメントや技術が成熟した標準ライブラリ、サードパーティライブラリ、IDE、単体テストツールなどの開発環境がありませんが、Java開発環境を利用してJavascriptによるAjaxウェブアプリケーションを開発するツールとしてGoogle Web Toolkitを用いることができます。

GWTコンパイラ

GWTコンパイラはJavaソースコードをバイトコードの代わりにJavascriptにコンパイルし、ブラウザのJavascript解釈エンジンをあたかもJVMのように活用することを可能にします。
これによりJavaを用いてブラウザ上で動作するデスクトップアプリケーションと遜色ないウェブアプリケーションを作成することが可能となっています。

クライアント側のJava(2)

HTML5によって導入されるデータベースのWeb Storage、ファイルAPI、クライアントハードウェアの位置情報を得るジオロケーション、Javascriptをマルチスレッドで起動するWeb workerなどのクライアント側技術はJavascriptによる呼び出しを前提としています。
GWTやサードパーティのGWTライブラリはHTML5APIのJavaラッパーを提供しており、開発者は複雑なクライアント側プログラムをJavaのIDEでデバッグ、テストしながら開発し、最適化されたJavascriptにコンパイルして実行させることができます。
2011年Adobe社は携帯向けのFlash開発を断念し、HTML5にクライアント側技術の焦点を変更した。携帯機器を含めると2012年現在ではFlashよりもJavascriptが普及してはいますが、Flashほど充実した開発環境やライブラリはありません。アプレットはFlashよりも普及していません。
GWTはJavascriptの普及度とJavaの充実した開発環境の両方を用いることができるため、Java経験者のリッチクライアント作成ツールとしてアプレットに取って代わる存在となりつつあります。

問題と解決方

Javaアプレットを使用したサイトを表示すると、数十秒〜数分間操作を受け付けないブラウザが存在しました。近年は、JavaおよびJavaアプレットの技術の向上により、環境によって動作が異なったり、実行速度、特に画面の描画が遅いという問題が解消されつつあります。