2008/06/27

今日の JavaEdge JavaOne 報告会

大渕 雅子さん, JavaEdge JavaOne 報告会, 名古屋

JavaEdge の JavaOne 報告会の会場はナディアパークのオラクル中部支社。

名古屋にくるのは、すごい久しぶり。たぶん、7, 8 年ぶり。栄に来たのは、もっと前で 15 年ぶりぐらいかな。

櫻庭は人の顔や名前を覚えるのは超苦手なのですが、地図や風景を覚えるのは得意。栄の風景もちゃんと覚えてました。とはいうものの、新しいビルがいっぱい建っていて、昔とは全然違います。でも、なんとなく分かるんですよね。

会場は普段は講習とかで使われている部屋のようで、PC が並んでいます。プロジェクターが暗くて、よく見えないのですが、PC にも写されるので、そちらをみていただくということでなんとなく解決。

スピーカーは大渕さんと櫻庭。まず、櫻庭がフォトレポート。そして、大渕さんの Technical General Session を中心とした話。最後に、再び櫻庭が Java SE と JavaFX の話という流れです。

フォトレポートは 30 分のはずだったのですが、1 時間近くも喋ってしまいました。こういうことを話させると、ほんとに止まらないんです ^ ^;;;;

フォトレポートということで、Moscone Center やその周りがどうなっているかを地図とあわせて、お見せすることにしました。

最近、Google Maps は Flash 用の SDK が公開されたので、それを使いたかったのですが.... ドキュメントには Flex から使う方法が書いてあって、それはうまくできるのです。でも、Flash 単体で使う方法がよく分からない。今まで、そんなに ActionScript をバリバリに使った開発、特に他の AS のライブラリを使った開発というのをしたことがないので、よく分からなかったのです。AS 3 もよく分からないし...

ちゃんと勉強しようかなぁ、Action Script 3。

しかし、Adobe というか Macromedia も、よくこんなに仕様を変えてきますね。Flash 3 のころからすると、スクリプトの書き方が全然違いますから。もう愕然としてしまいますよ。Java でこんなことやったら、絶対にゆるされないだろうなぁ。

とりあえず、本家の Google Maps のマイマップ作ってみたので、公開しておきます。Moscone Center の中の位置はかなりいい加減ですが ^ ^;;

まだ中途半端なので、もうちょっと充実させる予定。ちなみに、フォークとナイフマークがレストラン、カップがお菓子屋もしくはカフェ、Duke マークは JavaOne 関連、青のマークがランドマークです。

大渕さんは Sun SPOT や、Java が動作するペンである Pulse を持参。Pulse 楽しいですよ。

大渕 雅子さん, JavaEdge JavaOne 報告会, 名古屋 大渕 雅子さん, JavaEdge JavaOne 報告会, 名古屋
この T Shirt は CommunityOne でもらったもの
Duke をはじめいっぱいキャラが隠れているのですが、分かりますか?
大渕 雅子さん, JavaEdge JavaOne 報告会, 名古屋
Pulse デモ中
JavaEdge JavaOne 報告会, 名古屋

通常のセッションの後、懇親会。

Duke グッズ争奪戦ということなので、問題を 7 問ほど考えてきました。といっても、3 問は William Pauh の Defective Code と Java Puzzlers からのパクリ。

残り 4 問が X を探せ。櫻庭が JavaOne で撮った写真に偶然写っていた有名人を探すというもの。せっかくなので、ここでもご紹介しましょう。

まずは、Swing Hacks の本や最近では JavaFX をやっている Joshua Marinacci。これは簡単ですね。

これが Joshua。

Joshua Marinacci, TS-5657 JavaFX™ Technology: Bring the Web with You--Multiple Interfaces to Games, Chat, and More, JavaOne 2008

そして、この中のどこかに Joshua がいます。

JavaOne 2008 San Francisco

次は J2SE 5.0 のスペックリードであり、OpenJDK のガバナーでもある Mark Reinhold。

Mark Reinhold, JavaOne 2006

この写真は初日の General Session に並んでいる人たちなのですが、彼はこんなところに並ばなくてもいいような気が...

Long Line to General Session, JavaOne 2008

次が今日のスピーカでもある大渕さん。

Maya, San Francisco

これも初日。General Session からでてきた人たちにまじって大渕さんがいます。

Mob, JavaOne 2008

最後は丸山先生。

丸山先生, 日本Javaユーザグループ設立記念講演会, 秋葉原ダイビル

丸山先生はよくこの場所にいるのですが、このときもたまたま発見してしまいました。

JavaOne 2008

どうですか? みつかりましたか?

写真をクリックすると Flickr のページに飛ぶので、拡大写真を見ることができます。

このシリーズは楽しいので、来年もできるようにいっぱい写真を撮ろうっと。特にモブの写真。

ラベル: , , , ,

2008/05/31

今日の JavaOne 報告会

丸山 不二夫 JJUG 会長, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス

というわけで、JavaOne 報告会です。

土曜日で、しかも雨だというのに大勢の方に参加していただきました。本当にありがとうございます。

ジェネラルな話を増月さん、Java EE は野上さん、マネージメントやデバッグを谷本さん、ハンズオンラボとパビリオンを大渕さんという顔ぶれです。

櫻庭はいつものごとく Java SE と JavaFX。でも、実際に一番話したかったのは Neil Young ^ ^;;;;

だって、Neil Young のことが記事になったいるものを見ると、ギタリストとかロック歌手とか、かなりいいかげんに書かれているんだもん。Neil Young すごいんだよ、ということを伝えたかったわけです。

とはいえ、半分ネタですが。

すでに、発表資料は JJUG のサイトにアップしてありますけど、この Neil Young の部分は入っていません。参加した人だけでの特典ということで。

さて、本題の Java SE と JavaFX です。

Java SE は SE 7 に入りそうなところを中心にピックアップ。モジュラリティが話のメインです。JavaFX は新しい技術とかが発表されたわけでもないので、なかなか話すことがないんです。なので、ジェネラルセッションでデモを紹介するというものですね。

しかし、前半の Neil Young で時間をとりすぎてしまって、後半はかなりスピードアップしてしまいました。まだ修行が足りないようです。

セッションの最後はライトニングトーク。昨年の JavaOne 報告会では、初参加者に絞っていましたが、今年は複数年参加している人にも幅を広げました。

その代わり、いろいろな立場で参加されている方に喋っていただくということにしました。

普通の参加者はもとより、パビリオンに展示されている方、自費で参加されている方、プレスの方などなど。全然予定していなかったのですが、きしださんにも喋っていただいたり。

バラエティがあって、とてもよかったと思います。登壇していただいたみなさま、ありがとうございました。

丸山 不二夫 JJUG 会長, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
丸山会長
増月 孝信さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
増月さん
Mr. John Gage のビデオメッセージ, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
John Gage のビデオメッセージ
野上 忍さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
野上さん
谷本 心さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
谷本さん
大渕 雅子さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
大渕さん
吉岡 龍右さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
吉岡さん
藤川 幸一さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
藤川さん
山口 隼也さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
山口さん
片岡 修一さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
片岡さん
石丸 愛子さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
石丸さん
きしだ なおき さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
きしださん
横田 健彦さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
横田さん
佐竹 雅央さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
佐竹さん
杉山 貴章さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
杉山さん
川尻 剛さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
川尻さん
五味 明子さん, JJUG + SDC JavaOne 報告会, Sun Microsystems 神宮前オフィス
五味さん

ラベル: , , ,

2008/05/09

JavaOne 最終日

Java + ? T-Shirt, Pavilion, JavaOne 2008

今日は James Golsing の General Session があるので、早起き。

Alumni Lounge でごはんを食べて、7:30 に General Session の列に並びました。もちろん、かなり早い順番です。

さて、今年の JavaOne のテーマは Java + You ですが、パビリオンでは無料で Java + XX = YY という T-Shirt を無料で作ってくれます。もちろん、XX と YY の部分は好きな言葉を入れらます。

会場には業務用のアイロンが持ち込まれていて、そこでアイロンプリントしてくれるというわけです。

というわけで、できあがるまでの工程を写真で撮ってきました。

Java + ? T-Shirt, Pavilion, JavaOne 2008 Java + ? T-Shirt, Pavilion, JavaOne 2008
Java + ? T-Shirt, Pavilion, JavaOne 2008 Java + ? T-Shirt, Pavilion, JavaOne 2008
Java + ? T-Shirt, Pavilion, JavaOne 2008 Java + ? T-Shirt, Pavilion, JavaOne 2008
Java + ? T-Shirt, Pavilion, JavaOne 2008 Java + ? T-Shirt, Pavilion, JavaOne 2008

ということで、今日櫻庭が聴講したのは

  • General Session
  • Technical Session
    • TS-6623 More "Effective Java"
    • TS-5657 JavaFX Technology: Bring the Web with You - Multiple Interfaces to Games, Chat, and More
    • TS-4883 Advanced Java NIO Technology-Based Applications Using the Grizzly Framework
    • TS-6206 JVM Challenges and Directions in the Multicore Era

 

General Session

DJ Anna, General Session, JavaOne 2008

General Sessionは今年も DJ Anna によるパフォーマンスから。この人、写真だけを見ていると、ほんとにマネキンみたいです。

さて、今日も John Gage の MC ではじまります。

彼は初日にデモをした Sentilla Mote がいたくお気に入りのようで、今日も Sentilla のデモ。エスカレータのところに Sentilla をしかけておき、そこを通る人をカウントできるようにしたらしいのです。

モニタリングする方は、エスカレータの写真が表示され、人が 1 人通るごとに James Gosling がエスカレータに乗るというもの。これはおもしろい。

そして、次のスピーカーである James Golsing を壇上に呼びました。John Gage が役目を終わって、壇から降りようとすると、James Gosling が John Gage を呼びとめるのです。

James Golsing がこれを見てくれと、ビデオが上映されました。

なんとそれは、JavaOne の顔、John Gage を讃えるビデオだったのです。一昨年は Scott McNealy、去年は James Gosling、そして今年は John Gage だったわけです。

James Golsing をはじめ、Scott McNealy、Jonathan Schwartz、Rich Green、そしてなんと Bill Joy まで出てきましたよ。それにしても、Bill Joy はカッコイイ。

わざとドキュメンタリーのコメントみたいに、側面からライトを当て、バックは暗くして、コントラストを高くした画像だからかもしれませんが、それにしてもカッコイイです。

ビデオが終わったら、James Gosling が「いつも、投げる方ばかりでもらったことがないだろう」と、T-Shirt スローで使われる T-Shirt を John Gage にプレゼント。

その後、Jonathan Schwartz、Rich Green、Chris Melissinos が壇上に。Jonathan の手には Golden Duke が。

それを送られた John Gage はちょっとウルウル来てましたね。

DJ Anna, General Session, JavaOne 2008 DJ Anna, General Session, JavaOne 2008
John Gage, General Session, JavaOne 2008 John Gage, General Session, JavaOne 2008
John Gage and James Gosling, General Session, JavaOne 2008 Bill Joy, General Session, JavaOne 2008
John Gage and James Gosling, General Session, JavaOne 2008 John Gage, Jonathan Schwartz and James Gosling, General Session, JavaOne 2008
John Gage, Jonathan Shwartz, Rich Green,  Janice J. Heiss and James Gosling, General Session, JavaOne 2008

そして、James Gosling の General Session に移っていきます。

彼のセッションはいつものごとく、彼が興味を持っているものをいろいろと集めた楽しいセッションです。

紹介されたものは、次の 11 種類です。

  • VisualVM
  • JavaScript Support in NetBeans
  • Java on NVidia APX 2500
  • Java Games (jMonkeyEngine) and Project Darkstar
  • Java Card 3.0 (Robocode)
  • Sentilla Mote
  • Livescribe Pulse
  • Real Time Java
  • Tommy Jr.
  • JMARS
  • CERN

VisualVM は今年の JavaOne ではもう何度も出てきてますね。NetBeans の JavaScript サポートはなかなかよさげ。Firefox と協調してデバッグもできます。

APX 2500 での OpenGL ES のデモは JOGL の BOF で見たものと同じです。jMonkey Engine と Project Darkstar を使ったゲームはシミュレーションのようでした。かなり凝った演出も可能なようです。

NetBeans の Tor Norbye、JOGL の Ken Rusell、Project Darkstar の Chris Melissinos は James Gosling の General Session ではもうおなじみ。登場するときに、「今年はなにをみせてくれるんだい?」的な会話が交わされています。

次が Java Card。Java Card が General Session で登場するのなんてかなり久しぶりのような気がします。かつて、VISA の人が General Session に出て、そのとき一緒に Michael Jordan が出たんですけど、ご存じでしたか?

Java Card 3.0 ではかなり機能強化されたようです。デモでは、Robocode のプログラムを Java Card で動作させて対戦させてました。事前にプログラミングコンテストがおこなわれており、この場で決勝戦がおこなわれたのでした。

次が Sentilla Mote。ここでは、大きいビーチボールの中に、Mote をしかけておいて、ボールの位置をモニタリングするというもの。

そして、Livescribe の Pulse です。Pulse はボールペンなのですが、なんとペン先にカメラが仕込まれてあります。そして、もちろん Java (CLDC) も動作します。

カメラからの画像を認識して、文字を読みとったり、単語を訳したりできます。それだけでなく、ピアノの鍵盤を模したマス目を書き、そこをポインティングするとピアノの音が出てくるというすごいペンです。

会場でも販売していたのですが、悩んだすえ買いませんでした。ちょっと後悔しています。

次の Greg Bollella による Real Time Java のデモも JavaOne 恒例。今年はパチンコの玉と同じくらいの色つきの玉をパイプの中を走らせるというもの。パイプにはフリッパーがついていて、玉が来るとフリッパーが玉を打つのです。それだけでなく、カラーセンサが設置されており、玉の色によって走路を変更することができます。

今まで Real Time Java は、リソースの大きなシステム向けのものが多かったのですが、今回はファクトリーオートメーション的なもの。ちょっと方向性を変えてきたのかもしれません。

工場やプラントでは、制御用の特殊なネットワークであるフィールドバスが使われています。フィールドバスにはいくつか種類があるのですが、ここでは Profibus を使ってラダーを制御してました。

とはいうものの、今回のデモも Java SE で動作する Real Time VM であり、CDC などの Java ME で動作するものではありません。CDC で動くといろいろと楽しいことできるんだけどなぁ。

Tommy Jr. はおととし出展されていた Tommy の新型。今回の Tommy はトヨタの Scion xB がベースになっているので、前回に比べるとかなりスマート。それでも、センサ類がたくさん車体につけられているのは異様ですが。

JMARS は Gosling お気に入りの火星のお話し。とはいっても、ローバーを直接制御するのではなく、ローバーのミッションプランニングや、ローバーなどから送られてきた各種情報を解析するためのツールです。

そして、最後が CERN で使われている各種の Java のシステム。Web といえば CERN ですが (といっても知っている人は少ないのかなぁ)、そちらではなくて本業の素粒子や原子核の研究の方。

この研究を支援するためのツールが Java で作られているらしいのです。これもなかなすごいです。

James Gosling, General Session, JavaOne 2008
James Gosling, General Session "Extreme Innovation", JavaOne 2008
VisualVM の Luis-Miguel Alventosa と Tomas Hurka
James Gosling and Tor Norbye, General Session "Extreme Innovation", JavaOne 2008
NetBeans の Tor Norbye
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Ken Rusell
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Chris Melissinos と jMonkeyEngine の Joshua Slack
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Java Card の Laurent Lagosanto
James Gosling, General Session "Extreme Innovation", JavaOne 2008
真ん中の 2 人がコンテストの上位者。この 2 人で決勝戦がおこなわれました。勝ったのは黄色いシャツの人
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Sentilla の Joe Polasre
James Gosling, General Session "Extreme Innovation", JavaOne 2008
ビーチボールが会場に投げ込まれました
James Gosling, General Session "Extreme Innovation", JavaOne 2008
ビーチボールの位置のモニタリング
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Livescribe の Jim Marggraff
James Gosling, General Session "Extreme Innovation", JavaOne 2008
単語の翻訳
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Real Time Java の Gregg Bollella
James Gosling, General Session "Extreme Innovation", JavaOne 2008
これが今年のマシン
James Gosling, General Session "Extreme Innovation", JavaOne 2008
Tommy Jr. と Paul Perrone
James Gosling, General Session "Extreme Innovation", JavaOne 2008
JMARS の Phil Christensen
James Gosling, General Session "Extreme Innovation", JavaOne 2008
CERN の Derek Mathieson

Technical Session

Joshua Marinacci, TS-5657 JavaFX™ Technology: Bring the Web with You--Multiple Interfaces to Games, Chat, and More, JavaOne 2008
Josh Marinacci

今日はいろんな意味でいまいちでした。Effective Java はよかったのですが、その後の JavaFX はイマイチ。Josh Marinacci なので、Extreme GUI Makeover の JavaFX を期待していたのですが...

そのころから昨日ひいてしまった風邪が悪化。集中力がかなり落ちてしまいました。そのせいもあって、次の Grizzly は全然理解できませんでした。その後の JVM Challenges にいたっては、座ったとたん落ちてしまったらしく、全然記憶がないのでした ^ ^;;;

 

TS-6623 More "Effective Java"

このセッションも Joshua Bloch の JavaOne 名物セッション。名物セッションなので人気があります。なので、はじめから 2 回おこなわれることになっていました。なので、今日は 2 回目のセッションです。

しかし、今年は Joshua Bloch のもう 1 つの名物セッションである Java Puzzlers がないのが寂しいですね。

そういえば、今年の JavaOne では Effective Java 2nd edition の先行発売がおこなわれています。2nd edition では、J2SE 5.0 の言語仕様変更にあわせて、かなり項目が追加されています。これから買う人がいるのであれば、絶対に 2nd。すでに持っている人も、買い換える価値が十分にありますよ。

Joshua Bloch, TS-6623 More "Effective Java", JavaOne 2008
Joshua Bloch

JavaOne の本屋さんでは、Joshua Bloch のサイン会がおこなわれたのですが、すごい長蛇の列。予定の時間をとうに過ぎていても、列がいっこうにへる様子がありません。1 時間以上、時間を延長したらしいです。もちろん、櫻庭は Effective Java 買いましたよ。サインはもらえませんでしたけど。

さて、Effective Java のセッションです。

このセッションも 2nd edtion で追加された項目をベースにされていました。

はじめがジェネリクス。ジェネリクスの中でも、ワイルドカードの使い方です。

ワイルドカードを使うときの基本は PECS。PECS とは Producer extends, Consumer super の略です。

たとえば、コピーを考えた場合、コピー元は <? extends T> を使い、コピー先は <? super T> を使うというわけです。

また、戻り値にはワイルドカードは使わないようにします。

次が enum。

enum は特殊なクラスなので、いろいろと拡張することが可能です。たとえば、独自のフィールドを持つこともできます。たとえば、ordinal() メソッドを使うような場合は往々にして独自のフィールドを持った方がスマートに書くことができます。

// こう書いてはダメ!!
public enum Ensemble {
    SOLO, DUET, TRIO, QUARTET, QUINTET,
    SEXTET, SEPTET, OCTET, NONET, DECTET;
 
    public int numberOfMusicians() {
        return ordinal() + 1;
    }
}

このように書くのではなく、下のように書きます。

// この書き方の方が Good!
public enum Ensemble {
    SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
    SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
    NONET(9), DECTET(10), TRIPLE_QUARTET(12);
 
    private final int numberOfMusicians;
 
    Ensemble(int size) {
        numberOfMusicians = size;
    }
    
    public int numberOfMusicians() {
        return numberOfMusicians;
    }
}

このように記述することで値が重複するときでも、また値が追加、変更されるときでもコードの変更が少なくてすみます。

また、ビットフィールドを int を使って実現することも、タイプセーフでないことや、32 bit 以上の扱いなど、いろいろと問題があります。ビットフィールドを扱う場合は EnumSet を使うようにします。同じように EnumMap もいろいろと活用ができます。

櫻庭は EnumSet も EnumMap も知っていたのですが、enum によるシングルトンパターンは気づきませんでした。たとえば、下のコードはシングルトンでしょうか?

public class Elvis implements Serializable {
    public static final Elvis INSTANCE = new Elvis();
 
    private Elvis() { }
        private final String[] favoriteSongs =
            { "Hound Dog", "Heartbreak Hotel" };
 
    public void printFavorites() {
        System.out.println(Arrays.toString(favoriteSongs));
    }
    
    private Object readResolve() {
        return INSTANCE;
    }
}

もちろん、違います。理由は考えてみてください。

enum を使ったシングルトンは次のように書きます。

public enum Elvis {
    INSTANCE;
    
    private final String[] favoriteSongs =
        { "Hound Dog", "Heartbreak Hotel" };
 
    public void printFavorites() {
        System.out.println(Arrays.toString(favoriteSongs));
    }
}

この使い方は思いつきませんでした。

ラベル: , ,

2008/05/08

JavaOne 3 日目

Tommy Jr., Pavilion, JavaOne 2008

今日も General Session は自主的にパス。

今日は Pavilion の最終日なので、ちょっとだけいってみました。上の写真で、黒い車は Tommy Jr.。一昨年、出展されていた Tommy の最新型です。

Tommy Jr. も Tommy と同様、DARPA が主催している Urban Challenge に出場するため、無人で動作します。だから、Autonomous Vehicle Only なんです。こういうジョークは好き。

さて、今年もセッションに参加するには事前に登録が必要です。去年は Sun のワークステーションにリーダをつけて画面で確認するシステムでした。

今年はそれが小型化し、PDA で登録チェックをおこなっています。でも、やっぱり煩雑なんですよね。もっといい方法ないのでしょうか?

Session Registration, JavaOne 2008 Session Registration, JavaOne 2008

さて、今日櫻庭が聴講したのは

 

Technical Session

今日のセッションの中では、Extream GUI Makeover が今までとずいぶん違ってしまって、あまりおもしろくありませんでした。

去年まで、このセッションは Shannon Hickey と Romain Guy が主に担当していたのですが、全然知らない人。なんかちょっと残念です。

 

TS-5686 New I/O APIs for the Java Platform

Alan Bateman and Carl Quinn, TS-5686 New I/O APIs for the Java™ Platform, JavaOne 2008
Alan Bateman

Carl Quinn, TS-5686 New I/O APIs for the Java™ Platform, JavaOne 2008
Carl Quinn

J2SE 1.4 で導入された New I/O ですが、当初 JSR 51 で取りいれるといっていた機能には J2SE 1.4 に間に合わなかったのものがあります。たとえば、ファイルシステムに対する API などです。

これらの残された API を策定するために、JSE 203 で More New I/O APIs が提案されていたのですが、CAFE (Call for Exper Group) 以降、動きが全然ありませんでした。J2SE 5.0 は過ぎ、Java SE 6 も過ぎてしまい、やっと Java SE 7 で動き始めたというわけです。

JSR 51 のスペックリードは Mark Reinhold でしたが、彼は Java SE 6 (JSR 270) のスペックリードになってしまい、その後 OpenJDK の Govonor になってしまいました。

ということで、新しいスペックリードの Alan Bateman と、Google の Carl Quinn が登壇しました。

セッションは前半が File System API、後半が Channel に関する API です。

今までファイルを扱うのは java.io.File クラスだけでしたが、このクラスはあまりにも貧弱。扱えるメタデータもごくわずかだし、シンボリックリンクなどの特殊なファイルも扱えません。

そこで、新たに java.nio.file と java.nio.file.attribute パッケージが定義されるわけです。

主なクラスは次の 4 つ。

  • FileSystem
  • FileRef
  • Path
  • FileStore

普通にファイルを扱うには Path クラスでパスを指定して、チャネルやストリームをそこから取り出すという使い方になります。

import java.nio.file.*;
 
    Path home = Path.get("/home/gus");
    Path profile = home.resolve(".bash_profile");
 
    // Backup existing file
    profile.copyTo(home.resolve(".bash_profile.backup"));
 
    // Append useful stuff to the profile
    WritableByteChannel ch = profile.newSeekableByteChannel(APPEND);
    try {
        appendStuff(ch);
    } finally {
        ch.close();
    }

よく分からないのが、Path クラスと FileRef クラスの関係。Path クラスは FileRef クラスの派生クラスなのでしょうか?

JSR 203 はすでに Early Draft が公開されています。でも、Early Draft と微妙にというか、かなり違うのでよく分かりません ^ ^;;

この Path クラスはシンボリックリンクを扱うこともできます。また、ディレクトリを扱うための DirectoryStream クラスも用意されており、正規表現を用いたファイルのフィルタリングなども可能になっているようです。

ファイルのメタデータは FileAttributeView インタフェースで表されます。基本的なファイルのメタデータは BasicFileAttributeView クラス、POSIX に準拠したファイルであれば PosixFileAttributeView クラスで表すようです。

ファイルに対する操作が行なわれたときに発生するイベントも扱うことができます。これには WatchService インタフェースを使用します。

後半はチャネルに関する API です。

まず、ソケットでマルチキャストを行なうための MulticastChannel インタフェースが導入されます。

非同期 I/O は Selector クラスを使う方法しかありませんでした。それに対し、JSR 203 では Concurrency Utilities の Future インタフェースを使用する方法と、コールバックを行なう方法が追加されています。

 

TS-5419 The Garbage-First Garbage Collector

Paul Ciciora and Antonios Printezis, TS-5419 The Garbage-First Garbage Collector, JavaOne 2008
Antonios Printezis

Paul Ciciora and Antonios Printezis, TS-5419 The Garbage-First Garbage Collector, JavaOne 2008
Paul Ciciora

このセッションは新しい GC の手法 Garbage-First (G1) GC に関する物です。スピーカの Tony Printezis は GC の専門家。

皆さんよくご存じのように、現在の HotSpot JVM は世代別 GC が採用されています。世代別 GC では、ヒープを Young 領域 (Eden と Survivor) と Old 領域 (Tenured) に分割して管理を行ないます。そして、Young 領域では Copy GC、Young と Old を合わせた時には Mark & Sweep GC が適用されます。

今までの HotSpot VM では Young と Old は基本的には固定です (エルゴノミクスを使うと変化することがあります)。

ところが、ところが、G1 GC では違うのです。

G1 では、ヒープを小さい領域に分割します (現状では 1MB の領域だそうです)。そして、その領域のうちいくつかを Young 領域、残りを Old 領域に割り当てます。この割り当ては、連続している領域でなくても大丈夫です。

Young 領域がいっぱいになってしまったら、Survivor 領域に移動します (つまり Copy GC です)。このときに、Young から Old に移動するオブジェクトもあります。

Old のマークは領域ごとに行ないます。もし、リマーク時にその領域のオブジェクトがすべて GC 対象であれば、その時点でその領域は解放されます。

ここで、普通の M&S であれば、スイープに入るわけですが、G1 ではスイープは Copy GC と同じように行ないます。つまり、ある領域から使われていない領域にオブジェクトが移動させるわけです。移動元の領域は、その時点で解放されます。

もちろん、このような GC を行なうためには、各領域を管理する必要があります。このために、Remembered Set という領域を別途用意するようです。この領域はヒープ全体の 5% 以下なので、全体に対する影響は少ないようです。

今後はこの GC の手法が現在使用している GC に取って代わる予定だそうです。しかし、明確にいつということは言及されなかったので、Java SE 7 というわけには行かないかもしれません。

 

TS-6589 Defective Java Code: Turning WTF Code into a Learning Experience

William Pugh, TS-6589 Defective Java™ Code: Turning WTF Code into a Learning Experience, JavaOne 2008
William Pugh

今年はなんと Java Puzzlers がないのです。楽しみにしてたのに... でも、そんなに問題も思いつかないのかもしれません。

その代わりといってはなんですが、このセッションです。スピーカの William Pugh は FindBugs の作者であり、昨年の Java Puzzlers では Joshua Bloch と一緒に Puzzlers を担当していた人です。

このセッションも Puzzlers のように、サンプルコードを示してどこが悪いか説明し、モラルを説くというパターンです。でも、Puzzlers のようにパズル形式になっているわけではなく、サンプルコードも単体で動作するわけではありません。

しかし、示されたコードは JDK や Jetty などで本当に使われているコードです。これは興味深いです。

たとえば、Jetty で使われている以下のコードには間違いがあります。どこだと思いますか?

    private final String _lock = "LOCK";
        ...
    synchronized(_lock) {
        ...
    }

これは、ロック用のオブジェクトに文字列定数を使っているところが間違っています。

JVM では文字列定数は共有されてしまいます。そのため、異なる場所で "LOCK" という文字列定数を使っていたら、同じオブジェクトで共有されてしまうのです。

この問題のモラルは、何をシンクロナイズするかということより、誰がシンクロナイズするかを考えるべきだということです。

最後に、FindBugs のコンテストのアナウンス。

バグパターンを投稿して、優勝者には $200 だそうです。〆切は 8/31 です。

 

TS-6611 Filthy-Rich Clients: Filthier, Richer, Clientier

Chet Haase, TS-6611 Filthy-Rich Clients: Filthier, Richer, Clientier, JavaOne 2008
Chet Haase

Romain Guy, TS-6611 Filthy-Rich Clients: Filthier, Richer, Clientier, JavaOne 2008
Romain Guy

このセッションも JavaOne 名物といってもいいでしょう。Chet Haase と Roamin Guy のトークもおもしろいし、内容ももちろん役に立つものばかりなのです。

でも、Chet が Adobe に転職してしまったので、このセッションがあるかどうか不安だったのですが、あってよかったです。

最初の話題はアニメーションにおけるタイマ。

アニメーションは結局のところ、ある程度の時間間隔ごとに違う絵を描画するだけなので、時間間隔を制御するタイマは非常に重要になります。

でも、普通はタイマのことをあまり考えないので、タイマごとにスレッドを立ててしまって、スレッドが多くなりすぎという問題があります。

そこで、システムで唯一のタイマ用スレッドを用いることにします。

Timing Framework の場合は、Timer を指定できるので、シングルタイマを指定するようにします。すでに、Scene Graph プロジェクトのアニメーションではシングルタイマが使用されているそうです。

ちなみに、Timing Framework はもう役目を終えたということで、今後は Scene Graph プロジェクトのアニメーションに統合されていくということです。

次は Animated Layout。

コンポーネントのレイアウト変更をアニメーションでおこなったり、ドラッグ & ドロップをアニメーションでおこなうことに関して。櫻庭も Layout Manager を自分で書いたことがありますが、アニメーションさせようとは思いもしませんでした。

Flex 版は Chet の blog からダウンロードできるのですが、Java 版のコードが見たい! 公開してくれないかなぁ。

原型と呼べるものは、Filthy Rich Clients の本のサンプル (18 章) にありますが、ドラッグ&ドロップなどは実装されていないのです。

最後がクリッピング。

Java 2D にはクリッピングが用意されていますが、アンチエイリアシングが適用されないので、あまり綺麗ではないのです。そこで、クリッピングの代わりに Composite を利用する方法を紹介しました。

Java2D には Composite はちょっとしか用意されていないのですが、SwingX には 30 種類あるそうです。

 

BOF

Writing the Next Great Java Technology Book はなかなか興味深い BOF だったのですが、如何せん私の英語能力が追いついていないので、内容の半分も理解できていないと思います orz

柴田さんが blog でこのセッションに言及されていらっしゃるので、そちらをご覧ください。

 

VisualVM: Integrated and Extensible Troubleshooting Tool for the Java Platform

Luis-Miguel Alventosa, BOF-5223 VisualVM: Integrated and Extensible Troubleshooting Tool for the Java™ Platform, JavaOne 2008
Luis-Miguel Alventosa

Visual VM は TS-6271 Java Platform, Standard Edition: A Youthful Maturity でも紹介されていた jconsole とプロファイラがくっついたようなツールです。

実際は jvmstat、Attach API、JMX、Serviceability Agent の 4 つの技術を使い、モニタをおこないます。プロファイルは NetBeans Profiler から必要なものだけを選択したバージョンのようです。

すでに VisualVM は java.net で公開されているので、興味があるのであればぜひ使ってみてください。

VisualVM https://visualvm.dev.java.net/

 

After Dark Bash

Smash Mouth, After Dark Bash, JavaOne 2008

BOF の最後のコマはおもしろそうなのがなかったので、帰ろうと思ったのですが...

そういえば、Yerba Buena Park で After Dark Bash をやっていることを思いだしました。ここ数年はあまりメジャーな人はいなかったのですが、今年は結構メジャーなバンドのコンサートなのです。

ちなみに、かつては Train のコンサートもあったりしました。

で、今年は Smash Mouth のコンサート。彼らは 1994 年に結成ということなので、10 年以上もキャリアがあるのですが、櫻庭が知っているのは I'm a Believer のカバーと All Star ぐらい。I'm a Believer は映画のシュレックで使われています。

Yerba Buena Park は Moscone North の上。Moscone North はレジストレーションがある地上部分以外はすべて地下にあります。で、その上が Yerba Buena Park となっているわけです。

で、Yerba Buena Park にいってみました。

9:00 までの予定なので、また演奏しているか微妙だったのですが、まだやっていました。とりあえず、写真、写真。

久しぶりにライブの生演奏を聴きましたけど、やっぱりいいですねライブは。

それにしても、寒い。ほんと凍えそうです。連日のハードワークで疲れが残っていたのですが、この寒さが引き金でとうとう風邪をひいてしまいました orz

Smash Mouth, After Dark Bash, JavaOne 2008 Smash Mouth, After Dark Bash, JavaOne 2008
Smash Mouth, After Dark Bash, JavaOne 2008 Smash Mouth, After Dark Bash, JavaOne 2008
Smash Mouth, After Dark Bash, JavaOne 2008 Smash Mouth, After Dark Bash, JavaOne 2008

ラベル: , ,

今日のランチ - Pazzia Caffe and Trattoria

Fungi Pizza, Pazzia Caffe and Trattoria, San Francisco

今日のランチは再び Pazzia。

先月、日本に来日していた Sun SPOT チームの Arshan とランチ。大渕さんも一緒。

大渕さんが Two のパスタがあまりにもひどくて落胆していたので、ましなパスタもあるということを示すためにここにしたのでした。

大渕さん曰く「Two よりはいいけど、アルデンテではないです」 でも、Arshan と話に夢中になっていて、サーブされたまま箸を付けていない状態で放置していたのが悪かったと思うんですけど (ぼそっ)。

櫻庭が食べたのは Fungi Pizza。Arshan はリゾット。リゾットをちょっともらったのですが、これはいけてました。来年、試してみよう。

それはそうと、イタリアンもここ以外でアルデンテのところを開拓したいなぁ。

 Carpaccio, Pazzia Caffe and Trattoria, San Francisco Fungi Pizza, Pazzia Caffe and Trattoria, San Francisco

ラベル: , ,

今日の夕食 - Cha am

ผัดไทย, Cha am, San Francisco

ここも JavaOne 会期中に 1 度は来ています。

Defective Java Code に参加しているときに、石丸さんという方に声をかけていただきました。石丸さんは横田さんと同じ会社。じゃあ、後でごはんでもいきましょうといったのですが....

結局、集まってみたら 10 人。いつの間にか団体さんになってしまいました ^ ^;;

ほんとはベトナム料理の Bong Su にいきたかったのですが、店を見つけられず。で、すぐそばの Cha am となったわけです。

で、パッタイです。味は... まあまあかな。

ちなみに、Bong Su はその後、見つけました。来年、いってみよう。

ラベル: , ,

2008/05/07

JavaOne 2 日目

Breakfast, JavaOne 2008

今日の General Session は Oracle なので、パス。なので、今日は 9:30 はじまり。ちょっとだけ、ゆっくりできます。

さて、昨日聞いたところによると、朝食がランチボックスのようになっているらしいのです。それを教えてくれた人は初参加だったので、それが当然だと思ったようですが...

Alumni Lounge の朝ごはんは去年と同じだったので、Hall A だけのことなのでしょう。

さっそく、それを確かめるために Hall A にいってみました。

そうしたら、ランチボックスのようになっていましたよ。それも、ベーグルとマフィンが 1 つずつ入っているだけです。これはちょっとしょぼくないですか?

Breakfast, JavaOne 2008
このように無造作においてあります
Breakfast, JavaOne 2008
ベーグルとマフィン
Breakfast, JavaOne 2008
ジュースは飲み放題です
Breakfast, JavaOne 2008
Java Man, JavaOne 2008
今年も Java Man がいました
Java Man, JavaOne 2008
こんな風にコーヒを入れてくれます

さて、櫻庭が今日聴講したのは...

Technical Session

今日、よく理解できなかったのは TS-5535。JAX-RS に関するセッションですが、基礎知識が全然ないので、歯が立ちません orz

 

TS-5579 Closures Cookbook

Neal Gafter, TS-5579 Closures Cookbook, JavaOne 2008
Neal Gafter

Google の Neal Gafter のセッション。

Neal Gafter を中心にした、BGGA が提案する Closure について解説するというセッションです。ちなみに BGGA は Gilad Bracha, Neal Gafter, James Gosling, Peter von der Ahe の 4 人の頭文字です。

Closure はまだ JCP には提案されていませんが、提案の準備のためのサイト Closures for the Java Programming Language を立ちあげています。

彼らが提案する Closure の記法は { => } です。=> の左側に Closure の引数を記述し、右側に式を記述します。そして、Closure はインタフェースのインスタンスとして扱うことができます。

たとえば、次のように書くことができます。

    Runnable r = { => doWhatever(); };
    r.run();
 
    Callable<String> cs = { => "result" };
 
    Comparator<String> reverse =
        { String s1, String s2 => s2.compareTo(s1) };
 
    ItemSelectable is = ...;
    is.addItemListener(
        { ItemEvent e => doSomething(e, is); });

引数がある場合は、ちゃんと型を書きます。問題は戻り値の型を記述できないということですね。こういうときは、ジェネリクスで指定できるようなインタフェースにするようです。

Closure がよく使われる処理の 1 つにコレクションに対する処理があります。もちろん、Java の Closure でも提供されるようです。たとえば、sort、filter、map などがあります。

    // aggregate code
    final double highestGpa =
        students.filter({ Student s => s.graduationYear==THIS_YEAR })
                .map({ Student s => s.getGpa() })
                .max();

昨日の Braian Goetz の Let's Resync セッションでも紹介されていましたが、このような形式を使うと並列化を自動的に行なうことができます。

ところで、コレクションに対する演算を Aggregate Operation という言葉で表していたのですが、これって一般的な言葉なのでしょうか?

さて、後半は Closure 導入に伴う、Java の文法変更に関して。特にジェネリクスの議論を行ないました。

というのも、Closure の内部で例外が発生する場合のハンドリングが問題になるからです。Closure では戻り値の型を記述できないのでジェネリクスを使用すると書きましたが、同じように例外もジェネリクスで記述するのです。

例外をジェネリクスで記述する場合、BGGA は <throws X> という記述法を提案しています。

たとえば、次のように記述します。

interface Block<R, throws X> {
    R execute() throws X;
}
 
public <R, throws X> R time(String opName, Block<R, throws X> block) throws X {
    long startTime = System.nanoTime();
    boolean success = true;
 
    try {
        return block.execute();
    } catch (final Throwable ex) {
        success = false;
        throw ex;
    } finally {
        recordTiming(
            "opName", System.nanoTime() - startTime, success);
    }
}

そして、この time メソッドを使うには次のように記述します。

int f() throws MyException {
    time(“opName”, { =>
            // some statements that can throw MyException
    });
 
    time(“opName”, {=>
        return ...compute result...;
    });
}

ところで、BGGA の提案が Java SE 7 に採用されると決まったわけではありません。BGGA の提案も他の意見を取りいれて、変化しています。この議論が収束するにはもう少し時間がかかりそうです。

 

TS-6185 Modularity in Java Platform

Alex Buckley, TS-6185 Modularity in Java Platform, JavaOne 2008
Alex Buckley
Stanley Ho, TS-6185 Modularity in Java Platform, JavaOne 2008
Stanley Ho

今年の JavaOne で最も多く聞かれる言葉がモジュールもしくはモジュラリティです。ということで、このセッションもかなり注目されていたようです。

このセッションは JSR 294 のスペックリード Alex Buckley と JSR 277 のスペックリード Stanley Ho がスピーカです。

モジュラリティには開発時とデプロイメント時の両方の側面があります。

既存の Java では開発時のモジュラリティとしてパッケージ、デプロイメント時のモジュラリティとして JAR ファイルがあります。

しかし、これらのモジュラリティだけではいろいろと問題があります。

たとえば、public が public すぎる点などがあります。内部的に使用したいクラスでも public としてしまうと、どこからでもアクセスされてしまいます。使用するクラスがパッケージが同じであればパッケージプライベートでもいいのですが、パッケージが異なっている場合はそれもできません。

JAR ファイルもバージョニングや、JAR ヘルの問題が存在します。

このような問題を解決するために導入されたのが、開発時の module とデプロイメント時の JAM ファイルです。

もともと、module は JSR 294 で superpackage として提案されていました。JAM ファイルは JSR 277 の提案です。しかし、これらの問題は双方に深く関係しているということから、JSR 294 は JSR 277 に統一されることになったようです。

それにともない、superpackage も module という名前になったわけです。

module というキーワードは 2 つの意味を持ちます。

1 つが複数のパッケージをまとめて、モジュールを構成するための module 文。もう 1 つが、モジュールの内部だけパブリックになるというアクセス修飾子の module です。

あるモジュールに属するクラスは次のように module 文でモジュールを指定します。

module  org.netbeans.core;
package org.netbeans.core;
 
public class Debugger {
    ...
}

package 文と module 文が並ぶのでへんな感じですが、そういうものらしいです。ここでは、パッケージ名とモジュール名が同じですが、もちろん違う名前でもかまいません。

もう 1 つのアクセス修飾子としての使い方は次のようになります。

module  org.netbeans.core;
package org.netbeans.core.utils;
  
module class ErrorTracker {
 
  module int getErrorLine() { ... }  
    ...
}

この ErrorTracker クラスはモジュールの内部だけは使用できるモジュールプライベートなクラスになります。また、getErrorLine メソッドも同様にモジュールプライベートなメソッドになります。

さて、モジュール自体の定義は module-info.java に記述します。上の例だと、org.netbeans.core パッケージに相当するディレクトリに module-info.java を配備します。

@Version("7.0")
@ImportModule(name="java.se.core", version="1.7+")
  
module org.netbeans.core;

module-info.java には Annotation でモジュールに対するメタデータを記述できます。

一方の JAM ファイルは、基本的には JAR ファイルの形式をそのまま使用しています。しかし、DLL やシェアードライブラリなどプラットフォームに依存したファイルもまとめられることや、依存している JAR ファイルも含めることができるなどの点が異なります。

また、JAR ファイルではメタデータは MANIFEST.MF にわずかしか記述できませんが、JAM ファイルでは上述した module-info.java に Annotation で記述することができます。これからも分かるように、JARM ファイルはモジュール端で作るようです。

たとえば、module-info.java の例を次に示します。

@Version("7.0")
@MainClass("org.netbeans.core.Main")
@Attribute(name="IDE", value="NetBeans")
 
@ImportModules({
    @ImportModule(name="java.se.core", version="1.7+"),
    @ImportModule(name="org.foo.util", version="1.0", reexport=true),
}) 
 
@ImportPolicyClass("org.netbeans.CustomPolicy")
@ModuleInitializerClass("org.netbeans.core.Init")
 
@PltformBinding(os="solaris", arch="sparck")
@ExportResources({"icons/**"})
 
module org.netbeans.core;

JAM ファイルの作成は jam コマンドでおこないますが、オプションなどは jar コマンドと同様のようです。

JAR ヘルを排除するために、JAM ファイルごとにクラスローダが割り当てられ、依存するライブラリがバージョン違いのものがあったとしても、名前空間で区別することができます。

また、レポジトリにも対応しています。

このレポジトリ用の API を使うと OSGi のモジュールも読み込めるらしいのですが、まぁ一時しのぎでしょうね。

これは櫻庭の意見ですが、やっぱり Sun は OSGi をまじめに取り組むつもりはないと思っているからです。

今年の JavaOne では OSGi がいろんなところで聞かれるのですが、どちらかというと Sun の外側の部分です。たとえば、Spring が OSGi に対応したとか。

もちろん、GlassFish が OSGi に対応することは知っていますが、本当に必要であれば Java EE 6 に入れるはずです。

なので、GlassFish の OSGi 対応も JAM が普及するまでのつなぎでしかないと櫻庭は思っています。でも、JAM の普及がいつになるかよく分からないですけどね ^ ^;;

とりあえず、OSGi を策定している JSR 291 では、Sun は常に反対票を入れてきたということは事実です。

さて、モジュールを決めている JSR 277 ですが、OpenJDK の Modules サブプロジェクトで開発が進められています。

 

TS-5199 Java Management Extensions (JMX) Technology Update

JMX のセッションは去年からそれほど進展がないようです。JMX 2.0 と Web Sercives Connector の解説ですが、すでに仕様はほとんど固まっているので、後は実装ということなのでしょう。

おもしろかったのは、Web Services Connector のデモ。

Web Services Connector は WS-Management と関係が深く、したがって Java 以外の言語からでも管理をおこなうことが可能になります。

デモでは、ポーカーの Web アプリケーションを VB で使った管理クライアントで管理するというもの。なにがおもしろいって、スピーカの Éamonn McManus と Jean-François Denise がいきなりサングラスをかけて、カジノっぽい感じで演じてたこと。こういう遊び心はいいですね。

Eamonn McManus, TS-5199 Java™ Management Extensions (JMX™) Technology Update, JavaOne 2008
Éamonn McManus
TS-5199 Java™ Management Extensions (JMX™) Technology Update, JavaOne 2008
これがポーカーのシステム
Eamonn McManus and Jean-François Denise, TS-5199 Java™ Management Extensions (JMX™) Technology Update, JavaOne 2008
カジノ風

後日談: Flickr で JavaOne の写真を公開しているわけですが、なんと Flickr のメールに Éamonn McManus からメールが!! 写真を blog で使わせてもらいたいとのこと。これは本当にビックリでした。

JavaOne report: JMX TechnologyJavaOne report: Everything Else で私の写真が使われています。

 

BOF

Mark Hapner and Fujio Maruyama, JavaOne 2008

これでもいちおう Java Champions の一員なので、Champions の BOF には出てみましたが、まぁこんなもんでしょう。なんとか、丸山先生を Champions の事務局をやっている Aaron に紹介することができたので、それだけでよしとしよう。

ついでに大渕さんの blog にもあるように、Sun SPT をもらえる算段もつけたことだし ^ ^;;

ちなみに、大渕さんは Aaron の英語は分かりやすいと書いてますけど、私には聞き取れない orz 彼はむちゃくちゃ早口なんです。

セッションの後、3 人で歩いていたら、Mark Hapner に遭遇。彼は私のことは覚えていないだろうけど、丸山先生とは周知の仲。Mark Hapner にごはんを誘われたのですが、次の BOF があるので遠慮させてもらいました。で、丸山先生と Mark Hapner で夜の San Francisco に消えたのでした。

もう 1 つの Modularity の BOF は Q&A セッションなので省略します。

 

BOF-5470 SwingLabs Development Update

SwingLabs は標準の Swing に含まれないツールなどが開発されています。たとえば、SwingX や Timing Framework、現在は Java SE 6 に含まれている SwingWorker などがあります。

このセッションでは主に SwingX と SwingX - WS の紹介がされました。

SwingX は Swing eXtensions のことです。SwingX には JXTable や JXLoginPane のように JX ではじまるコンポーネントがいろいろあります。

ここで紹介されたのが、SwingX Unified Renderer です。

JTable や JTree などうんたらレンダラーを使うコンポーネントがいくつかあります。今まではこれらのレンダラーは別々に実装されていました。

それを統合化しようというのが Unified Renderer です。Unified Renderer ではハイライトやソート、フィルターなど共通して使用できる機能を取り込んで、コンポーネントにかかわらず統一的に扱うことができるようになります。

次の Swing - WS は文字通り Web Services を Swing で扱ってしまおうというものです。個人的には、この方向性はあまり好きではありません。でも、こういうことをやりたいという人もいるんでしょうね。

ラベル: , ,

2008/05/06

JavaOne 1 日目

Alumni Lounge, JavaOne 2008

というわけで、今日から本番。

今年は InterContinental Hotel に Alumni Loung が設営されているので、さっそくいってみました。

ラウンジは 4F なので、エレベータをおりて誘導されるままにすすんだら、外にでてしまいました。

そう、ラウンジは外のテラスにあるんです。

サンフランシスコの朝はむちゃくちゃ寒いので、凍えながら朝ごはん。

Moscone Center からは歩かなくてはいけないし、寒いし、全然いいことがありません。なんでこんなところにしたんでしょうね。

ちなみに、今日だけで 1294 枚もの写真を撮ってしまっいました。こんなに撮るとは思ってもなかったので、メディアが足りない。セッション中に PC にコピーして、やっと間に合わせることができました。

さて、今日櫻庭が聴講したのは

今日のハズレは TS-6609。JavaFX と Swing を会わせて使うということが主題のはずなのに、その部分はわずかしかありませんでした。でも、久しぶりに Amy Fowler を見たからよしということにしよう。

General Session

John Gage's Memo, General Session, JavaOne 2008

今回の General はかなり地味。新しい発表はまったくないです。メディアはこういう General Session を見て、批判的な記事を書くんだろうなぁ。

ちなみに上の写真は John Gage の MC 用メモ。舞台脇に無造作に置いてあるのを発見して撮ってしまいました ^ ^;;

さて、General Session はダンスユニットによるパフォーマンスから始まり、次に恒例の T-Shirt 投げ。今年はプリミティブなパチンコ形式のもの。T-Shirt 投げも今までいろいろと趣向を凝らしてきたのだけれども、どれもイマイチだったということですかね。

そして、再びダンスユニットによるパフォーマンスです。

今年はかんり大きなダンスユニット。20 人ぐらいいるかな。基本は Hip Hop。でも、特に後半はわざと古いスタイルのダンスを織りこんでいました。これは見応えがある。

で、John Gage と James Gosling が登壇。そして、もう 1 人 Chris Melissinos。いつものごとく Don't be shy から始まります。

はじめに James Gosling が示したのは、消しゴムぐらいの大きさのガジェット。Sentilla Mote というセンサーネットワークを構築するための機器で、CLDC が動作します。デモで紹介されたのは CO2の測定。Sun SPOT と狙いがかぶる部分はありますが、よりセンサーネットに特化しているような感じです。

General Session, JavaOne 2008 General Session, JavaOne 2008
General Session, JavaOne 2008 General Session, JavaOne 2008
ステージ上でなくて、スチール写真みたい
T-Shirt Toss, General Session, JavaOne 2008
ここから 5 枚は連続写真
T-Shirt Toss, General Session, JavaOne 2008