「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします(編集部)
Javaは、1995年5月23日に開催されたデベロッパーカンファレンス「Sun World Expo」で初めて一般に公表されました。
Java言語はもともと「Oak」というプログラミング言語に由来しています。1990年12月にスタートしたGreen Projectの一環として情報家電を制御するために開発された言語がOakでした。これはオフィスの窓から樫の木(Oak)が見えたことに由来しているようです。その後、Oakの商標がすでに使われていることが分かり、「Java」に改名されました。
「Java」という言葉になった由来は、どうもはっきりとせず、諸説あります(参考:Java Technology: The Early Years)。
現在、Javaは単なる1つのコンピュータ言語にとどまらず多くのものに影響を与えています。Javaが影響を受けたプログラミング言語である「Smalltalk」の時代以前から、「Virtual Machine」(仮想マシン。以下、VM)という概念(環境)は考えられ、利用されてきました。PascalからPコードへのコンパイラと、Pコードインタプリタからなる、中間言語コンパイラも、いまにして考えると、Javaバイトコード的な扱いであったと振り返ることができます。
「Javaの父」と呼ばれるJames Gosling氏が考えていたJavaのポリシーの1つに「Architecture Neutral : マシン環境に依存しない」というものがありました。Java VMとJavaバイトコードはそれを具現化する最良の仕組みでもあったのです。
1995〜1996年のJavaが登場した年は、ほかにも以下のような言語が登場してきました。意外とJavaの登場は古い時代だったとの印象を受けるのではないでしょうか。
Java黎明(れいめい)期のスローガンは以下のものでした。
Write once , run anywhere .
(一度書けば、どの環境でも動く)
プラットフォームに依存しないプログラミング言語として多くのプログラマーに期待を抱かせ、「理想」とも思える環境を夢見させたスローガンでもありました。
その一方、実際は夢のようなことはいっていられず、「そこら中でデバッグ・テストしなければいけない」(Write once, debug/test everywhere.)と揶揄(やゆ)されることもありました。その原因は、どこでも動くはずのJava VM環境が、その仕組み上OS環境ごとに違い、Java VMの実装もライセンスを受けたさまざまなベンダが手掛けたことに由来しています。
そのまた一方で、Java/Java VMの思想は、その後のさまざまなプログラミング言語に影響を与えていきました。
Javaの開発環境であるJDK(Java Development Kit)、Javaの実行環境であるJRE(Java Runtime Environment)は数多くのOS向けに用意され、オープンソースのものから、メーカー製のものまで数多く存在します。基本はリファレンス実装の米サン・マイクロシステムズ製のものが広く使われています。
年月 | 出来事 | コードネーム | |
---|---|---|---|
1995年 5月 | 米サン・マイクロシステムズがJavaを正式発表 | ||
1996年 2月 | JDK 1.0リリース | ||
1997年 2月 | JDK 1.1リリース | ||
1998年 2月 | JDK 1.2リリース | ||
1998年 4月 | JIT(Just In Time)コンパイラリリース | ||
1999年 4月 | HotSpotリリース | ||
2000年 5月 | JDK 1.3リリース | Kestrel | |
2002年 3月 | JDK 1.4リリース | Merlin | |
2004年 9月 | JDK 5.0リリース | Tiger | |
2006年11月 | Java SEとJava MEをオープンソース化(GPL 2) | ||
2006年12月 | JDK 6.0リリース | Mustang | |
2007年 5月 | JDK 7.0(OpenJDK)発表 | Dolphin | |
Javaの黎明(れいめい)期、多くの人々にJavaが知られ、広まった理由の1つは、WebブラウザにJava VMが組み込まれたことにあるでしょう。その当時のWebブラウザ開発のエキサイティングな様子は、雑誌『Wired』の古い記事「The Java Saga」で読むことができます。
Webブラウザ上で動作するJavaアプレットの勢いも借りて、各OSベンダが米サン・マイクロシステムズからライセンス提供を受け、各OSプラットフォーム用のJava環境が続々とリリースされます。
その一方、米マイクロソフトのWebブラウザ「Internet Explorer」(以下、IE)にJava VMが組み込まれたことは、歓迎とともに混乱を招きました。米マイクロソフトが提供したWindows 95/NT用のJava VM((MSJVM))が持つ「J/Direct」機能は高性能ながら、Win32 APIを直接呼び出せるという米マイクロソフト独自の実装が加えられていました。このJ/DirectはIE 4.0に含まれてリリースされました。ちょうどそのころ各ベンダから「100% Pure Java」を支持する動きもありました。
その後、1997年10月にIE 4.0がJavaの互換性テストに劣るとして米サン・マイクロシステムズが米マイクロソフトを提訴しました。1998年11月に、米マイクロソフトがJava訴訟で敗訴の仮決定がされ、これを受けてIE用Java VMの改訂版がリリースされました。2004年4月には和解しましたが、結果として現在、通常の方法でMicrosoft Java VMを入手できません(参考「MSJVM の移行に関するよく寄せられる質問」)。
2006年11月にJava SEとJava MEがGPL 2の下、完全にオープンソース化しました。
それまでは、公式には対応していない特殊なプラットフォーム(CPU)や米サン・マイクロシステムズのJava VMが大きくなり過ぎたことに反発し、数多くのJava環境がリリースされました。中には自由に組み込めるライセンス方式を求めたものや、純粋な研究目的のものもあります。2008年9月現在も開発(メンテナンス)が続いており、安心して利用できるものも数多くあります。
また、各企業が自社製品と親和性を高く特化した領域で高性能なサーバサイド専用のJava VMや携帯電話や家電製品に特化したJava VM、より高速に動作するJava VM環境などを商品化してきています。以下、アルファベット順でリストにしてみました。
2008年9月現在のJava VM環境を網羅したつもりですが、抜けがあるかもしれません。読者がいま開発を行っている環境ではどのVMが使われているのか、調べてみてはいかがでしょうか。
2007年11月に発表された米Google(とAn Open Handset Alliance Project)が提供する携帯電話環境であるGoogle AndroidもJavaの血筋を引いたものです。Androidのアプリケーションは「Dalvik virtual machine」という専用のJava VM上で動作します。
Javaのコードは、「Dalvik実行形式ファイル(.dex)」というjarファイルよりもコンパクトで展開の速い独自の「バイトコード」にコンパイルされ、Dalvik VM上で動かすことができます。Dalvik VMは携帯電話などの、遅いCPUや、少ないメモリの環境でも動作するようスリム化されたもので、簡素なアーキティクチャを指向している環境です。
またライセンス形式は、Apache Licenseで提供され、携帯電話各メーカーが商用利用の際、コード改変できるようになっています。
2008年7月に日本でも3GのiPhoneが発売され、大きな騒ぎとなりました。開発者にとってもう1つの話題は、iPhone SDKで開発したアプリケーションがアップルのAppStoreを通じ、安価な手数料で全世界に配布・販売できることでした。
米サン・マイクロシステムズのJava Marketing VPのEric Klein氏もiPhone向けのJava環境をリリースしたいとコメントしていましたが、実際はそう簡単にコトは進まないようです。
理由はiPhone SDKやAppStoreのアプリケーション配布に関する仕組みや制限によるものです。iPhone上でJava VMを動作させることは自体は技術的には可能だそうです。ところが、現在のiPhoneアプリケーションの配布体系や制約を考えると、Java VM上で動作するJavaアプリやJavaツールを配布する方法がないのです。このことに関して米サン・マイクロシステムズは2008年9月現在も米アップルと交渉中と伝え聞いています。
Javaには、Java ME環境から携帯電話に必要な機能に特化した「phoneME」」が整いつつあり、iPhoneがJavaプラットフォームとして利用できれば、既存のアプリケーション資産も含め、より多くのモバイルアプリケーションの登場が期待されます。
Java VMは、もともとJavaを動作させるために設計されたため、Java言語以外のプログラミング言語を実行するのにはあまり適していません。ところが、開発者の要求はJava VMにおけるスクリプト言語のサポートまで広がっており、「the Da Vinci Machine Project」を中心として、数々のスクリプト言語がJava VM上で動作するようになってきています。代表的なものをいくつか挙げてみました(アルファベット順)。
またネイティブコンパイラ自身も、llvm(Low Level Virtual Machine)のような、言語に対してVM環境を用意し、言語やプラットフォームとは独立した最適化を行うコンパイラ基盤も一般化してきています。
サーバ環境の構築には、台数分だけコンピュータが陣取る形態から、VMwareなどの仮想環境で、効率よくまとめる事例も多くなってきました。また、「many core / multi core」のCPU環境も、VM利用の流れを促進していると思われます。携帯電話などの組み込みデバイス環境も一昔前のパソコン並みの性能を誇っています。
一風変わった例としては、携帯電話用のフルブラウザ「jig ブラウザ」はWebブラウザ内に独自のJava VMを持ち、Javaアプレット風の小さなアプリケーションが動作するような2重構造を持ったVM環境も実現されてきています。
Javaはもうすでに「新しい」ものではなくなってきています。数多くの企業や教育機関で利用され、初めて学ぶプログラミング言語がJavaというプログラマーも多くなってきていることでしょう。コンピュータの細かな環境を気にすることなく(それはそれで技術的には大切な事柄ですが)手軽に最大限のパフォーマンスを引き出しつつ、アプリケーションやサービスを提供する日がやって来ているのです。
Javaが黎明(れいめい)期に目指した「Write once, run anywhere.」の時代がいまこそやって来るのかもしれませんね。
次回は2008年11月初めごろに公開の予定です。内容は未定ですが、読者の皆さんの興味を引き、役立つ記事にする予定です。何か取り上げてほしい内容などリクエストがありましたら、編集部や@ITの掲示板までお知らせください。次回もどうぞよろしく。
安藤幸央(あんどう ゆきお)
1970年北海道生まれ。現在、株式会社エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。
ホームページ
Java News.jp(Javaに関する最新ニュース)
所属団体
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)
主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
「The Java3D API仕様」(監修、アスキー)
Copyright © ITmedia, Inc. All Rights Reserved.