|
 |
新しいプログラミング言語として注目を集めるJava™。当初はインターネットのホームページでアニメーションが動く技術として注目された。しかし、その後、Javaの将来性を高く評価した開発者たちの努力が続けられ、現在では企業システムにおける適用が進み、e-ビジネス時代の新しいプラットフォームとしての地位を確立しつつある。IBM 東京基礎研究所は早くからJava技術の開発、特にJIT(ジャスト・イン・タイム)コンパイラーの開発に取り組んでおり、その成果はWebSphere® をはじめとするIBM 製品の性能向上に大きく貢献している。
|
|
この記事は、日本アイ・ビー・エム鰍ェ発行するIBMユーザー研究会の会員誌『IBM USERS』の6月号に掲載された内容を、TRLが再編集したものです。
|
 |
|
インターネットが救いの女神
|
 |
Javaの特長は、その誕生物語の中に読みとることができる。
Javaは、1995年5月に開催された「SunWorld '95」で、新しいオブジェクト指向プログラム言語として発表された。元来、米Sun Microsystems社の社内プロジェクトで研究されていたもので、ホーム・オートメーションの時代をにらみ、テレビや電話機といった家電をコントロールする軽いソフトウェアを作るためのプログラム言語として開発された。
しかし、家電の世界では数多いメーカーの製品が混在するため、プロジェクトの開発目標は、次第に「作成したプログラムがどのようなコンピューターのプラットフォームにでも共通に適用できること」に変わっていく。そして構想されたのが「配信したプログラムを、実行時にその環境に合わせて変換する」というアイデアだった。これを実現するため、プログラムのソースコードを中間言語に変換し、各プラットフォームで実行する際にJava仮想マシンを通じて機械語にコンパイル(翻訳)される、という方法が生み出された。
このアイデアは素晴らしいものだったが、大きな問題が1つあった。中間言語に変換したコードや仮想マシンを配布する手段がなかったのである。そこに突如として救いの女神が現われた。インターネットの爆発的な普及だ。
プロジェクトはこれによって一気に勢いづき、より広い環境に対応するマルチ・プラットフォームな共通言語「Java」を誕生させる。そして、ブラウザーのNetscapeNavigatorがJava仮想マシンを組み込んだことによって、この新しいプログラム言語は飛躍的に拡大していく。
 |
|
コードを再利用してパフォーマンスを高める「JITコンパイラー」
|
 |
Javaに対するIBMの反応は速かった。メインフレームからUNIX®、PCまで、幅広いプラットフォームをカバーするIBMにとって、Javaのような汎用言語の登場は願ってもない。日本IBM 東京基礎研究所(TRL)は、Javaが発表されたその年のうちに重要な言語と位置づけて、開発・普及に取り組むことを決定した。当初からリーダーとしてプロジェクトに携わってきた中谷登志男氏(技術理事、TRL ネットワーク・コンピューティング・プラットフォーム担当)は、次のように振り返る。
「それまで取り組んできたHPF (High Performance FORTRAN)コンパイラーの研究で培った技術を有効に生かせるということで、すぐに飛びつきました。IBMとしては、マルチ・プラットフォームを統一してサポートでき、ソフトウェア開発の効率化にも結びつく。しかも、どのプラットフォームについても、お客様に同じサービスを提供できる。技術的には、各プラットフォームに固定された長い歴史をもつ静的コンパイラーに対して、Javaは実行環境で初めてコンパイルする動的コンパイラーだという点が大きなパラダイムシフトであり、未知の世界への挑戦に心が踊りました」
未知の言語Javaが認知されたのは、IBMの参加が大きかった。それによって、業界の実質的な標準になるかもしれないという雰囲気が一気に拡がり、多くの開発者の関心をJavaに向けさせた。
Javaは、プログラマーが書いたソースコードを中間言語としての「バイトコード」に変換して配信し、各プラットフォームで実行するときに、必要なプログラムだけを動的に(ジャスト・イン・タイムに)最適な機械語にコンパイルするため、どのプラットフォームにも対応できる。その代わりに中間言語から機械語にコンパイルするための処理時間を必要とする。それが動作が遅いという欠点となって現われ、Java普及の大きなネックとなってきた。
中谷氏とともに当初からJavaプロジェクトに参画し、技術を担当してきた小松秀昭氏(シニア・テクニカル・スタッフ・メンバー)は、TRLのJITコンパイラーの優れた特長を次のように語る。
「Javaでは、コンパイルすればするほど、全体の実行時間は長くなってしまいます。そこで、プログラムの動きをモニタリングして重要な部分を抽出し、そこに集中的に最適化をかけてコンパイルする努力をしてきました」
TRLは、この分野で他社の追随を許さないノウハウと実績を誇る。
対象を絞り、本当に重要なものだけを時間をかけてコンパイルするアプローチを「セレクティブ(選択的)・コンパイレーション」というが、「どれが実行されるか分からなければ、全体をまんべんなくコンパイルするしかありませんが、わたしたちは、よく実行されるパスを自動抽出できるので、最近では2割程度しかコンパイルしません。そのため、これまで静的コンパイラーでもできなかった速いコードを出せるようになっています」と小松氏。
TRLが開発した、プログラムの中で繰り返し処理する部分を選択的にコンパイルする技術、Mixed Mode Interpreter (MMI)によって、実行コードを小さく抑えて、初期化やプログラム起動に要する時間を劇的に短縮できる。TRLでは、IBMが提供するLinuxを含むすべてのJavaプラットフォームに対して、JITコンパイラーを提供し、Java仮想マシンやMMIとともに改良を加えながら、新しいバージョンを発表している。
「これまでは倍々のスピードアップを達成し、あと2割程度速くできるかどうかというところです」と中谷氏。
処理速度についてはJava連合各社間でのつばぜり合いが展開されているが、IBMは常に先頭グループをリードしている。一例として、ベンチマーク・テストの1つである「SPEC JBB2000」において、昨年12月、32WayのIBM pSeries690が、72WayのSun Fire15Kを凌駕した。
 |
|
Web時代の標準プラットフォームへ
|
 |
Java技術は今、企業システム分野に着実に浸透しつつある。Webコンピューティングに有用な機能を、Java技術が提供してくれるからだ。
Javaではメモリー管理が自動化されているため、プログラマーはバグ取りに追われることなく品質と生産性を向上できる。また、企業システム構築に必要なクラス・ライブラリー(Java API)がそろっており、Enterprise JavaBeans(EJB™)は企業システムをJavaベースで開発する基本機能を提供している。さらに、GUI、ネットワーク、主要データベース製品への接続などの機能も備わっている。近い将来、JavaがWeb時代の標準プログラミング言語となる可能性が大きいといえるだろう。
「Javaは、これからのアプリケーション用開発言語の中心的存在として位置づけられています。最近では、学生もJavaを必ず勉強するという傾向があります。いずれ、数値計算にもJavaが使われるようになるでしょう。これから展開されていくグリッド・コンピューティングでは、さまざまなプラットフォームをつなぐうえでJavaが最適の共通言語となります。まだまだ解決すべき課題もありますが、Javaなしにこれからのコンピューティングを語ることはできなくなっています」と中谷氏は今後を展望する。
小松氏は、Javaに潜むダイナミズムについて次のように期待を寄せる。
「これまでのJavaは、C/C++流の書き方が一般的だったので、それに対して最適化をかけてきました。しかし、今後Javaらしい、本来的な書き方が主流になったとき、これまでの蓄積の上に新たな最適化を追求していかなければならないかもしれません。そのような事態にダイナミックに対応して、わたしたちのJITコンパイラーを進化させていけるのが、Javaの素晴らしいところです」
このようなJavaの将来を見据えて、TRLのJavaプロジェクト・チームは次のステップへと技術開発のサーチライトを向けている。

中谷登志男(なかたに・としお)
日本アイ・ビー・エム 東京基礎研究所 ネットワーク・コンピューティング・プラットフォーム担当。技術理事。工学博士。1975年に入社し、野洲工場に勤務。1983年から4年間、米国プリンストン大学大学院(コンピュータ・サイエンス学科)に留学。帰国後、東京基礎研究所に移り、VLIWコンパイラー(C言語)、HPFコンパイラー(FORTRAN言語)、JITコンパイラー(Java言語)のプロジェクトを指揮する。一貫して、プログラムを最適化して高速に実行させるための新しいソフトウェア技術を研究。
小松秀昭(こまつ・ひであき)
日本アイ・ビー・エム 東京基礎研究所 ネットワーク・コンピューティング・プラットフォーム主幹研究員。IBMシニア・テクニカル・スタッフメンバー。工学博士。1985年入社。東京基礎研究所でPrologコンパイラー、HPFコンパイラー、Java JITコンパイラー、命令並列アーキテクチャーの研究等に従事。
■関連ホームページ
東京基礎研究所(TRL) の 『Java JITコンパイラー・プロジェクトの概要』
http://www.trl.ibm.com/projects/jit/
Back to top
|