« さる人、ねぇ… | トップページ | 明日(11/11)は文学フリマ »

2007.11.10

Javaの直面する曲がり角

Sun Tech Days 2007の基調講演のために、James Gosling氏が来日した。

マイコミ・ジャーナルの記事(11/8)

記事は意外に少ない。目立つメディアでは上記くらいか。
今回のSun Tech Daysでは、具体的な新技術発表の直後というわけでもなく(Java FXは半年前の発表である)、また基調講演以外の各トラックも、スペック・リードやR&Dエンジニアより、エヴァンジェリストによるもののほうが多かったからか(そのせいか、各トラックの講演者は明記されていなかった)。
マスコミとしては、携帯電話のソフトウェア・プラットフォームに打って出たGoogle、まとまった記者会見の場を設けたSymbian(モバイル機器向けOS、ことに携帯電話で大きなシェアを握る)、さらにPower 6 新ブレードサーバ発表のIBM、Windows Server 2008 β提供やWindows Liveサービス正式スタートがにぎやかなMicrosoftに目がいったのかもしれない(来週は組込み技術展示会ET 2007の脇で、MicrosoftはWindows Embedded関連のイベントもやる)。

ただし、Goslingの講演はおもしろいものだった。
すごく新味のあるものではない。むしろ、Java技術を採用している様々な分野について、広く概観したものだった。
じゃぁ何がおもしろかったのか。

***

Java技術の広がりが様々な分野に波及するにつれて、エンタープライズやWebサーバ、組込み機器、数が多いとは言えないがデスクトップアプリケーションなど、ほぼすべての分野・領域にまたがるようになった。
Javaは、コンピュータサイエンスの成果をバランスよく配合して、言語や実行環境を築き上げてきた。それは本来、業界ごとの都合や分野にとらわれるものでないのだから、分野を超えた広がりを持つのは当然とは言える。
一方で、各分野(エンタープライズの金融、また組込みの通信機器など)ごとの要件や慣習などがある。多くの場合、分野が異なれば要件が異なるため、採用される技術、設計の考え方、実装の詳細は異なる。

たとえばエンタープライス市場の多くは、多少のメモリやディスクの無駄は覚悟で、冗長性を持たせたハードウェア構成とし、ソフトウェアもそれに応じた巨大な規模とする。この場合、メモリをけちるなどマシンにやさしいプログラムよりも、処理を人間にわかりやすい単位に分割して、現実の仕組みと大きな齟齬のない設計となる を目指すことが多い。オンライン処理を含むなら、膨大な金をかけても、円滑かつ停止することのない設計が要求される。
一方、組込みの通信機器(具体的には携帯電話など)では、非力なCPUと少ないメモリで、数多くの処理をいっぺんにこなす必要がある。メモリを節約し、極力無駄を排除するような設計と実装が要求される(つまり、マシンに優しいプログラムとなる)。ただし、ユーザが触れるGUIの動作は、使いやすく、人に優しい設計が肝心になる(実装は省メモリと速度重視だけど)。

この対極的な二つの分野が、Javaを採り入れた開発を行うようになるとは、10年以上前には考えられなかった。
それを可能にしたのは、JavaをEnterprise, Standard, Embeddedの3分野に分け、言語と基本技術は変えずに、API(とVM)の違いを設けることで、適用しやすくしたことが大きい。また、JCP (Java Community Process)により、技術仕様をコミュニティによる協議で策定できるようになったことも、プラスに作用した。
ただし、1999〜2003年にかけて爆発的な広がりを見せ始めたため、逆に適用分野ごとに固まって、他の分野には関心を持たない傾向も出てきた。Goslingはこのことを気にしていたようで、仕様は分野ごとの垂直な協議で、ツールにより分野を横断した技術連携で、ということが念頭にあったように見受けた。

だからだろうか、リリース間近の開発ツールNetBeans 6.0では開発効率の高さだけでなく、どの分野のアプリケーションも一つのツールで書けることを、Rubyなどスクリプト言語、C/C++などが開発できることも含めて、訴えていた。実際、自身が開発したemacs(ただしUNIX版)を、「あれは30年前はいい道具だった」と否定してみせたくらいだ(が、これに感じ入るよりも一回り若い層のほうが主な聴講者だったのかもしれない)。
また、Java FXという技術は、改めて分野を横断することを強調していた。一見すると携帯電話の新しいプラットフォームのように見られたり、Flash (Adobe)やSilverlight (Microsoft)との競合技術に見られるし、それらも間違ってはいないのだが、むしろ一つの環境で動かせば、他に持っていきやすいことこそ、Goslingが考えていることの背景だろう。
かつて "Write once, run anywhere." といっていたが、今回はこうだ。
"Learn once, work anywhere."

彼の本当の夢がどこまで実現するかはわからない。
ただし、最近は分野ごとの要素技術ばかりに注目が集まっている。VMのことをまったく知らずに開発するのは本来、おそろしいことのはずなのに、最近はまかり通る、というよりそうでもしなければ人手を確保できない。そして、Javaをベースにしているのに、適用分野ごとに分かれていく。
なんでもすぐに分野ごとに分割してしまう今の状況に寂しさを感じる私としては、とても興味ある姿勢だ。

もう一つ。
GoslingはJavaのリアルタイム化にひどくこだわっている。NASAの火星探索機に直接携わったこともそうだし、Javaのプロトタイプ開発が組込み機器分野を対象にしていたこともある。
いまやRealtime Javaはミリ秒でなく、マイクロ秒単位の制御にも目を向けられるところに到達しつつある。それに、サーバ分野でも、オンライン処理ではリアルタイム応答性能が重要になってきている。
その意味でも、彼の視野はもう一度見直されてもいいように思う。

やっぱりおもしろい基調講演だった。

***

一方で、Javaの人々が強くスクリプトを意識していることもよくわかるイベントだった。
もちろん言語仕様にスクリプトが採り入れられることもあるが、JavaScriptやRubyなどが浸透していくこと、それらは開発効率が高く、細かい設計はさておき、書きながら作っていけること、ことにRubyは言語としての筋がよいことも、意識していると思われる。

Javaはコンピュータサイエンスの成果が流れ込んでいる。アカデミックな発想を持つ人には当たり前のことがかなりあるが、逆にある程度高度な設計思想や方法、技術を学び、適用できる技量が要求されることも意味する。
一方、現場では常に時間との闘いであり、筋は筋で大事だけど、とにかく速くこなしたい、という要求もある。
それは単にEoD (Ease of Development)やAPIだけでは賄いにくい。慣習をうまくふまえて記述自体を簡略化することが望まれている。だから、新設計のスクリプトに注目が集まる。
かといって、Javaも座視する気は毛頭ない。

そういう曲がり角の時期を概観できることを考えれば、かなりおもしろいイベントだった。

それにしても、最終日の夕方は、なんであんなに人が少なかったんだろう。もはやこういう場で対面して技術を考えることは、流行らなくなっているのか。
いや、今回はスペック・リードやコミュニティによるBoFがなかったからかもしれない。

|

« さる人、ねぇ… | トップページ | 明日(11/11)は文学フリマ »

コメント

少し訂正・補筆しました。

投稿: Studio KenKen | 2007.11.10 20:09

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/16751/17032589

この記事へのトラックバック一覧です: Javaの直面する曲がり角:

» 【 コンピュータサイエンス 】について最新のブログの口コミをまとめると [プレサーチ]
コンピュータサイエンスに関する最新ブログ、ユーチューブ、ネットショッピングからマッシュアップした口コミ情報を提供しています。 [続きを読む]

受信: 2007.11.10 20:55

« さる人、ねぇ… | トップページ | 明日(11/11)は文学フリマ »