Go to Contents Go to Java Page

JTC2004 Reports

 
 

2/19 第 2 日

 
 

昨日の参加者はだいたい 5,000 人だったそうです。

今日は朝一は普通のセッション。10 時から Keynote です。Keynote の MC は本当は Pat Sueltz だったらしいのですが、急病で来日できなくなってしまったそうです。

James Gosling も Rich Green も Video 出演ということで、ちょっとさびしいです。

今日の聴講したセッション

この中で興味深かったものに関してレポートしたいと思います。

 

 
 
Keynote Sun Microsystem James Gosling, Rich Green
稚内北星学園大学 丸山 不二夫
 
 

本当の順番とは違いますが、Video 出演の 2 人から。

James Gosling は現在の仕事の内容の紹介と、Mars Project の話。Rich Green がツールの話。特に Java Tools Community (JTC) やオープンソースなどに関して。

James Gosling は今まで研究所にいたのですが、ツール部門のトップになってしまいました。現在フォーカスを当てているのは次の 3 種類のツールです。

  • NetBeans
  • Java Studio Creator
  • Java Enterprise Studio

Java Studio Creator は以前は Rave と呼ばれていたものです。その他に NetBeans 用の J2ME 開発環境などがあるそうです。

Mars Project は彼が今まで JavaOne で何度も話していたり、メディアで取り上げられている、それほど目新しいことはないです。ローバの管制システムや Maestro などについて話をしていました。ローバ自体の制御は右のモータを 75 度動かすなどの比較的プリミティブな操作で行い、それをスクリプトとして実行させるのだそうです。

最後にリアルタイム組込みに関する事例が増えてきていること、またその事例として森林火災のデータ収集用のデバイスを紹介しました。とはいっても話だけですが。

このデバイスは野球のボールぐらいの大きさらしく、内部に無線やセンサなどを持っているようです。火災のときに飛行機から多数ばらまかれて、落ちたところで Jini を使用して情報を収集するらしいです。

Rich Green もツールの話しがメインで、JTC を通じてツール間のインタオペラビリティをはかっていきたいとしました。特に J2EE 開発におけるツールのインタオペラビリティについて重視しているようです。

Eclipse やオープンソースについて触れ、Eclipse に切りかえるには今まで Sun が NetBeans に対して行ってきた投資が無駄になってしまうことや、今後も協力できうる部分を Eclipse コミュニティと探っていきたいと述べました。

また、Sun がオープンソースコミュニティを作ることを java.net によって手助けしていくことを説明しました。

 

次に教育に関して丸山先生のスピーチで、稚内北星学園大学での Java 教育について説明を行いました。

特に実戦的な内容を重視しており、J2EE なども積極的にとり入れているらしいです。また、去年から行っている東京サテライト校についてふれました。主に社会人向けの講座なのですが、非常に好評らしいです。

最後に食堂のお兄さんの話になり、大学の学食で手伝いをしていた事務の人が Java のエキスパートで、今では Java を教える側になっているそうです。

 

その他に BEA の Scott Dietzen や Oracle の新宅氏のスピーチもあったのですが、全然おもしろくないので省略。

ただ、内容は全然おもしろくなかったのですが、Scott Dietzen のプレゼンテーションはとてもうまいです。今回の会場は横に長く、プレゼンをやりにくいのですが、それも感じさせないほどです。

特にアイコンタクトがすばらしい。常に聴衆に向かって喋り、それも一方向だけ向くのではなく、満遍なくすべての人に目を合わせているのではないかと思えるほどです。こういうのを私も見習わなくては。

 

 
 
一般セッション
虎の飼いならし方教えます - J2SE 1.5 Tiger -
Sun Microsystem Joshua Bloch, Neil Gafter
 
 

Programming Puzzler の 2 人ですが、この時間は Tiger に関して。Programing Puzzler は BOF のお楽しみ。

機能を紹介するのではなく、コードを書く上で気をつけなくてはいけないことなどより実戦的な話でした。残念だったのは、Metadata に関しては触れなかったことです。

まずは Generics。

コレクションで使われるのはよく知られていますが、リフレクションでも使われています。

Tiger では Foo.class のクラスは Class<Foo> になっています。したがって、次のような書き方が可能です。

    Foo foo = Foo.class.newInstance();

Metadata の Annotation を取得するのもメソッドは次のようにされています。

    public <A extends Annotation> A getAnnotation(Class<A> annotationClass);

Author という Annotation を取得するには次のように書きます。

    Author author = Othello.class.getAnnotation(Author.class);

Generics はコンパイル時にしか型の情報を使用しません。この利点としては

  • 既存のコードとのインターオペラビリティがとれる
  • VM の変更がいらない

逆に不利な点は

  • 既存のコードと一緒に使用するときに、Type Safe が保証できない

ということがあります。Type Safe にするために、Collections#checkedList, checkedMap, checkedMap メソッドなどが用意されています。

次に Enum です。

一般的な Enum の使い方は省略。

今まで、全然気がつかなかったのが java.util.EnumSet クラスと java.util.EnumMap クラスの存在です。 EnumSet は bit vector としてインプリされているので、よく使われる bit フラグの代わりに使えるようです。

EnumMap は内部的には配列であらわされるようです。

その他の言語仕様の変更分はちょっと触れただけだったので、省略します。

 

 
 
Java HotSpot 仮想マシンにおけるガベージコレクションの概要
Sun Microsystems Tony Printezis
 
 

悪の権化みたいにいわれている GC ですが、ちゃんと理解して使えば恐れることはないよというセッション。彼曰く "The Garbage Collection is Your Friend"。

GC 自体は新しいものではなく、60 年代の Lisp から使われてきています。GC を使うという戦略は以前は疑問視されたかもしれませんが、結局は正しい選択だったであろうと考えられます。最近では C# も GC を取り入れています。

GC を使うことの利点としてを次の 3 点をあげました。

  • No Dangling References
  • No Memory Leaks
  • Greater Programmer Productivity

もちろん、プログラムのバグでダングリングポインタやメモリーリークはいくらでも作れますが、そういうバグがないプログラムでの話です。

HotSpot における GC の特徴は

  • Generational
  • Fast Allocation
  • Stop-the-World & Mostly-Concurrent
  • Serial & Parallel

です。それぞれについて詳細な説明がありました。

Generational GC

HotSpot ではオブジェクトを Young Generation と Old Generation という 2 つの世代に分けています。オブジェクトのほとんどが若くして死ぬということから、Young Generation は頻繁に GC を行います。一方の Old Generation はそれほど頻繁に行うことはありません。

Young Generation のオブジェクトが一定期間生き延びると Old Generation に移行します (これを promotion と呼ぶようです)。

また、Young Generation のオブジェクトの参照を持っている Old Generation のオブジェクトを把握するために Card Table というテーブルも使用しています。

通常の Generational GC ではここまでなのですが、HotSpot では Young と Old の間に小さな Survivor Spaces というのをもうけており、さらにそれを 2 つの領域に分けています。Young Genration の領域は Eden と呼び、Suvivor Spaces の 2 つは From と To と呼ばれています。

通常 To の領域は空っぽにしておきます。そして、Young の GC が行われると、From にあるオブジェクトは To に移動させられ、また Eden で生き残っているすべてのオブジェクトは To もしくは Old に移動します。最後に Form と To の名前を入れ替えます。

したがって、Young の GC の後は Eden は空っぽ、From と Old にオブジェクトが存在するという状況になります。

Old Generation の領域がいっぱいになったら、Old の GC を行います。

ちなみに Young Generation の GC を Minor GC、Old Generation の GC を Major GC と呼んでいました。

Eden が空っぽになるので、この後オブジェクトのアロケーションが発生しても非常に高速に行うことができます。

Serial & Parallel

Murator スレッドつまりアプリケーションのスレッドは GC の間はすべて停止させられます。これは Minor でも Major でも一緒です。

通常は GC は単一スレッドで行われますが (Serial)、これを複数のスレッドで同時に行うこと (Parallel) も考えられます。特にマルチ CPU の場合に効果が高いです。

Parallel にするのは Minor だけで、Major は Serial のままだそうです。

ここでデモを行い、Serial と Parallel の比較を行いました。8 CPU で動作させているためか、Minor は非常に高速になっていました。

Mostly-Concurrent GC

これは Major に使われる手法で、一般には CMS (Concurrent Mark-Sweep) と呼ばれる手法です。

論文 (A Generational Mostly-Concurrent Garbage Collector, ISMM 2000) も出ているので詳しく知りたい方はそちらをご参照ください。

CMS では GC をマークフェーズとスイープフェーズに分けられるのですが、これらを通常のアプリケーションスレッドと同時に行ってしまうという方法です。

ただし、マークをするときにマーク漏れを防ぐため、すべてのスレッドをストップさせてリマーク処理を行い必要があります。

しかし、アプリケーションスレッドが止まるのはこのリマーク処理とスイープが終了した後の初期化の間だけなので、停止時間は短くなります。

この手法を使うと Major は高速になりますが、Minor は若干遅くなってしまうようです。デモでは Major の時間は通常のものに比べて 1 桁以上高速になっていました。

最後に Tiger での変更点について触れました。

Tiger では GC の Ergonomics を図っているそうです。今まではベストな性能を引き出すためにはユーザによるチューニングが必要だったのでした。Tiger ではそれをなるべくなくして、VM が自律的にパラメータチューニングを行うような仕組みをいれたそうです。

また、JSR-163 や JSR-174 を使用することで、GC のプロファイリング・モニタリング・マネージメントが可能になっています。

 

 
 
BOF セッション
JXTA の動向および P2P の将来
NTT 石原 晋也、NTT 神林 隆、NTT 武本 充治、
早稲田大学 吉永 浩和、、
産総研 首藤 一幸、
NEC 加藤 大志、
Sun Micorsystems 川原 英哉
 
 
JXTA BOF
JXTA BOF

プログラムには早稲田大学の小柳先生が司会ということになっていたのですが、急用で欠席。代わりに NTT の神林さんが司会を行いました。

また、JXTA のチームと同じグループにいるという Sun の川原さんも参加されています。

写真の左から 神林さん、石原さん、首藤さん、川原さん、Note PC に隠れてしまったのですが 加藤さん、吉永さん、武本さんの順です。

はじめに石原さんから JXTA の概要について説明がありました。特に Peer の発見アルゴリズムに関して、JXTA 1.0 のパケツリレー方式から、JXTA 2 で SRDI (Shared Resource Distributed Index) と呼ばれるものに変更されかなり効率がよくなった話などが紹介されました。

次に加藤さんが JXTA の使用したアプリケーションということで、jnushare を紹介されました。jnushare はファイル共有をベースにした情報共有システムで、ディレクトリ構造をそのまま複数の人でシェアしていくような感じになります。

川原さんは JXTA のトップの Juan Carlos Soto のピンチヒッターということで、Sun での JXTA への取り組みなどに関して説明をしました。

JXTA を行っているグループではその他に RFID や Game、Looking Glass などが研究されているようです。

最近では JXTA を使用した事例もあり、Nokia ではサーバサイドの P2P でスパムメールの防止を行うシステムを JXTA で行っているそうです。

また、Sun の製品にも JXTA が使われることがアナウンスされており、Desktop System や N1 Grid に今後 JXTA が活用されていく予定であることを説明されました。

次に首藤さんから P2P を使用して Grid Computing を行う P3 (Personal Power Plant) というプラットフォームを紹介されました。研究とはいえども実戦的な内容を扱っていこうということで、たんぱく質の折畳みの解析などを P3 で行われているそうです。

吉永さんからは JXCube に関して説明がありました。大雑把にいえば、JXTA で Groove を作ってみようというものです。個人ベースの情報共有ツールで、プラグインで機能の追加を行うことができます。

最後の方は時間が足りなくなってしまって、議論ができなかったのが残念です。特に会場から意見を求めることなどができなかったのが痛いです。

実をいうと私も最後の方に、私の同僚が作った JXTA のモニタリングツールについてちょっとだけ喋らさせてもらいました。JXTA に限らず、このような通信をおこなうシステムでは、どのような通信が行われているか分かりにくいので、それをモニタリングできるようにしたものです。そのうち、公開するかもしれません。

 

 
 
へぇー、Grid? Java トリビア
 
 
丸山先生と石原さん
丸山先生と NTT の石原さん
JXTA BOF
ハッカー(悪) の石原さん
JXTA BOF
Sun の石原さんと武本さん
審査員
品評会

Java に関するトリビアを集めて、みんなで楽しもうという BOF です。Night for Java Technology とこのセッションだけで JTC に参加した意義が十分にあります。裏では Ja-Jakarta のパーティや @IT 主催の BOF なので、そちらに流れた方も多いと思いますが、残念でした。このセッションをとるのが正解です ^^;;

主催者側の Sun Microsystems の石原さん、Tim Lindholm、Mark Hapner など皆ここに集まってきているのですから、力の入れようが分かるというものです。

また、稚内北星学園大学の丸山先生、NEC の岸上さん、Component Square の田村さん、木下さん、産総研の首藤さん、NTT の石原さん、武本さんなど早々たる顔ぶれ。

1 枚目の写真は準備をしているときで、「へぇ、ボタン」を手に取っているのが丸山先生。後ろに立っているのが NTT の石原さんです。後ろの左側にいるのが「へぇ、ボタン」の USB 対応を手配し、ポイントをグリッドで集計するアプリケーションを作った首藤さんです。

2 枚目はいつの間にか、着替えていた石原さん。役どころはビビる大木らしいです。

3 枚目がナレーションを担当した武本さん (左) といろいろとネタを仕込んできている Sun の石原さん。

最後が品評会で、会長が丸山先生です。一番左側が日本総研の細川さん、次が NEC の後藤さんです。この後、会場から渡辺さんという方が、ゲストというかむりやり引っ張りあげられていました。

司会はコンポーネントスクエァの木下さんと田村さんです。木下さんが八嶋智人、田村さんが高橋克己の役どころといった感じです。

それではさっそく、トリビア。

 

Java のコードネームは動物と昆虫である

Major バージョンが動物で、Minor が昆虫になるらしいです。よく知られたところだと

J2SE 1.4 Merlin コチョウゲンボウ (隼の一種)
J2SE 1.4.1 Hopper バッタ
J2SE 1.4.2 Mantis カマキリ
J2SE 1.5 Tiger トラ
J2SE 1.5.1 Dragonfly トンボ
J2SE 1.6 Mustang ムスタング

Tiger というのはハンミョウのことではないのかと質問したのですが (ハンミョウは Tiger Beetle)、やはりトラのことだそうです。

 

2003 年 SF の JavaOne で Gosling が投石器を使って一番はじめに投げた T-Shirt をキャッチしたのは日本人

本当にキャッチした当人が会場に来ていました。日本総研の鈴村さんという方です。今日はキャッチした T-Shirt をはじめて着てきたそうです。鈴村さんは日本の JavaOne でも T-Shirt をキャッチしたとか。運のいい人はいるもんなんですね。

 

James Gosling は Duke のことを彼 (he) と呼ぶが、本当の性別は知らない

James Gosling は he というようですが、他の Sun のスタッフは Duke のことを it といっているらしいです。

実際の性別は、今日の朝の Keynote のビデオの中に隠されていました。Keynote で紹介されたのがダイジェスト版だということは MC の末次さんもいっていたのですが、完全版にはこんな質問も入っていたなんて... ようするに、「Duke は男か女か ?」

その部分で、James Gosling はそんなこと分からないよと笑っていました。「もしかしたら、Duke の星では性は 3 つあるかもしれない」ともいっていました。

さらに、さらに、なんと同じ質問を Rich Green にもしていたのです。Rich Green も性別は知らないといい、「Sun はプロフェッショナルなカンパニーだから、Sex の話はしないんだ」と。Rich Green らしい返答に会場はかなりうけてました。

 

次のトリビアは私にはいえない...

いちばんうけてましたが。

 

J2EE の Pet Store が Adventure Builder になったのは .com バブルがはじけたせい

pets.com が倒産してしまったかららしいです。J2EE のスタッフ (名前失念) が Pet Store に変わるものとして金融などをあげていたのですが、家族旅行をしているときにやはり夢を与えるようなサンプルの方がいいということで、旅行会社になったそうです。

ここで丸山先生からつっこみがあって、まだ Pet Store も入っているとのこと。両方ともまだ使えるそうです。

 

Sun のスタッフに enum のことを "イーナム" といっても通じない

笑ってしまったのですが、みなさん enum の発音が違うのです。Tim Lindholm も Mark Hapner もみんな違う発音をしてました。ある人は イーナム、ある人は エナム といった具合です。ちなみに Joshua Bloch は朝のセッションで enum のことを イーヌム と発音してました。

本来の発音は Enumeration に由来しているので、[in(j)u`:m] と発音するのが正しいらしいです。

 

Struts は Craig McClanahan がオレゴンに家族旅行に行っている間に、奥さんの目を盗んで書いた

これは結構有名な話ですね。結局奥さんにバレて、皿洗いの刑に服したそうです。

 

US の Sun の会議室は Disneyland フリークが名前をつけた

Sleeping Beaty's Castle, Peter Pan's Flight, Space Mountain, Mickey's Toontown. これすべて会議室の名前らしいです。すごいですね。

ちなみに The Beatles や The Rolling Stones という会議室もあるそうです。

ついでですが、日本の Sun Microsystems の山王オフィスの会議室は太陽系の星の名前になっています。たしか、Mars, Jupitar, Venus, Mercury でした。部屋のドアの横に部屋の名前が書いてあるプレートがあるのですが、その背景がその星の写真になっています。

 

ここで時間切れでした。

最後の最後に首藤さんから爆弾発言が。

「へぇボタンをグリッドミドルウェア (Globus Toolkit) で作ろうとしたのですが、時間切れで 『へぇ、グリッド』 なく 『へぇ、ソケット』 になってしまいました」

それでも、わずかな時間でこのようなアプリケーションを作るなんて、首藤さんはやはりすごいです。

 

 
  さいごに  
 
JXTA BOF
Duke おにぎり

ランチはスペシャルランチらしいのですが、普通のお弁当です ^^:: でも、普通ではないところが... おにぎりが Duke でした。前回の Night for Java Technology で作られたものと同じようですが。

 

トリビアの後に、そのまま打ち上げにも参加させていただきました。私はサーバ系には全然素人なので、そちら方面の方々とはあまり面識がなかったのですが、今回いろいろな方とお話をさせていただき、楽しい時間を過ごしました。

また、その場にいらした日経 BP の星さんともお話しをさせていただきました。星さんにはいままで何度もお目にかかっていたのですが、なかなかお話しをする機会がなかったのです。しかも、このレポートも見ていただくという栄誉も。

プロの方に見ていただくのは誇らしい気持ちもあるのですが、かなり恥ずかしかったです ^^;;

 

ちなみに JavaOne から JTC に名前が変わったことのは Key3Media が倒産したからではないようです。倒産したとしても、去年の COMDEX を主催したようにちゃんと営業はしているのですから。

 

(Feb. 2004)

 
 
Go to Contents Go to Java Page