|
3/27 第 3 日 |
||||||||
San Francisco のダウンタウンを歩いていると、いろいろなところに JavaOne の広告があります。一番よく目に付くのがバス停です。かなりの割合で JavaOne です ^^;; このようにいろいろと宣伝はしているのでしょうが、今年は参加者の数が去年より確実に減っているような気がします。いつもは、初日の Keynote で今年は何人登録しているかなどをいうのですが、今年はなかったところをみてもそう思います。 今まで、ずっと増加してきたので、減るのは初めてなのですが、たぶんこのぐらいが適当なのでしょう。それでも、多分、世界最大の開発者会議であることは変わらないと思います。 それよりも、去年まではどこにいっても常に混雑しており身動きがとりづらかったことを思えば、今年はかなり楽になっているので、そういう面ではいいです。 来年は、Moscone Center が Moscone West という新しい建物もできるので、そちらもいっぱいになるぐらいの参加者があつまるかどうかは、景気の行方によっているような気がします。
|
Keynote Session |
||||
今日は待ち時間にバンドのパフォーマンスがありました。ランチの時にもバンドが入っており、いろいろなところで飽きさせない工夫が見られるのが JavaOne らしいところです。 内容については他のメディアに譲ることにして、筆者なりの感想を。今日のメインのスピーカは SAP と Sprint の方なのですが (その他にも Borland や Macromdeia などの方も短いしピーチをしています)、SAP の Hasso Plattner のスピーチがへたくそなんです (こんなことを書いていいのだろうか...)。いくら内容がおもしろくても、スピーチの技術がなければ、台無しになってしまうというスピーチの典型でした。 スピーチをする姿勢や態度などを Posture というのですが、Hasso Plattner のスピーチはこの Posture が悪いのです。スピーチするときに、演台にひじをついて喋る、無駄にゆらゆらと身体を揺らす、原稿を読みながら下をむいて話すなどです。スピーカはスクリーンに映されるのですが、身体を揺らしていると、スクリーンではとても落ち着かない感じに映ります。特にアップで映されているので、スクリーンアウトしてしまうこともたびたびあります。 動くのが行けないわけではないのですが、メリハリをつけた動きにすべきです。スピーチのうまい人、たとえば Rich Green はステージの上を歩き回りますが、常に歩き回るのではなく、止まるときはずっと止まっています。また、歩いていても上半身は不動です。もちろん、手と顔は動かしていいんですが。 JavaOne のように広いステージでは、アイコンタクトがなかなかできません。それを補うのが、ステージでの動きになっています。ようするに、動くことで自分がどの方向を向いているかを聴衆に見せることができ、聴衆の方を向いて喋りかけてくれていることを聴衆に分かってもらうためであると思います。そういう意味からいくと、逆に手や顔はある程度オーバーアクションになるぐらいにしないと行けないのではないでしょうか。ここまでいくと、舞台上の役者とかわならいですね。 アメリカの企業のエグゼクティブは皆スピーチのコンサルタントを受けていると聞きますが、自分の考えを人に伝えるときに、それを少なくとも誤解されないように、最大限に理解してもらうためにスピーチの技術が必要になるのだと思います。 筆者も何らかの発表やスピーチをするときは、そのようなことを考えながら行っているのですが、言うは易し、行うは難しで、まだまだ修行が足りないようです ^^;;
|
Technical Session |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
今日、聴講したのは
今日の目玉はなんといっても Monty と Java Server Faces です。Monty は多分初お披露目、JSF は去年の JavaOne の Keynote で発表された以後音沙汰がなかったと思います。ということで、今日はこの 2 つをレポートします。 レポートはしないのですが、JFC/Swing や Java 2D のセッションではいつも多くの人が聴講しています。Java の Client-Side はほとんど生き残っていないような雰囲気がありましが、これだけ興味がある人がいるということはまだまだ捨てたものではないという気がします。 TS-2133 Prject Code-Name "Monty": A High-Performance Virtual Machine for the Java Platform for Small Deveces Monty は KVM に代わる新しい J2ME CLDC 向けの JVM です。Monty の目標は
これらを行うためにいろいろな工夫がなされています。ただし、Keep it Simple は常に忘れないようにしているとのことです。
最後にベンチマークの結果とデモが行われました。 ベンチマークの実行には iPAQ 266MHz StrongARM/WinCE と Pentium 4 1.4GHz/ Windows 2000 が使用されています。ベンチマークには
Pentominoes と KXML は何をやっているか分かるのですが、後はどんなベンチマークなんだかよく分かりません。 ベンチマークの結果は次のようになっています。それぞれの数次がミリ秒なのか秒なのか、それとも何らかのスコアなのかよく分かりません。
とにかく、かなり早くなっていることが分かります。このベータのフットプリントは Java の環境すべてで 1 MB だそうです。ここに MIDP が入っているかどうかは分かりません。 最後にデモが行われました。3D のゲームですが、KVM と Monty の iPAQ を並べて実行していました。KVM ではゲームにならないくらい遅いのですが、Monty ではちゃんとゲームになっていました。 TS-1697 About Faces: Simplifying Java Technology-Based Web Application Development with the JavaServer Faces Specification Java Server Faces (以下 JSF と略す) は JSR-127 で策定されている、サーバ側での UI を構築するための API です。ようするに JSP では HTML を生成しますが、JSF は HTML のフォームを生成するものと考えていいと思います (HTML 以外にも WML も扱えるようです)。 JSR-127 はエクスパートグループに所属する団体がかなり多いらしく、なかなか Draft がまとまらないようです。スケジュール的には
だそうですが、どこまでスケジュール通りに行くかは分かりません。Reference Implementation の Early Access も計画されているそうです。 JSF は次のような設計指向で進められているようです。
JSF は JSP と同じように Servlet で実装されていますが、基本的には JSP とは独立した API だそうです。ただし、JSP の Tag Library を使用した JSF Tag は JSP に依存しています。 JSF の機能的には
イベントは、たとえばフォームに入力して Submit ボタンを押すなどによって発生します。また、Validation はたとえばフォームに数次しか入力できないようにするなどを行うためのものです。 最後に自動車の購入を行うためのデモを行いましたが、Sevlet だと HTTPServletRequest からリクエストを取り出す処理が必要ですが、JSF だとイベントになるので非常に簡単に扱うことができるようです。 また、デモではツールを使って HTML の画面を生成するようにしていました。要するに Bean を画面に貼るようなイメージです。JBuilder や Forte などがこれに対応すれば、生産性がかなり高くなるような気がします。
|
Birds of a Feather (BOF) Session |
|||
今日は次のセッションを聴講しました。
ここでは BOF-1452 と BOF-1802 をテクニカルセッションの内容と合わせてレポートします。 BOF-1452 A New Solution for Using Threads with the Java Foundation Classes ("JFC/Swing") API: The Synchronous Model JavaOne では Sun 以外の方も発表されることが多くなってきましたが、特に BOF ではその傾向が強くなってきています。このセッションのスピーカも Compaq の方で、自分が開発したライブラリについて発表を行っていました。 Swing のアプリケーションを作っていると、アプリケーションが急に止まってしまうことがよくあります。そのままほおっておけば、数秒で復活するのですが、なんかいやな感じです。また、これを GC のせいだと思っている人がいますが、それは間違いです。 問題の原因は Swing のイベントモデルにあります。 基本的にイベントモデルには次の 2 つ処理があります。
AWT のイベントモデルはこの 2 つの処理を別々の Thread で行っていました。しかし、Swing では全てを Single Thread で行っています。Single Thread なので、Multi Thread 対応のための処理 (Thread Safe にするための処理) が省略でき、シンプルでパフォーマンスが高くなります。 しかし、これが諸悪の元凶になっているのです。 たとえば次のコードを見てみます。JButton がクリックされたときの処理です。
コードの全体はここにあります。 SwingTest.java このコードではクリックしても「処理中...」とは表示されないで、クリックされた状態のままになってしまいます。 JButton の setText メソッドは中で repaint メソッドがコールします。このため、これを処理するためにイベントキューに入れるのですが、イベントの処理で止まっているので、再描画のイベントを処理することができなくなっているためです。 このセッションであげられた解決法には
3 番目の Foxtrot がスピーカが開発したライブラリです。 それぞれの方法の利点と欠点を挙げて、比較を行い。Foxtrot が一番いいことを示してました。 たとえば、1 の欠点としてはイベントが起こるたびに Thread を生成してしまうので、Thread のコントロールができない点などがあります。SwingWorker を使った方法では重い処理が 2 つ重なるとやはり処理が止まってしまうことを指摘していました。 しかし、どの方法も Swing 自体が Thread Safe ではないため、コンポーネントのプロパティを変更するなどには気をつけなくてはいけないことも示していました。
BOF-1802 Scalable Vector Graphics and the Batik Project: Status and Roadmap Scalabel Vector Graphics (SVG と略す) は W3C で策定されているベクトルグラフィックスを XML で表すための標準です。間違っているのを承知で、大雑把にいってしまえば PostScript を XML で書きなおしたようなものです。 これを Java で扱うためのライブラリとして Apache の Batik があります。Batik の機能としては
があります。SVG で提供されている機能をすべて Java 2D でカバーできるわけではないので、それを補完するための処理や、XML のパースの処理なども含まれています。特に XML のパースには独自の DOM を使用しているそうです。 エクスポートは通常の Graphics2D クラスを使用した描画そのままで行うことができます。Graphics2D は実際には abstract クラスで描画を行う対象に応じた派生クラスがあります。たとえば、スクリーン描画やプリンタへの描画などです。Batik では同じように SVG のための Graphcis2D の派生クラスを提供しています。そのため、この派生クラスを使用すれば、普通の描画と何ら変わりなく SVG を生成することができます。 インポートには SVG 用のコンポーネント JSVGCanvas を使用します。 また、現在 W3C では SVG のサブセットとして携帯機機用の SVG Tiny や SVG Basic も策定しています。しかし、Batik は今のところこれらに対応する予定はないそうです。ただいま、ボランティア募集中だそうです。
|
おまけ |
||||||||||
今日は JavaOne の食事事情に関してレポートしてみたいと思います。セッションのレポートよりこういう話題の方が望まれたりするんですよね。 JavaOne では朝と昼の食事が提供されています。参加費が高いので、これぐらいはしてくれないともとがとれません。 朝はマフィンもしくはパウンドケーキとフルーツ、飲み物、コーヒーという組み合わせです。写真のように山盛りになっており、食べ放題です。 フルーツはリンゴやバナナ、イチゴ、メロンなどいろいろあります。やはり食べやすいバナナに人気があるようです。逆にリンゴやナシ (といっても西洋ナシです) はあまり人気がないのかいつもあまっています。 朝は飲み物として、オレンジ、アップル、グレープフルーツとラズベリーのジュースがあります。 写真の奥に見える大きなポットがコーヒーです。JavaOne で出されるコーヒーはすべてスターバックスのコーヒーです。こちらも飲み放題。 去年はマフィンやパウンドケーキ以外にもベーグルやペストリーがあったのですが、経費削減のためでしょうか、残念ながら今年はありません。ベーグルがなくなってしまった今、甘いものが苦手の人にはつらいと思います。筆者は甘いもの大好きなので、全然平気なのですが ^^;; 昼はランチボックスか、バイキングです。バイキングといってもほとんど選択肢はありません。日によって少しづつ違うのですが、今日はフライドチキン、サラダ 2 種類、マフィンににんじんケーキでした。 ランチボックスにはサンドウィッチが 2 種類、サラダが主体のランチボックスが 3 種類あります。サンドウィッチはターキー & チーズとローストビーフで、写真のようにフランスパンに似たパンでサンドされています。ボックスには写真に映っているようにビスケットとポテトチップ、果物が入っています。果物は日によって違うのですが、バナナ、リンゴ、ナシのどれかです。 サラダが主体のランチボックスというのは主にベジタリアン向けのようです。今年初めて見たのがベジタブル寿しのランチです。ニンジンなんかが巻き寿しになっています。だれがこんなもの食べるのだろう? ランチのときにも飲み物が出ます。朝と同じジュース以外にも、ペプシなどのソフトドリンクが選べます。 あとは午後におやつがでます。コーヒーとジュース、果物にお菓子です。果物やお菓子は争奪戦になります ^^;; 気づかずにいると、あっという間になくなってしまいます。 去年までは午前中にもコーヒーだけはサーブされていたのですが、今年はないようです。ただし、2 回以上参加した人だけが入れる Alumni Club という場所には常にコーヒーがおいてあります。 提供される食べ物を食べているだけで、かなりおなか一杯になります。日本に帰るまでに JavaOne 太りになりそうです。
(2002.3.27) |
|