Go to Contents Go to Java Page

JavaOne 2005 SF

6/29 JavaOne 第 3 日

朝の General Session は Nokia の General Session なので、パス。

その分、少し遅くまで寝ることができました。とはいっても寝不足なのは変わりません。本当に JavaOne は体力勝負なのです ^^;;

ただでさえ寝不足になりがちなのですが、今日は Project Looking Glass の Community Meeting があり、そこでデモをしなくてはいけないのです。ところが、deadline drive な櫻庭は昨日の夜になってからデモ用の資料を作りはじめたのでした。結局、ほとんど寝ていないのはかわりないのです。

というわけで、今日聴講したのは

Technical Session

今日の午後は LG3D の Community Meeting の準備のため、LG3D のセッション以外はお休み。そのために聴講したセッションは少ないのです。

TS-7171 What's Happening with JMX Technology
Sun Microsysms Jean-Francois, Eamonn MxManus

今まで JMX は基本となる JSR-3 とリモートからのアクセスに関する JSR-160 に分かれていましたが、JSR-255 Java Manegement Extensions (JMX) Specification, version 2.0 では両方をまとめて議論するようになったようです。

その代わり、Web Service を用いた Connector が JSR-262 Web Services Connector for Java Management Extensions (JMX) Agents として策定されることになっています。

残念ながら Mustang では JMX 2.0 は採用されずマイナーバージョンアップである JXM 1.3 になるそうです。JMX 2.0 は Dolphin で使えるようになるそうです。

MBean のタイプには Standard MBean、Dynamic MBean、Open MBean、Model MBean の 4 種類あります (Open と Model は Dynamic のサブクラスですが...)。

この Standard MBean などを使う場合、プロパティに自作のクラスを含んでいると汎用の JMX クライアントでは扱うことができません。このようなときには Open MBean を使うようにし、自作のクラスを Open MBean の CompositeData クラスに変換して扱うようにします。

たとえば、JSR-174 で決められている MXBean は Open MBean でラップされています。MXBean の中の ThreadMXBean はプロパティに ThreadInfo クラスを持ちますが、このクラスには CompositeData クラスに自動的に変換されます。JMX クライアントでは CompositeData クラスのまま扱ってもかまいませんし、ThreadInfo クラスが使用できるのであれば ThreadInfo#from(CompositeData) メソッドを使用して、CompositeData オブジェクトから ThreadInfo オブジェクトに変換して使用してもかまいません。

同様なことが MBean オブジェクトへの参照を持つ MBean があった場合、JMX Client 側には MBean オブジェクトの名前が参照の代わりに送られます。MBeanServer で MBean のプロキシを取得するとこの名前は自動的に MBean への参照に変換されるようです。

今までの JMX では Monitor を使うことができましたが、プリミティブもしくは String クラスのモニタしか扱うことができませんでした。Mustang では、これらの型に加え、CompositeData の中の特定のプロパティをモニタすることもできるようになります。

さらに Mustang では MBean のプロパティやノティフィケーションの Descriptor を記述することができるようになります。つまり、MBean の名前以外にもその意味や、その値に対する制約 (最大値、最小値) などをあらわせるようになります。Descriptor には BeanInfo クラスのような Description を記述するためのクラスを使用するようです。

しかし、Descriptor を別のクラスに書くのはちょっと面倒ですね。そのために Descriptor のための Annotation を決め、MBean クラスの中に一緒に Descriptor を書くことができるようになるらしいです。残念ながら、これは Mustang では使えずに Dolphin からの予定だそうです。

次に Web Services Connector (JSR-262) です。

Web Services Connectors を使うことにより Java 以外の言語でも扱うことができ、また HTTP を使用すればファイアウォールを潜り抜けることも可能になります。

Web Services Connectors は WS-Management および WSDM とはプロトコルが異なるようですが、これらの標準への対応もされるようです。

また、ノティフィケーションは Push と Pull の両方が使えるようになります。Push は JMX Client も Web Services のサーバになり、管理サーバに自己の URL を伝えます。管理サーバはノティフィケーションが発生したら、その URL をコールしてノティフィケーションを伝えます。

一方の Pull では、JMX Client は Web Services のサーバになる必要はありません。その代わり、定期的に管理側に対してポーリングするようにします。

もう 1 つうれしいのが RSS でノティフィケーションをあらわすことができるようになります。

 

TS-7955 Evolving the Java Language
Sun Microsysms Graham Hamilton, Mark Reinhold, Gilad Bracha

めずらしく (失礼)、Graham Hamilton が普通のセッションに登壇しました。彼は言語を作成したときの哲学や、C++ から学んだ点、これからの Java 言語の変更に関して説明をしました。

たとえば、C++ から学んだ点としては言語として強力で柔軟性を持っているが、逆にそれに頼っている点がある。また、コードの可読性が低いなどをあげています。

Java 言語の基本は次の 3 点です。

これらを考慮して、次の項目は機能として採用しなかったということです。

これらの機能は Java では採用しませんでしたが、すべての言語で採用するに値しないわけでなく言語によっては非常に意味があることもあるとしています。

次に Dolphin で採用が検討されている XML の扱いについて説明がありました。

現在の Java では XML を扱うには DOM, SAX を使いますが、Mustang ではこれらに加え StAX と JAXB が使えるようになります。

しかし、より簡単に XML を扱えるように、言語レベルで XML を扱えるようにするらしいです。

たとえば、タグを追加する場合、次のように記述できます。

    void addReviewer(Element feature, String user, String time) {
        feature.add(<reviewed><who>{ user }</who>
                              <when>{ time }</when>
                    </reviewed>);
    }

このような扱いができるように java.lang.XML クラスを導入するそうです。ただし、バリデーションや名前空間をどうするかなど決めなくてはいけないことがまだ多く残っており、近く JSR で議論する予定です。

また、まだブレインストーミングレベルだと断ってから、次のような機能追加について言及されました。

しかし、私が思うに JavaOne という場で発表するからにはブレインストーミングのレベルということはなく、かなり実現に近いレベルであると思います。

また、JVM で他の言語もサポートされるようです。特にスクリプト系の言語をサポートするようです。このために JVM の構成をかなり変えるようで、動的なバイトコード実行が可能になります。

 

TS-7992 Project Looking Glass: Cool LG3D Apps and Hot to Write Them
Sun Microsystems Hideya Kawahara, Paul Byrne

前半に Paul Byrne がイントロダクションとデモをおこない、後半に川原さんが LG3D のプログラミングについて話されました。

Paul がデモしたのは LG3D の基本的な部分と

Zoetrope と GigAGig は櫻庭が作ったソフトで、Zoetrope がイメージビューア、GigAGig が 3D 空間を利用したMusic Mixer です。

BgManager は LG3D の背景を切り替えるためのソフトです。0.7 以前は背景ごとにアイコンがあったのですが、BgManager を使うことでアイコンを 1 つにすることができました。

Cosmo Scheduler D は九工大の小出研究室で作成されたスケジューラで Duke's Choice Award をとったものです。

Alice はマルチメディアプレイヤーですが、デモはなく紹介のみでした。

James Burke's Knowledge Web は James Burke の知識体系を 3D で表すという意欲的なデモです。

最後の 3D Model Integration は日本のエイタロウソフトが作成したソフトで、3D の James Gosling が踊るという楽しいものでした。

後半、川原さんがプログラミングについてお話をされました。

聴講者の大半が LG3D は知っているし、デモを見たことはあるが自分では動かしたことがないぐらいの人だったので、ちょっとレベルが高すぎたきらいがあります。

最後に JavaOne の直前に発表されたバージョン 0.7 についてふれました。

0.7 の機能としては

があげられます。App モードというのは、X Window のアプリケーションでありながら、X Window のネイティブアプリケーションを走らせることのできるモードです。

オープンソースになってから 2 年目に入り、より開発をしやすく、またプラットフォームとしての機能を増やしていく方向性が示されました。

神谷さん
セッションの前に Dukelel を練習する神谷さん
セッティング
セッション前のセッティング
Paul Byrne
Paul Byrne

Paul Byrne
もう 1 枚、Paul Byrne

 

セッション風景
セッションの様子
川原さん
川原さん
川原さん
もう 1 枚、川原さん

 

BOF

BOF-0186 Memory Leak Be Gone!
BEA Joakim Dahlstedt, Staffan Larsen

メモリリークの傾向と対策。でも、最後は自社ツールの宣伝になってしまったのでちょっと残念なセッションでした。それも BEA の JRockit でないと使えないツールなんて...

Java でのメモリリークは間違ったコードや複雑なフローで起きやすとし、リークを発見するには。

  1. リークかどうか確かめる
  2. どのクラスでリークしているか探す
  3. リークしているオブジェクトを探す
  4. ソースのリークしている箇所を探す

という手順でおこないます。

しかし、やみくもにおこなっておこなっても、なかなか効率的にリークを発見することは難しいのが現実です。そこで、リークを探し出すためのツールが効果的です。

フリーのツールとしては以下のものをあげました。

HAT は java コマンドの hprof の生成したダンプファイルを解析するツールです。HAT を起動すると Web サーバを内部的に動作するので、ブラウザを使用してダンプファイルの解析結果を参照することができます。

リークかどうかを発見するためには実行時間の異なる 2 つのダンプファイルを比較します。ただし、ダンプファイルは巨大で HAT を利用しても比較するのは困難です。

HeapRoots も HAT と同様に hprof のダンプファイルを利用しますが、HAT よりは巨大なファイルでも比較が容易にできるようになっています。しかし、コマンドラインで使用するツールなので、使いにくい点があげられていました。

HeapAnalyzer も HeapRoots と同様のツールですが、GUI を用いてより使いやすくなっています。

結局、最後の Memory Leak Detecter を使いましょうというのが結論。

でもなぁ...

 

その他

Project Looking Glass Community Meeting

去年と同じく Argent Hotel で Project Looking Glass の Community Meeting がおこなわれました。

JavaOne ではこのような Community Meeting も多くおこなわれているのですが、JavaOne とは別になるのでどこでどんな Meeting がおこなわれているのかわかりにくいという側面もあります。

もちろん、すでにコミュニティに入っていれば分かるのでしょうが、コミュニティには入っていないけど興味はあるという人にはどこで Meeting がおこなわれているか知りようがないのでした。

ということで、人数はそれほど多くなくだいたい 50 人ぐらいでしょうか。大半が日本人というのがちょっとつらいところです。

今回の Meeting では 5 組がデモをおこないました。

Black Goat はメーラです。JC2005 Spring でもデモをしたのですが、そのときのインタフェースからかなり変えてきていました。

Cosmo Scheduler D はスケジューラですが、宇宙空間をスケジューラにしてしまうというものです。

小田原さんと前田さんは学生ですが、2 人ともしっかりと準備をしてきており、どうどうとスピーチできていました。

また、後藤さんのメールシステムは Black Goat とはまた違ったインタフェースです。当日、急にデモが動かなくなってしまったというハンデがありましたが、バックアップ用の資料がちゃんと用意されているのでした。

それにくらべて櫻庭は準備不足が見え見えでかなりつらかったです ^^;;

またまた、困ったことに動作チェックをしていたらまったく LG3D が動かなくなってしまったのでした。CPU が 100% にはりついてしまって、まったく埒がありません。

実をいうとこの日の朝にグラフィックスドライバをアップデートしたのでした。アップデートをしたのはいいのですが、GPU の一覧の中に GeForce Go はないのです。まぁ、同じだろうと思って Go がないものを選択してインストールしてしまったのですが、どうやらそれがダメだったようです。

しかたなく、ドライバを前のものに戻して再挑戦。今度は問題なく動きました。よかった、よかった。

Community Meeting
もう 1 人の Project Owner である Deron Johnson
Community Meeting
Paul Byrne
Community Meeting
Owner の 3 人がそろう
Community Meeting
Black Goat

 

Community Meeting
小田原さん
Community Meeting
前田さん
Community Meeting
薬師寺さん
Community Meeting
Cosmo Scheduler D

 

Community Meeting
後藤先生
Community Meeting
メールシステム
Community Meeting
Patrick McKercher
Community Meeting
James Burke's Web Knowledge

 

突撃、路上パフォーマンス!!!

Community Meeting の後に、なんとなんと川原さんを中心にゲリラ的に路上パフォーマンスをおこなってしまったのでいた。

はじめは冗談からはじまったので、本当にやるとは思いもよらなかったのですが、本当にやってしまいました ^^;;

メンバは稚内北星学園大学の丸山学長 (ボーカル)、川原さん (ボーカル & Dukelele)、伊藤忠の中村さん (ピアニカ)、日立ソフトの河村さん (ボーカル)、コンポーネントスクェアの長尾社長 (ボーカル & カズー) という豪華な顔ぶれです。いちおう私も Dukelele とブルースハープをやりましたが足を引っ張らないようにするので精一杯でした。

曲目は The Beatles の Help!, Let It Be から坂本九の上を向いて歩こう、はては津軽海峡冬景色まで。

ほとんど練習もしていないので、ぶっつけ本番に近いのですがなんとかなりました。特に中村さんのピアニカにとても助けてもらったのでした。

実をいうと昨日の打ちあわせというのはこのパフォーマンスの打ちあわせだったのでした ^^;;

ちなみに皆さんが胸につけているのはこの日のために櫻庭が作った缶バッジです。本当は LG3D の正式ロゴで作りたかったのですが、ロゴが決まるのが遅れてしまったのでとりあえず写真の 2 つの種類を作ったのでした。結構好評だったので、うれしいかぎりです。

Performance
中村さんと川原さん
Performance
河村さんと長尾さん。口にくわえているのがカズー
Performance
丸山先生を囲んで
Performance
川原さんと Dukelel

 

Performance
バンド
Performance
Twin Dukelele
Performance
観客も一緒に記念撮影
Performance
SF にくる直前まで作っていた缶バッジ

(2 July 2005)