実行スピードに挑戦する
Javaアーキテクチャの変遷をたどる
塩野誠
日本ヒューレット・パッカード
2003/12/11
Javaの歴史は、Javaの実行環境であるJava VMの実行スピードへの挑戦の歴史だったといっても過言ではない。速く実行するためのJava
VMのアーキテクチャの変遷をたどることで、Java VMへの理解をより深めることができる。(編集局) |
Javaの歴史 |
Javaは、1995年5月23日に開催された「Sun World Expo」のデベロッパーカンファレンスで公表された。「Java誕生のページ」によれば、この日がJavaの誕生日であるとされている。サン・マイクロシステムズがいうのだから間違いないが、もともとJavaの前身はOakという言語である。Oakは1990年12月にスタートしたGreen Projectの一環として開発された言語である。Javaが1995年に生まれたなら、Oakが誕生した1990年にはすでに受胎していたことになる。私には、Green Projectのおなかの中で、日の目を見るべく温められていたという印象がある。
Javaフリークの皆さんにはおなじみのマスコット、“Duke”も、このGreen Projectの“重要な副産物”として、Green Projectのホームページに掲載されている。
ところでOakは、James Gosling氏がGreen Projectで家電製品への組み込み用の言語として開発したが、コストリダクションの厳しい家電業界において、コスト増を招くという理由であまり受け入れられなかったといわれている。実際Green Projectの主力な成果物である“*7”(StarSeven:大型PDAとでもいうべきか)も日の目を見ていない。ただ、ビジネス的な諸事情が絡んでいただけに、単に運がなかったという見方もあるだろう。しかし、あの大きさ、重さで、片手に持って操作できるのは体格の大きなアメリカ人だけだと思う。
余談はさておき、言語としてのOakの系譜をあえて表現するなら父親はC++、母親はSmalltalk(インタプリタという観点で)といった、オブジェクト指向言語の正統種と位置付けている人もいる。(父親がSmalltalkで母親がC++だろうか? いや、父親はC++で母親はGreen Projectだ!)。Gosling氏によれば、Oakはlispやそのほかの言語にも影響されているそうだ。初期のOakのマニュアルは、Green Projectのページに行けばPostScript(懐かしい!)のVer 0.2形式のものがダウンロードできる。
1995年5月に誕生したJavaは、1996年に開催された「JavaOne」において、80社以上の協賛企業、5000人以上の参加者を得て大盛況を収める。それはオープンソース、プラットフォーム非依存、ポインタを廃した開発者に優しいオブジェクト言語仕様が、Webの開発環境にぴったりだったことを象徴した大ブレークである。
歴史的に見れば、Javaの当初のポリシーは、Gosling氏のホームページにあるJava誕生当時の「original Java White Paper」に記載されている。そして、このポリシーは、現在に至っても生きている。それは以下のようなものだ(編集注:現在、Gosling氏のホームページは閉鎖されている。original Java White Paperは現在次のURLで参照することができる「Focus on Java:on Overview, original Java White Paper by James Gosling」)。
(1)Simple プログラマにとって単純で分かりやすい。 |
(2)Object-Oriented オブジェクト指向である。 |
(3)Distributed ネットワーク透過的で分散オブジェクトである。 |
(4)Robust 堅牢である。 |
(5)Secure 保護されている。 |
(6)Architecture Neutral マシン環境に依存しない。 |
(7)Portable データタイプが統一されている。 |
(8)Interpreted Javaのバイトコードを翻訳しながら実行する。 |
(9)High performance メモリ効率、動作速度で高性能である。 |
(10)Multithreaded マルチスレッドである。 |
(11)Dynamic 実行時に動的にクラスをロードする。 |
上記の11項目は、ホワイトペーパーに番号なしで書かれている。ここで書き添えた日本語は筆者が勝手に解釈して付け足したもので、詳しくはオリジナルを見てほしい。以下、この“偉大なるポリシー”の項目に沿って、次項以降でJava VMのアーキテクチャの変遷をご説明しよう。
1/2 |
INDEX |
||||||||||
実行スピードに挑戦するJavaアーキテクチャの変遷をたどる | ||||||||||
Page1 Javaの歴史 |
||||||||||
Page2
|
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|