"Other Languages Not Java"

Tim Bray氏が力を入れている2つ目のプロジェクトが、"Javaでない別の言語"の開発だという。Javaの動向に敏感な読者ならば、これがRubyやPython、PHPなどの動的言語に関連した話だとすぐに気づくだろう。このプロジェクトが目指すものは以下の2点。

  • これらの言語の開発者をJavaに迎え入れること
  • Javaでこれらの言語のネイティブな文法をサポートすること

前者は、要するにRubyやPythonといった動的言語のJVM上で動作する実装を提供することである。JRubyやJythonなどが行っている試みがこれに該当する。とくにTim Bray氏は以前よりJRubyを強く推奨しており、これが多言語化に対応するためのサポートになると指摘してきた。今後は(ネイティブの)RubyコミュニティとJRubyコミュニティが連携していく方向も考えているという。

後者はJava SE 6で導入されたJSR 223のような試みである。JSR 223はJavaプログラミング中でスクリプト言語を使用するための標準仕様で、Java SE 6ではJavaScriptを使うことができるようになった。今後はRubyやPythonなどといった言語もサポートしていくだろう。

また、Javaプラットフォームの動向としては今後JVMにおいて動的言語をサポートしていこうという動きがある。具体的にはJSR-292としてその仕様の策定がスタートしている。これはパフォーマンス面でJRubyやJythonにも大きな影響を与えるだろうと同氏は指摘する。ただし、JRubyなどが目指すのはあくまでも今のJVMにおいて動的言語を実装することだという。これはすでに現時点で高いレベルまで完成度をもっており、近いうちにメインストリームに乗ってくると同氏は言う。JavaOneで行われるテクニカルセッションでもその一端を見ることができるかもしれない。

並列プログラミング

Tim Bray氏が注力する技術の3つ目は"Concurrency Programming"だ。近年のコンピュータの高速化について同氏は「コンピュータそのものが速くなっているのではなく、並列化によって高速化を実現している」と指摘する。実際、多くベンダがマルチコアプロセッサの開発に注力している。

しかし、一般のプログラマが並列プログラミングを習得するのは(現在の段階では)きわめて難しい。単純なプログラミングの複雑さから、並列化コードのデバッグの難しさ、テスト環境のサポートなど問題は多岐に渡る。この点をJavaが言語としてうまくサポートできないかというのが同氏の狙いだ。例えばJava EEが最適化された並列化ライブラリを備えるようになれば、エンタープライズアプリケーションの開発者は並列プログラミングの煩わしさから開放される。

最後におなじみのテンガロンハットで

残念ながら、これに関してはまだ具体的な形となるアイデアは出ていないという。ただし、現時点で注目している技術として同氏はGoogleの提供する大規模分散処理システム「MapReduce」や、汎用的な並列化指向のプログラミング言語「ERLANG」などの名前を挙げた。これらに用いられている技術をJavaやRubyに取り入れられるかどうかという点は、今後検討の余地があると同氏は言う。

最後に、Tim Bray氏は日本のデベロッパに向けて次のようなメッセージを送った。「Javaは今後も消えないだろう。Rubyも死なない。おそらくCOBOLも生き残る。つまり、これからは多言語の時代になる。我々が手掛けているJRubyは、そのような時代を勝ち抜くための手助けになるだろう」