2009/07/10

Java Edge の JavaOne 報告会

で、JavaOne 報告会です。

場所はナディアパークにあるオラクルの中部支社。

去年もこの場所で JavaOne 報告会がありました。でも、会場に行ってみると、去年とちょっと違う。あれっ、こんなだったったけ?

そしたら、セミナールームの場所を移したのだと。あぁ、そうでしたか。

話の分担は下道さんが Sun のジェネラルと Cloud 関連の話題、私が Java SE と JavaFX です。

というか、3 回とも内容同じです。ごめんなさーい。

ただ、前振りとして、JavaOne がこんなところで行なわれているとか、セッションの様子はどうなっているかなどを写真で紹介しました。まぁ、いってみれば IAjapan の JavaOne 報告会で大山さんが喋っていた内容のダイジェストみたいなものですね。

ラベル: , , ,

2009/07/04

今度は JJUG の JavaOne 報告会

ということで、JJUG の JavaOne 報告会です。

IAjapan の JavaOne 報告会では、前振りに Java FE について話しましたけど、ここではなし。すいません、本編は IAjapan の時と同じです。

さすがに、これだけ過密スケジュールで資料を作り直す時間がありませんでした。

資料をすばやく作成ということができないタチなんです。ただでさえ時間がかかるのに、今は JavaFX で作っているのでなおさら時間がかかってしまいます。

1 枚 1 時間を切ることはなくて、ちょっと凝り出したりすると 1 枚しあげるのに 5, 6 時間かけてしまったりします。

ということで、ちょこちょこと変えてある部分はあるものの、基本的に同じ話です。もし IAjapan の JavaOne 報告会に出ていた人がいたら、謝ります。ごめんなさーい。

JJUG の JavaOne 報告会では、LT をやるのが恒例なのですが、なんせ今年は JavaOne に参加した人が少ないので LT も少ない。

ちょっと淋しいので、飛び入りで LT もやることにしました。もちろん、事前に資料は用意はしておきましたけどね。

話した内容は、6/7 の最後に書いた食べ物の話です。

私の前の杉山さんも馮さんも、ちょっと固めの話だったので、軟らかい話もあってもいいでしょう。

LT の時間が余っていたので、何分でもいいといわれたのですが、結局 20 分近く喋っていたそうです。これじゃ、LT じゃないですね。スイマセン。

ラベル: , , ,

2009/07/01

IAjapan Java 研究部会 JavaOne 報告会

JavaOne 2009 報告会, IAjapan Java 研究部会 JavaOne 2009 報告会, IAjapan Java 研究部会

去年は IAjapan Java 研究部会と JJUG が一緒に JavaOne 報告会を行なったのですが、今年は日程が折り合わなかったらしく、別々に行なうことになったようです。

JavaOne に日本から参加した人が少ないということから、両方の JavaOne 報告会からお声をかけていただきました。

今日は Java 研究部会、いわゆる旧 Java カンの方。

Java 研究会の JavaOne 報告会では恒例の大山さんのフォトセッションから。

大山さんは目のつけ所がおもしろいんですよね。写真を見ててもとても勉強になります。「あぁ、こういう撮り方があったか!」という気づきがいっぱい。

次が私のセッション。

私は ITpro に書いたもののダイジェスト版のような形です。当然のことながら、Java EE は話せないので、Java SE と JavaFX です。

それだけ喋るのもナンなので、枕として Java FE について。

FE ってナンだと思いますよね。当然です。私が勝手に作ったものですから。FE は Food Edition です。まぁ、いうなれば JavaOne で何食べたという話です。それなりにうけたので、よしとしよう (笑)。

ラベル: , , ,

2009/06/05

今日の JavaOne 2009 Day 4

JavaOne 2009 San Francisco

今日で JavaOne もおしまい。これが最後の JavaOne になるかもしれないので、寂しさもひとしおです。

最終日はセッションも少なく、夕方 (といっても日は高いのですが) にはすべてのセッションが終わってしまいます。今日帰る人も多いので、午後になると人がとても減ります。

それにしても今年は参加者が少なかったですね。いつもであれば長蛇の列がつらなる James Gosling の General Session でさえ、それほど並んでいません。

朝、早起きして並んだのですが、全然人がこないので、拍子抜けでした。

JavaOne 2009 San Francisco

寂しいといえば、上の写真。

この写真は Moscone North の階段を降りたところにある今までの JavaOne T-Shirt で使われたキャラクターなどを使った大きいタペストリーの一部です。

全体は左の写真です。真ん中の建物の 2 階の奥の窓からのぞいている人がいるので誰かと思ったら... John Gage でした。彼もいなくなってしまったんですよね。

ということで、今日は次のセッションを聴講しました。

General Session

Technical Session

The Toy Show

James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco

去年は DJ Anna の演奏があったのですが、今年は何もなし。それはちょっと寂しすぎませんか?

Chris Melissinos, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Chris Melissinos はよく動きます。静の John Gage、道の Chris Melissinos という感じ
James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
御大、James Gosling
Ari Zilka and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Terracotta の Ari Zilka に Duke's Choice Award
Brendan Humphreys and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Atlassian の Brendan Humphreys も Duke's Choics Award。でも、その Duke の持ち方はないんじゃない
Ian Utting, Poul Henriksen, Davin McCall and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
教育用 IDE の BlueJ のメンバ
Mark Gerhard and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
初日の General Session でも取りあげられた Java の FPS である Runescape の Mark Gerhard
Simon Ritter, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Simon Ritter による JavaFX とプロジェクタのデモ。でも、これ去年の Sun Tech Days Tokyo でもやってたよ。しかも、立ち位置悪すぎ
Angela Caicedo, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Angela Caicedo も JavaFX のデモ。透明ディスプレイに赤外 LED を仕込んだ手袋を使ってお絵かきするというデモ。こっちはおもしろかった
Tor Norbye and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Tor Norbye は JavaFX Authoring Tool のデモ
Tor Norbye and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
JavaFX Authoring Tool
Fritjof Bogner Engelhardtsen and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Telenor の Fritjof Bogner Engelhardtsen は SunSPOT に Java Card 3.0 に対応した SIM カードをつなげて、電話をしたりするデモ
Brad Miller, Derek White, Students from Mountain View and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
高校生が対象のロボコン FIRST Robotic Competition に優勝したチームとそのロボット
Brad Miller and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
フィールドにあるボールを拾って、相手のロボットのコンテナに多く入れると勝ち。ここでは拾ったボールを James Gosling に。
Sven Reimer and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
ND SatCom の Sven Reimer は NetBeansプラットフォームを利用した衛星トラッキングシステムをデモした
Chris Boone and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Visuvi の Chris Boone はイメージ検索のデモ
Sam Birney, Van Mittal-Hankle and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Grameen Foundation の Sam Birney と Van Mittal-Hankle はマイクロファイナンス用の情報管理システム
Manuel Tijerino and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Check1two の Manuel Tijerino は Java/JavaFX を用いたジュークボックスを紹介
Manuel Tijerino and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
ジュークボックスに使うから 1 ドルくれと Gosling にせびる。General Session で Gosling に金をせびる人なんて初めて見た
Manuel Tijerino and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
せびった 1 ドルをジュークボックスに投入して、音楽を聴く
Zoltán Szabó, Balázs Lájer and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Zoltán Szabó と Balázs Lájer は Richo のプログラミングコンテスト優勝者。コピー複合機を使ったアンケートの解析システム。でも、これ SQS に似てるよね
Marcial Hernandez, Greg Bollella and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
毎度おなじみ Realtime Java の Greg Bollella が連れてきたのは VM の Marcial Hernandez。VM の無人運転の研究を紹介。Golf GTi が無人でかっ飛ばしていた
Neil Young and James Gosling, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
Neil Young がリンカーンの電気自動車の LincVolt に乗って Gosling を訪ねた時のようす
Neil Young's LincVolt, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
これが Neil Young の LincVolt。UI に Java/JavaFX が使われているらしい
Chris Melissinos, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
最後に Chris Melissinos 再び登場
Chris Melissinos, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco
再び T-Shirt を投げておしまい

General Session の後、Sun の従業員が集まって記念写真。こんなのはじめて見ました。

少なくとも Sun が主催する JavaOne はこれでおしまいなわけでです。

Thank You!, General Session "The Toy Show" on June 5, JavaOne 2009 San Francisco Sun Employees Photo, JavaOne 2009 San Francisco

TS-5427 Inside Out: A Modern Virtual Machine Revealed

なんでもいいけど、話すスピード早すぎ。特に Tony Printezis。

昨日もそうだったけど、VM に関係する人ってみんな早口なのかなぁ?

VM、特に HotSpot のように動作中にダイナミックにコンパイルする VM に関して。HotSpot って、動作しながらプロファイルして、ホットスポットをネイティブにコンパイルするわけです。逆に使われないようになったらデコンパイルもします。

そういう VM の最適化について。たとえば、インラインとか。null にならないことが保証できれば、null チェックをネグってしまうなんて全然知りませんでしたよ。

内容はおもしろいのですが、資料の文字は多いし、早口だし、でついていくのが大変でした。

そういえば、質問の時間に、演台につかつかと近づいていく人が。誰かと思ったら Cliff Click でした。

Brian Goetz, TS-5427 Inside Out: A Modern Virtual Machine Revealed, JavaOne 2009 San Francisco
Brian Goetz
Antonios Printezis, TS-5427 Inside Out: A Modern Virtual Machine Revealed, JavaOne 2009 San Francisco
Antonios Printezis
John Coomes, TS-5427 Inside Out: A Modern Virtual Machine Revealed, JavaOne 2009 San Francisco
John Coomes

TS-4466 Move Your Users - Animation Principles for Great User Experiences

Chet Haase と Romain Guy のセッションといえば Filthy Rich Clients という名物セッションなわけですが、今年はなぜかタイトルが変わってしまいました。タイトルが変わってしまったため気づかなかった人が多いのか、最終日のせいか、聴講者は少なめ。おもしろいセッションなのにもったいない。

開口一番、Chet が "Welcome to the Filthy Rich Clients" というと、Romain がすかさず突っ込み。こんな感じで、漫才のようにセッションが続いていきます。タイトルも勝手に Animation Rules に変えちゃったりして。

でも、内容はかなり示唆に富んだもの。

ディズニーが出している The illusion of Life というアニメーションを作るための本と、Timing for Animation という本をベースに、漫画のアニメーションと GUI のアニメーションで通じるところ通じないところを比較しながら、効果的なアニメーションについて考えていくセッション。

まずは、漫画のアニメーションにおける 12 の法則。一応日本語にしてみましたけど、もしかするとアニメ特有の訳語や言い回しがあるのかもしれないので、参考程度に。

  • Squash & Stretch つぶす & のばす
    物体を動かす時にそのままの形状でなく、ぶつかった時はつぶし、飛び上がる時はのばすなど変形させる
  • Anticipation 先行
    速い動作の前に、ちょっとだけ後ろに引くような動作を付け加えると、スピード感が増す
  • Staging 演出
  • Straight Ahead vs. Pose to Pose 連続 vs 離散
    物体がある地点から他の地点に移動する時、刻々と形状を変化させるか、移動開始の形状をそのまま維持するか
  • Follow Through & Overlapping Action 事後動作 & オーバラップした動作
  • Slow In & Out スローイン & スローアウト
  • Arcs 弧
    物体を移動させる時に弧を描かせる
  • Secondary Action 第 2 の動作
    移動する時に、移動のアニメーションだけでなく、もう1つ別のアニメーションを組み合わせる
  • Timing タイミング
  • Exaggeration 誇張表現
  • Solid Drawing リアルな絵
  • Appeal アピール

こういうことに対し、GUI では普通のアニメに比べてリフレッシュレートが高いことや、手書きではないことから、すべてをそのまま鵜呑みにできるわけではありません。もちろん、かぶるところもあります。

ということで、GUI での 12 の原則。

  • Squash & Stretch
  • Anticipation
  • Staging
  • Straight Ahead vs. Pose to Pose
  • Follow Through and Overlapping Action
  • Slow In & Out
  • Arcs
  • Secondary Action
  • Timing
  • Exaggeration
  • Solid Drawing
  • Appeal

その他に細かいところだと

  • Timed
  • Designed
  • Smooth
  • Transitioning
  • Realistic
  • Anticipatory
  • Simple

考えさせられますね。

おもしろかったのが、サンプル。現在、Chet は Adobe に所属しているのですが、サンプルは半分が Flash、半分が Java でした。やっぱり、まだ Java を使かっているんですかねぇ。

Chet Haase, TS-4466 Move Your Users: Animation Principles for Great User Experiences, JavaOne 2009 San Francisco
Chet Haase
Romain Guy, TS-4466 Move Your Users: Animation Principles for Great User Experiences, JavaOne 2009 San Francisco
Romain Guy

というわけで、今年の JavaOne もこれでおしまい。

Memory Lane, JavaOne 2009 San Francisco

ラベル: , ,

2009/06/04

今日の JavaOne 2009 Day 3

Duke Photo Ops, JavaOne 2009 San Francisco

今日の午前中の General Session はなんと Miscrosoft。

Microsoft が General Session を担当するなんて、以前だったら考えられないですね。でも、全然興味がないので、ゆっくり寝ることにしました。

ところで、例年 Duke と写真を捕れる場所が、今年は緑の布が張られています。

ここで写真を撮るのは以前と変わりません。変わるのは撮った後。グリーンバックを画像処理で抜いてしまい、カードに印刷してくれるのです。

普段は Duke はいないのですが、今日はたまたま Duke が来てました。Duke と一緒に写真を撮ってカードを作ってくれるのです。

カードを作るため並んでいる人が多数。今年の人気スポットになってました。

Duke Photo Ops, JavaOne 2009 San Francisco Duke Photo Ops, JavaOne 2009 San Francisco

ということで、今日聴講したセッションです。

Technical Session

BOF

  • BOF-5087 All Things I/O with JDK Release 7
  • BOF-4595 Insights into Java Platformsk Standard Edition, and JavaFX Platform Performance
  • BOF-4135 Java Programming Language Tools in JDK Release 7

その他

BOF-5087 と BOF-4595 は Q&A セッションでした。なーんだ、そうだったのか。だったら、Ask the X とか Meet the X Team のようなセッション名にしてくれないかなぁ

Q&A セッションは、その対象に対してすでに知識を持っており、問題意識を持っている人にはとても有益です。でも、事前の知識がない場合、とても退屈。全然分からないのですから ^ ^;;

最後の BOF-4135 は内容がちょっと薄い。そういえば、apt は JDK 7 からはサポートされないようです。

今年は結局、おもしろかった BOF に参加できませんでした。残念。

TS-5578 The New World: JavaFX Technology-Based UI Controls

JavaFX のチームが JavaFX 1.2 の機能を紹介する唯一のセッションかもしれません。ほんとはちゃんとジェネラルな情報、たとえば JavaFX 1.2 の新機能をまとめたり、今後のロードマップを紹介したりするセッションを初日に欲しいところです。

なぜ初日かというと、そこで各機能の詳細を紹介するセッション情報を得られるので、予定を組み直すことも可能だからです。

で、このセッションは JavaFX 1.2 で拡充された UI Controls に関するセッション。

UI Controls は Swing をベースにしていない GUI コンポーネントのことです。Swing をベースにしていないので、JavaFX Mobile でも使うことが可能です。

JavaFX 1.1 で JavaFX Mobile を使うことができるようになりましたが、GUI コンポーネントが皆無だったので (ほんの少しだけありましたけど)、ろくにアプリケーションを書くことができませんでした。それが、やっと普通に使えるレベルまで達したというところです。

UI Controls には

  • Button
  • ToggleButton/RadioButton/CheckButton
  • Slider
  • Label
  • ScrollBar
  • Hyperlink
  • ProgressIndicator
  • TextBox
  • ListView

その他に

  • Single/Multiline text
  • Position text within Labeled bouds
  • Text overrun rules
  • Font
  • Graphic

が用意されています。しかも、これらの機能は JavaFX 1.2 の新機能である Mixin で提供されます。

JavaFX ではもともとインタフェースが使えないかわりに、多重継承をサポートしていたのですが、多重継承は使うのが難しい。だから、今回の Mixin はいい選択だと思います。

で、これらは CSS で外観を変えることも可能です。

そして、もう 1 つが Charts。棒グラフや円グラフ、折れ線グラフなどを使えるようになりました。

個人的にはレイアウトマネージャが拡充されたのがうれしいところ。JavaFX ではノードごとに回転やスケールなどが変更できるので、それらを含めたレイアウトをするのは大変らしいです。

それにしても、これでやっとまともなレイアウトをできるようになりました。これで、ずいぶん Flex に近づいてきたという感じですね。

ところで、このセッションだけ資料が JavaOne のテンプレートと違っていました。こんなこと許されるの? JavaOne は事務局がすべてのセッションの資料を事前にチェックするはずなのに (BOF は除く)、なんでテンプレートが違っていて平気なんだろう?

Amy Fowler, TS-5578 The New World: JavaFX Technology-Based UI Controls, JavaOne 2009 San Francisco
Amy Fowler
Richard Bair, TS-5578 The New World: JavaFX Technology-Based UI Controls, JavaOne 2009 San Francisco
Richard Bair
Jasper Potts, TS-5578 The New World: JavaFX Technology-Based UI Controls, JavaOne 2009 San Francisco
Jasper Potts
Jasper Potts, TS-5578 The New World: JavaFX Technology-Based UI Controls, JavaOne 2009 San Francisco

TS-5052 Hacking the File System with JDK Release 7

Alan Bateman and Carl Quinn, TS-5052 Hacking the File System with JDK Release 7, JavaOne 2009 San Francisco
右が Alan Bateman、左が Carl Quinn

JSR 203 More New I/O APIs for the Java Platform ("NIO.2") のファイルシステムに関する部分だけを紹介するセッション。

今まで、java.io.File クラスではできなかったことがいろいろとできそうです。

基本は Path クラス。

PathオブジェクトはFileクラスのtoPathメソッドを使用するか、FileSystemクラスのgetPathメソッドを使用して取得します。

ところが、JSR 203 の public review draft には FileSytem クラスには getPath ではなくて toPath メソッドになっています。

public review draft 以後の動きは Expert Group でないとよく分からないのですが、いろいろと変わっているのかもしれません。

実をいうと公開されている資料にはコードは全然のっていません。セッションではコード例はすべて NetBeans で示されています。このコードはもちろん公開されていません。

できれば、資料にものせてもらいたいですね。

個人的におもしろかったのが、Visitor パターンを使ってファイルをトラバースしながら処理を行なう API。これはおもしろい。

また、ファイルに変更があった場合にのティふぃけーションをあげてくれる機能もあります。いままで、ファイルが変更されたかどうかを調べるには、定期的にファイルの最終変更時間を取得するという方法を用いていましたが、のティふぃけーションでかなり簡単になりそうです。

扱えるファイルのメタ情報も大幅に増加しています。

TS-4887 Garbage Collection Tuning in the Java HotSpot Virtual Machine

Java VM はいろいろな種類の GC が採用されていますが、それぞれの特徴とチューニング方法を紹介するセッション。

おもに、Yound 世代の CopyGC と、パラレル GC、Concurrent Mark & Sweep の 3 種類。残念なことに G1 GC は紹介されませんでした。

最後に GC をモニタリングする方法。

びっくりしたのが、VisualGC が VisualVM のプラグインとして提供されるようになったこと。jconsole がなかったころは VisualGC をよく使っていたので、ここで復活するとは思いもしませんでした。

確かに、jconsole では Young 世代の寿命のチャートが表示されないので、それなりに使えるかもしれません。

その他に、オフラインのツールとして

  • GC Logging
  • PrintGCStats
  • GChisto

が紹介されました。

Charlie Hunt, TS-4887 Garbage Collection Tuning in the Java HotSpot Virtual Machine, JavaOne 2009 San Francisco
Charlie Hunt
Antonios Printezis, TS-4887 Garbage Collection Tuning in the Java HotSpot Virtual Machine, JavaOne 2009 San Francisco
Antonion Printezis

TS-5496 This in Not Your Father's Von Neumann Machine; How Modern Architecture Impacts Your Java Apps

CPU のアーキテクチャーの歴史と、それがどのようにアプリケーションに影響するかというセッション。スピーカーは ex-Sun で現 Azul の Cliff Click とまたまた Brian Goetz。

印象的だったのが、CPU とメモリのスピードのギャップが大きくなってしまった現在は、メモリは新しいディスクとしてみるしかないということ。

だから、なるべくキャッシュをなるべくミスしないようにするのが重要になってくるわけです。

Brian Goetz, TS-5496 This Is Not Your Father's Von Neumann Machine; How Modern Architecture Impacts Your Java Apps, JavaOne 2009 San Francisco
Brian Goetz
Cliff Click and Brian Goetz, TS-5496 This Is Not Your Father's Von Neumann Machine; How Modern Architecture Impacts Your Java Apps, JavaOne 2009 San Francisco
Cliff Click

"After Dark" Bash

The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco

今日の 1 コマ目の BOF が外れだったので、途中で抜け出して "After Dark" Bash へ。

今年の "After Dark" Bash は World Classic Rockers のライブです。

もともと Moscone Center の上の Yerba Buena Park で行なわれるはずだったのですが、昨日の夜場所変更のメールが。

天気予報では今日は雨の予報でした。さすがに雨の中、野外でライブを行なうわけにはいかないということで、Marriott Hotel の地下のボールルームに変更になったのです。

しかし、蓋を開けてみたら、今日はよく晴れています。今回の JavaOne は雨の日はないものの、ずっと曇りで寒い日が続いていたのですが、はじめて朝から晴れてました。

これだったら野外の方がよかったなぁ。

The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco

さて、今日ライブを行なう World Classic Rockers ですが、それほど知名度は高くありませ。去年の Smash Mouth に比べるまでもありません。

でも、メンバはすごいのです。

ようするに、World Classic Rockers は以前は著名なバンドなどで活躍していた人が集まってできたバンドなのです。

まぁ、いうなればシニアバンドですね。

メンバーを並べてみると

  • Vocal: Greg Walker (元 Santana)
  • Vocal: Fran Cosmo (元 Boston)
  • Guitar: Michael Monarch (元 Steppenwolf)
  • Base: Nick St. Nicholas (元 Steppenwolf)
  • Drums: Ansley Dunbar (元 Journey)
  • Guitar: David Coyle
  • Keyboard: Mark Hoyt

ステージと客席の間隔はほとんどなし。すぐ目の前で演奏してます。だから、上の写真のようなドアップも撮れるわけです。でも、被写体ぶれしてますが ^ ^;;

櫻庭は BOF の合間に来ただけなので、Black Magic Woman など 2, 3 曲聞いただけで再び BOF へ向かいました。もっと聞いていたかったなぁ。

後で聞いた話だと、後半ゲストとして元 TOTO のボーカルが来たらしいのです。そして、Africa などを演奏したらしいのです。

それを知っているのであれば、次の BOF なんか聴講せずにここに居続ければよかったのに......

後悔先に立たず。

The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco
The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco The World Classic Rockers, "After Dark" Bash, JavaOne 2009 San Francisco

ラベル: , ,

2009/06/03

今日の JavaOne 2009 Day 2

Pavilion, JavaOne 2009/CommunityOne West 2009
Alan Bateman, TS-5052 Hacking the File System with JDK Release 7, JavaOne 2009 San Francisco
セッション会場

今日の朝の General Session は Sony Ericsson。なので、自主休講。

ランチ会場で丸山先生たちとおしゃべりしていたら、あっという間に General Session の時間は過ぎ去っていったのでした。

それにしても今年はいろんなところで Twitter してます。こういうマイクロブログは JavaOne のようなカンファレンスには便利ですね。ご飯の約束などもこれでできるし。

ちなみに、上の写真は Pavilion でやっている Poker の景品。ポルシェですよ、ポルシェ。ちなみに 2 位は Segway でした。

話はまったく変わるのですが、今年のテクニカルセッション or BOF は、今までと違ったところがありました。

何が違っていたのかというと、セッション会場に机があるのです。もちろん、ないところもあるのですが、広めの会場はみな机配備。こんなのはじめて。

机があるせいで、セッション中でも PC を開くのが楽。結局、Twitter をやってしまって、なかなかセッションに集中できないのでした。

というわけで、今日は次のセッションを聴講しました。

General Session

Technical Session

BOF

TS-4861 ははずれ。いちおう、JavaFX では有名な Jim Weaver のセッションだったのですが、まったくプレゼンになっていません。

もう 1 人 Stephen Chin という若い人といっしょのプレゼンです。Jim Weaver はこの若い人がいうことに突っこみを入れる役 (?)。でも、その突っこみがまるでなっていない。突っこむことによって論旨があいまいになるばかり。これでは逆効果にしかなりません。

友達どうしで話している時だったら全然かまわないのですが、こういう公の場ではダメ。せめて、Romain Guy の突っこみを勉強してから、出直してもらいたいなぁ。

2 つの BOF もはずれ。なんか内容が薄い... 今年はほんとに BOF は不作だ。

Sun General Session - Your Java Lifestyle: Mobile, TV and Beyoond

ここ数年、Java ME は初日の Technical General Session から外されてしまい、普通のセッション枠で Java ME だけの General Session をやっていました。

ところが、今年は Java ME 単独でちゃんとした General Session が行なわれました。

この枠はもともとプラチナスポンサー枠だったのです。しかし、例年プラチナスポンサーだった Oracle が、今年はスポンサーを降りてしまったのです。もちろん、買収のからみで、スポンサーができないのだと思います。

Oracle の代わりになるプラチナスポンサーがいればよかったのでしょうが、決まらなかったんでしょうね。

しかたなく Java ME 枠になったというのが櫻庭の見るところです。

ということで、もともとは Technical General Session だったという過去を持つ、この General Session ですが、Technical なところが全くないというのはどういうことなのだろう。

話のメインは JavaFX。JavaFX Mobile や JavaFX TV、そして、昨日の General Session でも搭乗した JavaFX オーサリングツール。

しかし、いずれもデモのみで、新しいバージョンの機能紹介とか、今後のロードマップなどまったく説明されません。こんなんでいいのか?

JavaFX 以外は他の企業で、たとえば PayPal や、Sony Ericsson、Qualcomm などからゲストを呼んで話をしたり、デモするだけ。こういうないようなのであれば、初日の朝の General Session でやってもらいたいですね。

確かにメディア受けはすると思いますけど、開発者にはつまらないです。

ちなみにこのセッションでも T-Shirt 投げがありました。このためにだけ James Gosling が駆り出されてましたよ。T-Shirt 投げが終わったら、T-Shirt 用スリングショットを持ってすぐに帰って行ってしまいました。

ちなみのちなみですが、ここで T-Shirt を受け取った人は JavaFX Phone ももらえるというおまけ付き。これはちょっと欲しかった ^ ^;;

Chris Melissinos, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
MC は Chris Melissions
Eric Klein and Chris Melissinos, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
でも、すぐに Eric Klein にバトンタッチ
T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
パチンコ持って、Gosling あらわる
T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
T-Shirts Throwing, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco Eric Klein, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
Eric Klein, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
Eric Klein は猫背
Eran Davidov and Eric Klein, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
Eran Davidov と JavaFX Mobile のデモ
Osama Bedier, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
PayPal の Osama Bedier
Steve Glagow and Eric Klein, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
Orange の Steve Galgow
Rob Chandhok and Eric Klein, General Session "Your Java Lifestyle: Mobile, TV and Beyond" on Jun 3, JavaOne 2009 San Francisco
Qualcomm の Rob Chandhok。Smartbook について語る
JavaOne 2009 San Francisco
General Session 後の大混雑

TS-5575 Extrem GUI Makeover (Hybrid Swing and JavaFX Technology)

Extream GUI Makeover は毎年行なわれている名物セッションですが、去年から JavaFX を使いはじめました。今年は Hybrid というので、Swing アプリで一部だけ JavaFX を使う話かと思ったら... 逆でした。

でも、それは当たり前すぎてつまらないなぁ。

毎年、何かしらのアプリケーションを取りあげて、それを徐々にかっこよくしていくというスタイルで進みます。

今年の題材は JavaOne 2006 の Extrem GUI Makeover。ちなみに 2006 年は Chet Haasse や Romain Guy が担当していたはず。

すでにあの時点でそれなりのかっこいい GUI になっていたのですが、もっと見栄えをよくしようというわけです。

たとえば、イメージを下に反射しているように表示することや、アイコンにマウスカーソルが入ると文字が浮きでる、イメージを角丸にするなどを紹介しました。こういうのは JavaFX を使うと簡単にできます。

また、CSS で背景色やフォントを設定することなどを紹介しました。

ちょっとおもしろかったのが、ページをめくる動作。3D は使わずに 2D だけでやっています。自分でもやったことがあるのですが、どうもうまくページがめくれていくように見えないのです。

今日気がついたのは、影のつけかた。そうか、あすこに影をつけるともっともらしいんですね。

Amy Fowler, TS-5575 Extreme GUI Makeover (Hybrid Swing and JavaFX Technology), JavaOne 2009 San Francisco
Amy Fowler
David Grieve, TS-5575 Extreme GUI Makeover (Hybrid Swing and JavaFX Technology), JavaOne 2009 San Francisco
David Grieve
Paru Somashekar, TS-5575 Extreme GUI Makeover (Hybrid Swing and JavaFX Technology), JavaOne 2009 San Francisco
Paru Somashekar
Jasper Potts, TS-5575 Extreme GUI Makeover (Hybrid Swing and JavaFX Technology), JavaOne 2009 San Francisco
Jasper Potts

TS-4954 Modularity in the Java Programming Language: JSR 294 and Beyond

Alex Buckley, TS-4954 Modularity in the Java Programming Language: JSR 294 and Beyond, JavaOne 2009 San Francisco
Alex Buckley

いったんなくなってしまった JSR 294 ですが、JSR 277 がキャンセルされたおかげで復活です。

まったく気づいていなかったのですが、この前のセッションが Mark Reinhold の Project Jigsaw のセッションでした。しまった、GUI Makeover なんかじゃなくて、Jigsaw のセッションに出ればよかった。

もう一度おさらいしておくと、JSR 294 はインプリメンテーションのモジュール化を目指し、module というモジュール (以前は supperpackage と呼ばれていました) を導入しようとしています。

一方の JSR 277 はデプロイメントのモジュール化を目指し、JAR ファイルの代わりに JAM ファイルによるモジュール化を行なおうとしていました。

そして、去年の JavaOne 2008 ではインプリメンテーションとデプロイメントを別々に考えるのではなく、一緒に考えようということで JSR 277 に統合されたのでした。

しかし、去年の暮れになって JSR 277 が急にキャンセルされたのです。

そして、その後 Jigsaw でより低レベルのモジュール化を行なうことになりました。Jigsaw もインプリメンテーションとデプロイメントの両方の側面を持っていますが、インプリメンテーションの部分に関しては JSR 294 を採用することになりました。

つまり、もともとの JSR 277 で提唱されていた JAM がはじかれてしまったように見えます。確かに JAM はとても評判が悪かったので、しかたないかもしれません。

Jigsaw は言語や VM の部分は JSR 294 をそのまま採用し、パッケージングに関しては JAR ファイルをそのまま使用します。とはいってもバージョニングなどの問題があるので、それらの問題を最小限の変更で解決しようというところのようです。

それが低レベルのモジュール化ということを表しているようです。

そして、Jigsaw のリファレンスインプリメンテーションを行なっているのが OpenJDK のサブプロジェクトである Project Jigsaw です。

で、このセッションは JSR 294 に関するものです。なので、Jigsaw で決めているデプロイメント関連のモジュール化は言及されませんでした。

TS-5217 "Effective Java": Still Effective After All These Years

Joshua Bloch, TS-5217 "Effective Java": Still Effective After All These Years, JavaOne 2009 San Francisco
Joshua Bloch

Effective Java も名物セッション。このセッションはほんとに人気があって、事前登録ができませんでした。で、キャンセル待ち列に並んだんですが、すでにこちらも 200 人ぐらい並んでいる。入れないかと思いました。

ようやく入れたのはセッションが開始されてから 10 分後。会場内は立ち見もいっぱい。とりあえず、床に座るとしても前の方がいいので、前にいってみたら前から 2 列目に空席があったのですかさずゲット。そしたら、斜め前には N 社の K 村さんが座ってました ^ ^;;

はじめはジェネリクスの extends や super の使い方。途中から入ったのでよく理解できていませんが、去年の PECS 原則をもう一度やっていたようです。

次が 2 値しか取らない変数でも、true と false で意味が分かりにくい場合は積極的に enum を使おうね、という話。

そして、可変数引数。可変数引数はパフォーマンスが落ちるらしいです。なので、よく使われる引数の個数が分かっているのであれば、それを可変数引数ではなく、固定引数で作っておいて、その他に可変数引数を使うという使い方を紹介してました。

たとえば、EmunSet クラスの of メソッドは引数が 5 つまでのメソッドは固定で定義されていて、それ以上が可変数引数が使われているのだそうです。

次は CocurrentMap の話。

Concurrency Utilities で定義されているクラスは synchronized で囲ったらダメ、という話。get して、値がなかったら put する時に使う putIfAbsent メソッドの使い方。Brian Goetz の本で勉強していたので、putIfAbsent メソッドは知っていましたけど、パフォーマンスを上げるにはどう書けばいいかという話。

でも、get メソッドの後、putIfAbsent メソッドをコールするまでの間に、他のスレッドからアクセスされていたらどうなるんだろう?

最後がシリアライズする時に、Proxy Pattern が使えるよという話でした。

BOF-4724 Monitoring and Troubleshooting Java Platform Applications with JDK Software

VisualVM を作っている Tomas Hurka と Mandy Chung のセッション。

今年は保守管理系のセッションがあまりありません。JMX 2.0 がもう落ち着いちゃったかもしれません。それにしても、今年は JSR-255 JMX 2.0 のスペックリードの Eamonn McManus の姿が見あたりません。もしかして、辞めちゃったのかなぁ?

セッションの前半はツールの紹介。jconsole や VisualVM など。

後半がよくあるトラブルへの対処法。取りあげられたのは

  • Deadlocks
  • Memory leak
  • Finalizers
  • High lock contentions
  • OutOfMemoryError

の 5 種類です。

Deadlockに関しては、HotSpot VM にもともとデッドロック検出機能が備わっています。ツールで使えるのは jvisualvm と jstack。jstack を使う場合は -l オプションを使用すると、java.util.concurrent のロックに関する情報を取得できます。

次のメモリーリークはまずメモリ使用をモニタする、ヒープの使用量が上がっていれば次にヒープのヒストグラムから怪しそうな箇所を見つけ、ヒープのスナップショットから解析するという対応を行ないます。

最初のヒープのモニタには jvisualvm もしくは jstat が使用できます。ヒストグラムから怪しい部分を見つけるには jvisualvm か jmap -histo を使用できます。

そして、スナップショットの解析は jvisualvm、jmap -dump もしくは jhat が使えます。

ファイナライザでファイナライズがペンディングになっているオブジェクトを探すのはメモリリークと似ています。ファイナライズがペンディングされているオブジェクトを観察するには jvisualvm もしくは jconsole が使えます。

Hot Lock Contention はロックの取り合いの検出。ツールとしては jvisualvm と jconsole。

OutOfMemoryErrorはヒープなのか、パーマネント領域なのか、ネイティブコードなのか、などメモリの種類を特定します。そして、OutOfMemoryErroが生成したヒープダンプを解析します。

ツールとしては jvisualvm と jinfo -flag +HeapDumpOnOutOfMemoryError を使用します。

Tomas Hurka がスピーカなので、ツールの選択は jvisualvm よりですね。jconsole でも使えそうなところはありますが、今となったら jvisualvm なのかもしれません。

Mandy Chung, BOF-4724 Monitoring and Troubleshooting Java Platform Applications with JDK Software, JavaOne 2009 San Francisco
Mandy Chung
Tomas Hurka, BOF-4724 Monitoring and Troubleshooting Java Platform Applications with JDK Software, JavaOne 2009 San Francisco
Tomas Hurka

ラベル: , ,

2009/06/02

今日の JavaOne 2009 Day 1

JavaOne 2009 San Francisco

さて、今日から JavaOne 本番。

ということで、まずは朝ご飯です。ところが、今年の JavaOne はなんと Alumni Lounge がなくなっていたんです!!

おととしまでは、JavaOne の朝食はベーグルやデニッシュの食べ放題だったのですが、去年からパックになってしまいました。それでも、Alumni Lounge だけは食べ放題だったのですが...

ところが、今年は Alumni Lounge がなくなってしまったので、Alumni ではない初参加者といっしょにパックの朝ご飯。ちょっと悲しい。

とはいっても、そんなに食べるわけじゃないので、いいといえばいいんですけど、気分の問題が...

Breakfast, JavaOne 2009 San Francisco Breakfast, JavaOne 2009 San Francisco
Breakfast, JavaOne 2009 San Francisco

ということで、朝ご飯を食べてから、General Session 会場へ。ところが、例年すごい行列があるのに、今年はそれほどでもありません。やっぱり、参加者が減っているんでしょうね。

というわけで、今日聴講したセッションです。

General Session

Technical Session

BOF

なんと Java SE の一番重要なセッションである TS-5362 The Java Platform, Standard Edition (Java SE Platform) Development Kit Version 7 がドタキャン。Java SE 7 はまだまだ一悶着あるのかもしれません。

BOF は 1 つだけ。今年はいまいち BOF におもしろそうなセッションがないような気がします。

Sun General Sessioon - Java: Change (Y)our World

Scott McNealy, Before General Session on June 2, JavaOne 2009 San Francisco

今日の General Session は事前情報によると、大物のサプライズゲストがいるらしいのです。

Larry かなぁ? でも、合併期間の間はこういう場に立てないんじゃないかなぁ、などいろいろ勘ぐっていたのです。

私はいつものごとく一番前に陣取って、写真、写真。

そうしたら、General Session が始まった後、スタッフに連れられて黒いスーツを着た人が一番前の席に座ったのです。そう、彼が Larry Ellison でした。

というわけで、サプライズゲストが誰だか分かっちゃいました ^ ^;;

 

General Session に関してメディアでは Larry Ellison と Scott McNealy の話題と、Java Store の話題のようですが...

個人的には、やっとでてきた JavaFX Authoring Tool の方が気になります。

Scott に関しては、壇上から降りた時に参加者がスタンディングオベーションしたのが印象に残ってます。やっぱり、彼は人気ありますね。

DJ Anna, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
DJ Anna。去年は最終日でしたが、今年は初日に登場
DJ Anna, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
DJ Anna, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
DJ Anna, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco DJ Anna, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Scott McNealy, Before General Session on June 2, JavaOne 2009 San Francisco
Scott McNealy
Jonathan Schwartz and James Gosling, Before General Session on June 2, JavaOne 2009 San Francisco
James Gosling と Jonathan Schewartz
James Gosling, Before General Session on June 2, JavaOne 2009 San Francisco
Chris Melissinos, Before General Session on June 2, JavaOne 2009 San Francisco
Chris Melissinos
James Gosling, Before General Session on June 2, JavaOne 2009 San Francisco
プレゼン準備中
Chris Melissinos, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
MC は大方の予想通り Chris Melissinos でした
Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
そして Jonathan Schwartz 登場
Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
James Barrese and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
eBay の James Barrese を壇上にあげる
Alan Brenner and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
続いて RIM の Alan Brenner。Alan Brenner は ex-Sun。久しぶりに見た
Don Eklund and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Blu-ray に関して Sony Pictures の Don Eklund を呼ぶ
Lowell McAdam and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
次は Verizon の Lowell McAdam
Dyna Bryant and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Intel の Diane Bryant
Dyna Bryant, Paul Ciciora and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Diane Bryant が紹介したのは CBOE の Paul Ciciora。CBOE では 1 秒で 300,000 トランザクションを Java で処理しているらしい
Ronan McBrien and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
ここから JavaFX のパート。まず JavaFX TV の発表
Nandini Ramani and Jonathan Schwartz, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
そして、Nandini Ramani が Authoring Tool のデモ。でも、失敗 ^ ^;;
JavaFX authoring tool, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Authoring Tool のスクリーンショット
Jonathan Schwartz and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
ここで James Gosling を壇上へ
James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Jonathan Schwartz and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
James Gosling が発表したのは Java Store。しかし、Gosling が何か発表するというのはとても珍しい
Jonathan Schwartz and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Drag & Drop だけでアプリをインストールできる
Mark Gerhard, Jonathan Schwartz and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
アプリの例として、Java の 3D FPS ゲームの RuneScape を紹介。Jagex の Mark Gerhard に Duke's Choice Award の Duke 像を渡す
Jonathan Schwartz, Scott McNealy and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
ここで Scott McNealy 登場。Schwartz と交代
Scott McNealy, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
ここで取りだしたものは...
T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
T シャツパチンコ
T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco T-Shirts Throwing, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
お疲れさま
Randy Bryant, Scott McNealy and James Gosling, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Alice 3.0 に対して Duke's Choice Awards が贈られる
Scott McNealy, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Scott McNealy, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
何か聞きたいことない?
General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Scott McNealy and Larry Ellison, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
さんざんおちょくった後に Larry Ellison 登場
Scott McNealy and Larry Ellison, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
みなピンマイクなのに、Larry だけハンドマイク
Larry Ellison, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
Scott McNealy and Larry Ellison, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco Scott McNealy and Larry Ellison, General Session "Java: Change (Y)Our World" on June 2, JavaOne 2009 San Francisco
信号旗で JAVA を示しています
Scott McNealy, General Session on June 2, JavaOne 2009 San Francisco
スタンディングオベーション
Scott McNealy, General Session on June 2, JavaOne 2009 San Francisco DJ Anna, General Session on June 2, JavaOne 2009 San Francisco

Technical General Session - Intelligent Design: The Pervasive Java Platform

Robert Brewin, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco

時間的には Puzzlers の方が先なのですが...

今年も MC は Bob Brewin。

彼は見てくれ的にかつての Graham Hamiltion と同じように渋めの人なのかと思っていたのですが、今回はちょっと印象が違いました。

だって、登場する時に "Thank you, thank you, thank you, ....." と軽い調子で出てきたのです。ちょっと軽すぎだと思うよ、Bob。

JavaFX はデモのみ。ちゃんと JavaFX 1.2 の新機能の紹介とかしてくれないかなぁ。

JavaFX にはこういう場でコンセプトやテーマを話せるようなカリスマ性を持ったスタープレイヤーがいないのが問題ですね。

JavaFX の父である Chris Oliver がその役をできればいいのでしょうけど、どうも彼はそういう感じではないのです。今年はセッションも担当していないし...

もっとみんなを引っ張ってくれるような人がいればいいんですけどねぇ。

Robert Brewin, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco
Bob Brewin
John Burkey and Robert Brewin, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco
Facebook Client のデモ

Java SE は久しぶりに登場の Mark Reinhold。去年は Danny Coward でしたね。

Mark Reinhold は持ち時間のほとんどを Java SE 7 にあてていました。しかし、紹介したのはなんとたったの 3 つ。

  • Modular Platform
  • Multi-Lingual VM
  • Productive Developers

しかも、そのうちの Multi-Lingual VM は名前をあげたぐらい。

Modular Platform は Project Jigsaw の紹介。去年までの JSR 277 は却下され、より低レベルなところでやり直しといったところです。JRE 自体もモジュール化され、Synaptic Package Monager というツールから必要なモジュールをインストールするデモを行ないました。

Multi-Lingual VM は Da Vinci Machine Project の名前を出しただけ。3 つめの Productive Developers は言語のマイナーな修正。ジェネリクスの定義をちょっとだけ省略できる例をしめして、Project Coin を紹介しておしまいです。

現在は JDK 7 Milstone 3 が公開されていますが、その後のスケジュール。Milestone 8 が 2010/2/18 の予定で、これが Release Candidate になるらしいです。正式リリースの日程は不明。ほんといつ出るんでしょうね?

Java EE は去年に引き続き Roberto Chinnici。主に Java EE 6 の話。

ちょっとだけ GlassFish v3 の話もしてました。

最後は Java Store。でも、ほとんど時間がなかったですね。いちおう、出ましたというぐらい。

Mark Reinhold, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco
Mark Reinhold
Mark Reinhold, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco
Roberto Chinnici, Technical General Session "Intelligent Design: The Pervasive Java Platform" on June 2, JavaOne 2009 San Francisco
Roberto Chinnici

TS-5186 Return of the Puzzlers: Schlock and Awe

Joshua Bloch and Neal Gafter, TS-5186 Return of the Puzzlers: Schlock and Awe, JavaOne 2009 San Francisco
左が Neal Gafter、右が Joshua Bloch

Joshua Bloch と Neal Gafter はクロージャー問題で喧嘩していたのですが、最近仲直りしたようです。Neal がクロージャー推進派、Jochua が反対派だったんですけど、収まりどころはどうなったんでしょうね。

喧嘩状態だったので、おととしの Puzzlers は Joshua Bloch と William Pugh、去年は Puzzlers 自体ありませんでした。仲直りしたので、復活です。なので、タイトルが Return of the Puzzlers。

今回は 7 問。

今回はとーっても難しかったです。とりあえず、1 問だけ。

public class SimpleQuestion {
    static boolean yesOrNo(String s) {
        s = s.toLowerCase();
        if (s.equals("yes")  || s.equals("y") || s.equals("t")) {
            s = "true";
        }
        return Boolean.getBoolean(s);
    }
 
    public static void main(String[] args) {
        System.out.println(
            yesOrNo("true") + " " + yesOrNo("YeS"));
    }
}

選択肢が

  1. false false
  2. true false
  3. true true
  4. None of the above

です。答えは書かないでおくので、ぜひ考えてみてください。

TS-4060 Small Language Changes in JDK Release 7

Joseph Darcy, TS-4060 Small Language Changes in JDK Release 7, JavaOne 2009 San Francisco
Joseph Darcy

Java SE 7 は再び言語仕様の変更があります。

とはいっても、クロージャーも XML リテラルも入りません。とはいっても、Project Jigsaw のように大きい変更もあります。

で、その他の小さな言語仕様の変更を行なっているのが Project Coin です。

Coin という名前は、語呂合わせです。コインは小銭、つまり英語でいうところの small change。つまり、小さい変更 small change とかけているのです。

このセッションでは Project Coin で実施する言語仕様の変更についてのセッションではないところがミソ。

言語仕様の変更がいかに大変かという示すためのセッションです ^ ^;;

今までの言語仕様と矛盾なく、かつあいまいさが入らないように変更を行なうというのはかなり大変なようです。できれば、ライブラリレベルで解決できれば、それにこしたことはないというところでしょう。

Project Coin では、言語仕様の変更に関して一般から募集していました。現在はその中から、実際に Java SE 7 に取り込むものを選択中のようです。

いちおう例として、クローズしなくても勝手にストリームを閉じることや、文字列を switch 文の case に記述すること、リストやマップを配列のようにアクセスすることなどが紹介されました。でも、これらのすべてが SE 7 に入ると決まったわけではありません。

最終的にはどうなるんでしょうね。

TS-4222 Asynchrous I/O Tricks and Tips

Alan Bateman, TS-4222 Asynchronous I/O Tricks and Tips, JavaOne 2009 San Francisco
Alan Bateman
Jean-François Arcand, TS-4222 Asynchronous I/O Tricks and Tips, JavaOne 2009 San Francisco
Jean-François Arcand

J2SE 1.4 で導入された New I/O ですが、J2SE 1.4 には入れられなかった部分を JSR-203 More New I/O として提案されていました。

もともと、JSR-203 は J2SE 5.0 で入る予定だったのですが、スリップ。Java SE 6 もスリップ。

やっと Java SE 7 で入ることになりました。

このセッションでは JSR-203 の機能のうち、非同期 I/O に関して。そして、後半は New I/O を大々的に使っている Grizzly について紹介されました。

まず、非同期 I/O について。

Java SE 7 では Councurrency Utilities を使った非同期 I/O を提供するようです。

使い方としては 2 種類。

  • java.util.concurrent.Future インタフェースを使用する
  • コールバックハンドラを使用する

Future インタフェースを使う方法は非同期チャネルの read メソッドの戻り値が Future オブジェクトになるというものです。

Future オブジェクトが取得できれば、後は Concurrency Utilities の非同期処理と扱いは同じです。たとえば、こんな感じ。

AsynchronousSocketChannel ch = ...
ByteBuffer buf = ...
 
Future<Integer> result = ch.read(buf);
 
// check if I/O operation has completed
boolean isDone = result.isDone();
 
// wait for I/O operation to complete
int nread = result.get();
 
// wait for I/O operation to complete with timeout
int nread = result.get(5, TimeUnit.SECONDS);

Futrue インタフェースのパラメータを指定できて、そのまま get できるのはいいですね。

コールバックハンドラはこんな感じで使います。

AsynchronousSocketChannel ch = ...
ByteBuffer buf = …
 
CompletionHandler<Integer,Void> handler =
    new CompletionHandler<Integer,Void>() {
        public void completed(Integer result, Void att) {
            int nread = result;
        }
        public void failed(Throwable exc, Void att) {
            // error handling
        }
    };
    
ch.read(buf, null, handler);

使いやすさからいくと、コールバックハンドラの方がいいかもしれません。

よく分からないのが、Future インタフェースの cancel メソッドが使えるかどうか。使えるといいんですけどね。

このような非同期 I/O が使用できるチャネルとして

  • AsynchronousSocketChannel
  • AsynchronousServerSocketChannel
  • AsynchronousDatagramChannel
  • AsynchronousFileChannel

が提供されています。つまり、TCP と UDP、そしてファイルの入出力が非同期で行えるというわけですね。

また、非同期入出力のためのスレッドはスレッドプールを使うことができるようです。

後半は Grizzly で非同期 I/O をどのように使っているかを紹介し、非同期 I/O の Tips を紹介しました。

TS-5216 Toward a Renaissance VM

Da Vinci Machine Project の John Rose と、Concurrency Utilitiles や JavaFX Compiler の Brian Goetz のセッション。

タイトルの Renaissance は Da Vinci とかけているんでしょう。

内容的には昨日の Da Vinci Machine Project のセッションとかなりかぶっています。ただ、もう少し抽象的な議論が多くありました。

たとえば、VM を採用することによる利点、多言語に対応するためには VM にどのような機能が必要出るかなどです。

それはそうと、Goetz は喋る時に絶えず前後に動きます。だいたい 2, 3 歩ぐらい前にいったり、後ろにいったり。結構これがいらつく。

もうちょっと落ち着いて喋ってくれないかなぁ。ただでさえ、彼は早口なので、ついていくのが大変。それに加えてうろうろされると、集中が切れてしまうんです。

John Rose, TS-5216 Toward a Renaissance VM, JavaOne 2009 San Francisco
John Rose
Brian Goetz, TS-5216 Toward a Renaissance VM, JavaOne 2009 San Francisco
Brian Goetz

BOF-5493 Quo Vadis JavaFX Production Suite

Martin Brehovsky and Lukas Waldmann, TS-5494 Getting the Most from the Designers with the JavaFX Production Suite, JavaOne 2009 San Francisco
Martin Brehovsky と Lukas Waldmann

JavaFX Production Suite は Illustrator/Photoshop の JavaFX Plugin や、SVG から JavaFX への変換ツールなどを含んだスイーツです。

Production Suite が扱うのは FXD/FXZ 形式のファイル。FXD 形式のファイルは、テキストファイルでJavaFX Script によるスクリプトからなっています。FXZ 形式の方は、FXD ファイルを ZIP で圧縮したものです。

JavaFX でこれらの形式のファイルを読み込むには javafx.fxd パッケージのクラスを使います。

この Production Suite も JavaFX 1.2 のリリースと同時に 1.2 にバージョンアップしました。

1.2 ではやっと Adobe CS 4 に対応したこと。一応、今までも CS 4 で使えていたのですが、1.2 からは正式対応ということになりました。

そういえば、NetBeans で FXD/FXZ ファイルのプレビューやソースを見ることができるようになってました。

そして、現在取り組んでいることとして、次の 6 項目をあげました。

  • References
  • Libraries
  • Events
  • Actions
  • States
  • UI Controls Skinning

References はノードに ID を付けて、ID で参照できるようにするということです。

Libraries はよく使う要素をライブラリとしてまとめられるようにすることです。ここでは、グラデーションなどをあげてましたけど、ノードもライブラリ化できるようになるといいなぁ。Flash ではできているのですから、ぜひやってもらいたいところです。

次の Events はその名の通りイベントです。ボタンのクリックなどにより状態変化や、アニメーションのイベントなどが含まれるようです。

Slanted JavaOne

ちなみに、現在はムービーなどは FXD/FXZ で扱えないのですが、今後扱えるようになるということです。これは、今日発表された Authoring Tool が扱うファイルが FXD/FXZ なのではないかと、櫻庭は予想しています。

Actions はアニメーションのコントロールやシーングラフの変更などのアクションを扱えるようにしようということらしいです。

States は状態変化を扱えるようにすること、そして最後の UI Controls Skinning は JavaFX Mobile でも使える UI Control のスキンを FXD/FXZ で可能にすることのようです。

こういうことが実現できると、コードで記述しなければいけない部分がかなり少なくなることが予想できます。早くリリースしないかなぁ。

ところで、セッションの内容にはまったく関係ないのですが、セッション中にハプニングが。

どのセッション会場でも中央にある演台には JavaOne のロゴが表示されています。

そしたら、セッション中に急にガタンという音が。何かと思ったら右の写真のように、演台の JavaOne ロゴが傾いてしまったのです。

これ単に両面テープで貼っているだけでした。で、最終的にはロゴは落ちてしまったのです。

落ちた JavaOne です...

ラベル: , ,

今日のレセプション

初日の夜はいつものごとく、Pavilion Reception。そして、いつものように飲み物も食べ物もすごい並びます。

今年はせちがらく飲み物は 2 杯まではフリー。レジストレーションの時に 2 枚だけクーポンをもらえるので、それと引き替えます。それ以上飲みたい人は実費。

まぁ、櫻庭にはあんまり関係ないんですけどね。

今日は昼休み時間に Puzzlers があったせいで、ランチ抜き。夕食も結局ここでちょっと食べただけでした。まぁ、こういう日もあるということで。

Pavilion and Welcome Reception, JavaOne 2009 San Francisco Pavilion and Welcome Reception, JavaOne 2009 San Francisco

そして、BOF の後、国際化のメンバの人たちと JCP のパーティへ。

しかし、終わりに近い時間だったので、食べ物はほとんどなし。残念。

ここで偶然、Roberto に会うことができました。Roberto は JSR 316 Java EE 6 が Most Innovative Java SE/EE JSR に選ばれて、表彰されたのだそうです。彼は JSR 316 のスペックリードですから。

JCP Party, JavaOne 2009 San Francisco
JCP Party, JavaOne 2009 San Francisco Roberto Chinnici, JCP Party, JavaOne 2009 San Francisco

ラベル: ,

2009/06/01

今日の CommunityOne West

The Day before JavaOne, JavaOne 2009 San Francisco

もともと、JavaOne の前日は NetBeans Day などのイベントをやっていたのですが、去年から CommunityOne になりました。今年は CommunityOne West。

なぜ、West かというと、3 月にニューヨークで CommunityOne East というイベントをやったからです。

CommunityOne は Solaris や、今年は Clouds 関連のセッションも多いので、櫻庭が興味を持ったセッションはあまりありませんでした。まぁ、そんなもんでしょう。

結局、参加したのは、General Session とテクニカルセッション 2 つだけでした。

General Session

去年は横に長いスクリーンだったのですが、今年は普通のアスペクト比のプロジェクタになってました。横に長いスクリーンは複数台のリアプロジェクタを使い、しかも重なって投影する部分は輝度を落とすなどをして、あたかも 1 つのスクリーンのようにしています。しかし、これは高くつくんでしょうね。

今年の JavaOne はお金かけていない感がとても強いです ^ ^;;

さて、今年の General Session は MC が Dave Douglas でした。前半がクラウド、後半は John Fowler にバトンタッチして OpenSolaris という構成です。

後半の OpenSolaris のパートはニュースショー的な演出で John Fowler がアンカー役でした。でも、これは失敗じゃないかなぁ。テーブルに座って話すだけなので、動きが全然ないんです。

去年の ZFS のデモのようにハンマー振り上げてデモする方がおもしろいし、インパクトありますね。

途中で Nandini Ramani が登場して、JavaFX 1.2 で OpenSolaris をサポートしたことをデモしていきました。今日は、珍しくデモに失敗しませんでしたよ ^ ^;;

General Session, CommunityOne West 2009
General Session 前の会場
Dave Douglas, General Session, CommunityOne West 2009
今年の MC は Davve Douglas
Campus Ambassadors and Dave Douglas, General Session, CommunityOne West 2009
世界中のキャンパスアンバサダー
残念なことに日本のアンバサダーはいないんです
Dave Douglas and Lew Tacker, General Session, CommunityOne West 2009
クラウドの紹介は Lew Tacker
Mike Harvey and Lew Tacker, General Session, CommunityOne West 2009 Omer Trajman, Dave Douglas and Lew Tacker, General Session, CommunityOne West 2009
Issac Roth and Lew Tacker, General Session, CommunityOne West 2009 Eric Baldeschwieler, General Session, CommunityOne West 2009
Hadoop の Eric Baldeschwieler
この人、ずっと首が傾いていた。くせなのかなぁ?

ここから後半の OpenSolaris のパートです。

OpenSolaris Open Networking, General Session, CommunityOne West 2009 OpenSolaris Open Networking, General Session, CommunityOne West 2009
John Fowler, OpenSolaris Open Networking, General Session, CommunityOne West 2009
アンカーのJohn Fowlerが3人に話を聞くという形式
John Fowler, OpenSolaris Open Networking, General Session, CommunityOne West 2009
John Fowler, OpenSolaris Open Networking, General Session, CommunityOne West 2009 John Fowler and Nandini Ramani, OpenSolaris Open Networking, General Session, CommunityOne West 2009
Nandini が登場して、JavaFX 1.2でOpenSolarisをサポートしたことをデモ
OpenSolaris Open Networking, General Session, CommunityOne West 2009 OpenSolaris Open Networking, General Session, CommunityOne West 2009

S304203 Turbocharge Your UI

Romain Guy, S304203 Turbocharge Your UI, CommunityOne West 2009
Romain Guy

もともとスピーカに Google の Romain Guy と Mike Cleron がクレジットされていたのですが、会場には Romain Guy しかいません。どうしたんでしょうね。

Romain Guy は元々 Sun でインターンしていて、Swing のチームにいたのですが、今は Google で Android の UI をやっているようです。

このセッションでも Android を題材にしながらも、他の GUI にも応用できそうな Tips などを紹介するというものでした。

たとえば、リスト表示で項目を高速でスクロールさせる方法とか、リアルタイムにイメージの拡大・縮小をするのでなく事前に拡大・縮小したイメージを作成しておくこと (いうなればミップマップですね) とか、リペイントする領域をなるべくすくなくするとか。

示されるコードが Android のものなので、いまいち分からない部分も多いのですが、考え方だけは使えそうです。

S304097 The Da Vinci Machine Project: Collaborating on JVM Machine Futures

John Rose, S304097 The Da Vinci Machine Project: Collaborating on JVM Machine Futures, CommunityOne West 2009
John Rose

Da Vinci Machine Project は OpenJDK のサブプロジェクトで、JSR 292 Supporting DYnamically Typed Languages on the Java Pltform の RI を作成しています。つまり、動的型付け言語を Java VM で実装しやすくするための機能を実装するプロジェクトです。

一番の目玉は invokedynamic という新しいバイトコード。

Java は静的型付け言語なので、メソッドの引数や戻り値はちゃんと型を指定しないといけません。でも、動的型付け言語はそんなことないわけです。

そこで、登場するのが invokedynamic。invokedynamic は引数や戻り値の型を記述していない場合に使われる、メソッドインボーク用のバイトコードです。

ここまでは去年の話題。

型定義なしのメソッドはコンパイル時に invokedynamic に置き換えられるけど、実際にそのバイトコードを実行するのはどうするのか、という議論が去年は欠けていたのです。

今年は実行時にどうするかという解が提示されました。その解が Method Handles です。いうなれば、高速リフレクションですね。

その他にも Da Vinci Machine Project では、次のような実行されているようです。

  • Java 言語の変更
  • インタフェースインジェクション
  • Tail call
  • Continuation
  • Anonymous class

これらがすべて Java SE 7 に入るのだとしたら、なかなかおもしろそうです。たぶん、間に合わないのもありそうですけど。

ラベル: ,

今日の Pavilion Reception と The OpenSolaris and Sun Cloud Party

今日の 6 時からは Pavilion Reception、7 時からは The OpenSolaris and Sun Cloud Party が行なわれました。

場所が同じなのかと思ったら、別。Pavilion Reception はその名の通りパビリオン、もう 1 つのパーティは JavaOne でランチ会場になる Hall A でした。

Pavilion Reception はパビリオンで飲み食いできるだけのパーティで、JavaOne の初日にやるのとたいして変わりません。あいかわらず、食べ物と飲み物はすごい行列ですが。

と思ってたら、へんなバンドが練り歩き。なんだろう、この中途半端さは。

Pavilion Reception, CommunityOne West 2009
Pavilion Reception, CommunityOne West 2009 Pavilion Reception, CommunityOne West 2009
Pavilion Reception, CommunityOne West 2009 Pavilion Reception, CommunityOne West 2009

どうやら、このバンドはそのままもう 1 つのパーティの呼び水でもあったらしいです。そのまま観客引き連れて、Hall A へ。私たちも一緒についていきました。

Hall A は照明もかなり落としていて、去年の CommunityOne のパーティのような感じ。

Segway 乗っていたり、輪投げやボールなげの夜店みたいなのがあったりで、なんか不思議な感じです。

さっきのバンドはそのまま演奏。その後、いつものごとく抽選会。ところが、抽選に当たった人がなかなか会場にいない。せっかく当たったのに、もったいない。

ところで、この抽選を見ていて、やっぱり JavaOne/CommunityOne って国際的なんだなぁと思いましたよ。抽選に当たった人を読み上げるのが、簡単にいかない、いかない。インドの人やアラブ系だとなんとよんでいいのか全然わからないですね。

最後に再びバンドのライブ。でも、ごはんに行く約束をしていたので、ほとんど見ずに会場を後にしたのでした。

The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009 The OpenSolaris and Sun Cloud Party, CommunityOne West 2009
The OpenSolaris and Sun Cloud Party, CommunityOne West 2009

ラベル:

2009/05/31

今日のレジストレーション

The Day before JavaOne, JavaOne 2009 San Francisco

UP を見た後、Moscone Center へ。今日は午後から JavaOne/CommunityOne のレジストレーションができるので、さっそくいってみたわけです。

レジストレーションはいつものごとく。パスポート見せるのもいつも通り。JavaOne バッグなどのマテリアルのピックアップが別の場所なのも同じです。

レジストレーションはノースの地上部分ですが、マテリアルピックアップはサウスの地下。さっそくノースの階段を下りて、ピックアップへ向かいます。

ここで、ビックリ。

例年、この階段下の広場には大きいディスプレイが鎮座しているのですが、今年はそれがないのです。その代わりに歴代の T-Shirt 投げで使われた T-Shirt をモチーフにした大きい絵が飾られています。

やっぱり、経費削減なんでしょうね。

また、歴代のというところが、これまた最終回っぽさを醸しだしています。

そして、ノースとサウスをつなぐ地下通路には、毎年参加者に配られるシャツを使ったキルティングが。おぉ、懐かしいと思うのと同時に、やっぱり最後なんだなぁと。

今回の JavaOne バッグは比較的シンプルな形状。ランドセルを薄っぺらくしたような形です。これだけかと思ったら、服のサイズはなにかと聞かれます。「M サイズだけど」と答えると、ジャケットを持ってきてくれました。

あぁ、これは Alumni でもらえるジャケットではないですか。でも、なぜここで?

例年、Alumni のギフトは Alumni Lounge で引き替えることになっています。しかし、今年のパンフレットを見てみると... Alumni Lounge がないのでした。

これも経費削減ですよね。

ノースに戻ってきて、写真、写真。

階段下のところには、明日の CommunityOne のバルーンがいっぱい。そこに、Duke などのキャラクターやロゴなどがカードがクリップで留めてあります。その中にいましたよ、ねこび~ん。さっそく、写真、写真。

ここの広場には天井に明かり取りの大きな遠景の窓があります。そこから、日の光が差し込んできました。

昨日も今日もずっと曇りで、いままで外の写真を撮る気が全然起きなかったのですが、日が出てきたというなら話は別。さっそく、外に出て写真。でも、またすぐ曇ってきちゃいました。残念。

それはそうと、日がでないと、サンフランシスコはとても寒いのです。今日も最高気温が 14 度。冬に戻ってしまった感じ。

JavaOne Flags, JavaOne 2009 San Francisco JavaOne 2009 San Francisco
JavaOne 2009 San Francisco JavaOne 2009 San Francisco
The Day before JavaOne, JavaOne 2009 San Francisco The Day before JavaOne, JavaOne 2009 San Francisco
The Day before JavaOne, JavaOne 2009 San Francisco The Day before JavaOne, JavaOne 2009 San Francisco
The Day before JavaOne, JavaOne 2009 San Francisco JavaOne Bag, JavaOne 2009 San Francisco
ねこび~ん, JavaOne 2009 San Francisco

Moscone South には Sun Ray がずらっと並んでいて、誰でも使えるようになっています。

そうしたら、こんなものが...

Against Flu, JavaOne 2009 San Francisco Against Flu, JavaOne 2009 San Francisco

やっぱり、ご時世ですね。

ラベル:

2009/04/21

今日の JavaOne

昨日の Oracle が Sun Microsystems を買収というニュースはビックリしましたねぇ。

Sun 3 の頃から使い続け、Java も 1.0α からあ使っている櫻庭にとって、Sun が買収されてしまうのは寂しい限りです。まぁ、倒産してしまうよりも、Oracle に買われて Java も Solaris も残った方がいいとは思いますが...

で、どうなるか分からなくなったのが JavaOne。もしかしたら、今年が最後かもしれません。まぁ、Java のカンファレンスは何らかの形で残るとは思いますが、JavaOne という名前でなくなることは大いにありえます。

もし、来年どうなるか不安な人はぜひ JavaOne 参加しましょう。もちろん、櫻庭は参加です。

ラベル: ,

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
T-Shirt Toss, General Session, JavaOne 2008 T-Shirt Toss, General Session, JavaOne 2008
T-Shirt Toss, General Session, JavaOne 2008 T-Shirt Toss, General Session, JavaOne 2008
自分に当たりそうで怖かった写真
T-Shirt Toss, General Session, JavaOne 2008 General Session, JavaOne 2008
カッコイイ!
General Session, JavaOne 2008 General Session, JavaOne 2008
General Session, JavaOne 2008
いつもより多く回っております。床が斜めなのはご愛敬
General Session, JavaOne 2008
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
James Gosling and Chris Melissinos, General Session, JavaOne 2008
手に持っているのが Sentilla Mote
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
後ろに CO2 がモニタリングされています
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
防爆タイプもあります
Rich Green, General Session, JavaOne 2008
テーマは Java + You
Rich Green, General Session, JavaOne 2008

そして、登場したのが Rich Green。今年のテーマは Java + You。

Rich Green は自分の話はそこそこに、ゲストを壇上にあげました。はじめに紹介されたのが Amazon の Kindle。Kindle では Java が動作します (PC Watch の記事を参照)。そして、Sony Ericsson。

そして、JavaFX のデモに移ります。デモされたのは...

  • Connected Line - Facebook Widget
    Flickr と Twitter のマッシュアプリ。新しい Plug-in の上で動作し、起動時間などもかなり向上しています
  • Flockr
    タグを入力すると Flickr から画像を引っ張ってきて表示するというアプリ
  • 3D のレンダリング
    ポリゴンのテクスチャーに動画を使用し、かなり多くの動画を同時にレンダリングするというデモ
  • JavaFX Mobile
    Andoroid 上で動作する JavaFX Mobile ランタイム。Connected Line が動作していました。

ちなみに Flockr で Flickr の写真を見られるのですが、Rich がタグに「James Gosling」を入れたのです。そうしたら何と私の写真が使われていましたよ。この写真です。これにはビックリ。

この写真は昨年の Sun Tech Days で撮ったもの。そのとき撮った写真が何枚もサムネイルで表示されていましたが、中には某氏の写真も。そうか、彼の写真にも James Gosling のタグが付いていたんだ。まぁ、ご愛敬。

Rich Green は最後に Ubuntu で JRE がバンドルされたこと、Apple が MacOS X 用の Java SE 6 をリリースしたことを発表しました。

Rich Green, General Session, JavaOne 2008 Rich Green, General Session, JavaOne 2008
Rich Green, General Session, JavaOne 2008
Nandini Ramani
Rich Green, General Session, JavaOne 2008
Nandini がデモを失敗させた瞬間 ^ ^;;
Rich Green, General Session, JavaOne 2008
Anthony Rogers
Rich Green, General Session, JavaOne 2008
Android エミュレータでデモ
Neil Young, General Session, JavaOne 2008

そして、Jonathan Schwartz の登場。

彼が呼んだのが、あのミュージシャンの Neil Young。彼は今 Blu-ray で 40 年以上に渡る彼の音楽活動のアーカイブを作成しているのですが、それについて喋っていきました。もちろん、Blu-ray なので、Java です。BD-J です。

Neil Young が出てきたのは嬉しいのですが、残念なことに歌はなし。 1 曲ぐらい歌ってくれればいいのに。

それにしても、Rich や Jonathan の時よりも、Neil に多くのカメラマンが群がる、群がる ^ ^;; もちろん、櫻庭はステージのかぶりつきで写真撮りましたよ。

Jonathan Schwartz and Rich Green, General Session, JavaOne 2008 Jonathan Schwartz and Rich Green, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
後ろの写真は Baffalo Springfield の頃
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008
PS3 を持って帰ろうとする Neil Young

Technical General Session

Robert Brewin, Technical General Session, JavaOne 2008

本当は General Session と Technical General Session の間にはテクニカルセッションが挟まるのですが、ちょっと順番を変えて、こちらを先に紹介します。

去年の Technical General Session はほとんどの時間を JavaFX に費やされていましたが、今年は Java EE も Java SE も登場し、以前のような形式に戻りました。

Java EE は Roberto Chinnici。Java EE 6 の話と、その RI である Glassfish の話をしていました。

Java EE 6 では Profile が導入されるのですが、プロファイルの1 つである Web Profile を説明。Web Profile には JSF, Servlet, JPA, そして EJB−Lite が含まれるようです。

その他には web.xml の編集がいらなくなることや、JAX-RS が新たに含まれること、EAR ファイルの作成が簡単になることなどをあげてました。

Glassfish は、Kernel を小さくしたことや、OSGi ベースのコンポーネント管理、フッとプリントの減少、起動時間の短縮などがあげられてました。デモでは、ほんとにあっという間に Glassfish が起動する様子とか示してました。

Java SE は Danny Coward。

SE 7 の話としてはモジュラリティ、複数言語のサポート (スクリプト言語というわけではなく、C# とかも含まれていました)。リッチクライアントの話。リリースは 2009 年夏に延期されてました。

ConsumerJRE は 2008 年の秋。その前に 6u5p というバージョンが出ます。p はパフォーマンスの p。64 tbit OS 向けだけにリリースされ、64bit 向けのパフォーマンスチューニングが施されているようです。

Consumer JRE は Plug-in を刷新するようで、Applet 復活をうたってました。この Plug-in はなかなか良さそうです。起動時間も早いし、プロセスが Browser とは切り離され、かつ複数のプロセスで Applet/JWS が動作するようになっています。

後は JavaFX。リリース時期が示されたのですが、あいかわらず開発環境に関してはたいしたものが出てきません。これは重大なミスだと思います。 Photoshop との連携を示していましたが、Photoshop のレイヤーがそれぞれ PNG に分割して、JavaFX で取り込むだけというもの。これでは、さいさきが暗いです。

Roberto Chinnici, Technical General Session, JavaOne 2008
Roberto Chinnici
Danny Coward, Technical General Session, JavaOne 2008
Danny Coward
Danny Coward, Technical General Session, JavaOne 2008 Robert Brewin, Chris Oliver and Anthony Rogers, Technical General Session, JavaOne 2008
スキンヘッドが Chris Oliver

Technical Session

TS-6271 Java Platform, Standard Edition: A Youthful Maturity

前半の Java SE 6 はどうでもいいので、後半の Java SE 7 を中心に聴講しました。

やはり、Java SE 7 で中心になるのはモジュールの話です。

  • Modules
  • Annotation syntax の拡張
  • Closure
    • その他
    • Improved type interface
    • Strings in switch statements
    • Enum comparisons
    • Catching multiple exception types

モジュールは去年までは superpackage といってましたが、module と変更になりました。名前が変っただけで、機能は superpackage と同じようです。

最後の複数例外のキャッチは結構うれしいです。リリース時期が延びたためか Closure が入るようですね。

複数言語のサポートも強化されます。バイトコードの追加も行なわれるようですが SE 7 に間に合うかは微妙。資料では 「SE 7 の」ではなくて、「未来の」となっていましたし。

また、Java SE 7 ではプロファイルが導入されることになりそうです。個人的にはプロファイルは反対なんですが......

今のところ、Rich Client Profile、Headless Profile の 2 つのようです。

また、jconsole とプロファイラが一緒になったような Visual VM のデモも行なわれました。この Visual VM のデモをしていたのは、去年 JMX のセッションを担当していた Luis Miguel-Alventosa。チームが変ったのか、それとも JMX のチームの中で行なっているのか、よく分からないんですけど。まぁ、それはさておき、Visual VM は使えそうですよ。

最後に JRE の話。Performance JRE と Consumer JRE です。特に Java Plug-in が刷新されたことがうれしいですね。

Danny Coward, TS-6271 Java Platform, Standard Edition: A Youthful Maturity, JavaOne 2008
Danny Coward
Luis-Miguel Alventosa and Tomas Hurka, TS-6271 Java Platform, Standard Edition: A Youthful Maturity, JavaOne 2008
Luis-Miguel Alventosa と Tomas Hurka

TS-5581 Upcoming Java Programming Language Changes

Java 言語の変更点についてまとめたセッション。

Sun の Alex Buckley、Google の Neal Gafter、MIT の Michael D. Ernst がスピーカですが、Alex が中心になって喋っていました。

はじめに言語仕様の変更に対するポリシー的なものを説明しました。それにしても言語開発者は大変ですね。論点としては

  • Applications vs. Languages
  • Fewer, more regular features are better
  • Respect the past, Respect the future, Respect the model

ということで、Java の言語仕様の変更に関して。取りあげられたのは

  • 例外の Multi Catch
  • 安全な例外の再 throw
  • module
  • Annotation
  • Annotation を用いた型チェック

例外の Multi Catch は同じ例外処理の場合、まとめて記述できるというもの。たとえば、以下のように記述します。

    try{
        ...
    } catch (X1Eception, X2Exception e) { ... }
    } catch (X3Eception e) { ... }

これは地味だけどうれしい変更点ですね。

再 throw も同じく地味ですが、結構うれしいです。というか、今まで再 throw が安全にできなかったということにビックリですが。

モジュールは何度も出ているので、省略。

Annotation は、Annotation で修飾できる対象を大幅に増加させたということ。たとえば、次のような要素に Annotation を記述することができるようになります。

  • ジェネリクス
  • ローカル変数
  • キャスト
  • メソッドの引数
  • メソッドの戻り値

ジェネリクスやキャストに Annotation を記述できるようにするのは、Annotation を使って型チェックをするためといっても過言ではありません。

つまり、型チェック用の Annotation で修飾された要素は、コンパイラによってチェックされます。たとえば、

  • @NonNull
  • @Interned
  • @Readonly
  • @Immutable

などの Annotation が型チェック用の Annotation になります。

今後取り入れられそうな機能が最後に紹介されたのですが、それより興味深かったのが将来にわたって取りいれられることのない機能です。次の 4 項目が示されていました。

  • ユーザ定義の演算子オーバロード
  • マルチメソッド
  • マクロ
  • 動的型付け

TS-5515 Let's Resync: What's New for Concurrency on the Java Platform, Standard Edition

Brian Goetz, TS-5515 Let’s Resync: What’s New for Concurrency on the Java Platform, Standard Edition, JavaOne 2008
Brian Goetz

新幹線本の Brian Goetz によるセッション。

新幹線本というのは Java Concurrency in Practice のことです。とはいうものの、日本語訳の「Java 並行処理プログラミング」は新幹線じゃないのですが.... ^ ^;;

最近、Brian Goetz は JavaFX Compiler チームにいるのですが、今日は並列プログラミングの話。特に fork-join フレームワークが中心になっています。fork-join は UNIX 系の OS を使っている人にはおなじみの fork-join です。

J2SE 5.0 では並行プログラミングのための Concurrency Utilities が導入されました。

もちろん、Concurrency Utilities の中には非同期処理を行なう API が準備されています。もちろん、Executor + Future のことですね。しかし、これも並列化するためにはまだまだ粗いということなのです。

そこで、登場するのが fork-join です。

タスクの分だけ fork を行い、すべてのタスクが終了するまで (join するまで) サスペンドします。

この fork-join と合わせて、効率的に並列化がおこなえるのが PararrelArray クラスです。PararrelArray は withFilter メソッド、withMapping メソッド、max メソッドなどが定義されており、これらのメソッドは fork-join で並列化されます。

このとき、withMapping メソッドなどの引数にクロージャを用いることができるようです。

 

BOF

BOF-5061 は Q&A BOF なので省略します。このセッションは基本的には SPOT の Q&A ですが、いろいろとネタもありました。それにしても、かなりいろんな人が Sun SPOT 使って、遊んでますね。YouTube や Flickr にビデオ/写真がいっぱい上がってます。

このページがまとめページになっているので、ご参照ください。おもしろいですよ。

 

BOF-5031 Upcoming Java Programming Launguage Features

BOF-5031 は、テクニカルセッションと同じタイトル。つまり、言語仕様変更に関する Q&A セッションです。

とはいうものの、Q&A だけではありません。Annotation を使った新しい型チェックを、Eclipse の Plug-in を使ってデモをしました。Eclipse を使っているのは、これを書いたのは MIT の Michael Ernst だからです。

その後、言語の仕様変更のポリシーを J2SE 5.0 で導入された拡張 for 文について説明したのですが、これはなかなかおもしろかったです。

Iterator と Enumeration は、ユーザがイテレーションの処理を書かなくてはなりません。それに対して、拡張 for 文は内部でイテレーションの処理を行なっていると考えることができます。

ここでまず提案されたのが、for ではなく foreach を使う記法。しかし、これはすでに識別子として使われています。そのため、for が再利用されることになりました。

次にイテレーションにできる要素ですが、配列と Collection が候補にあがります。しかし、Collection であることが、常にイテレーション可能というわけではありません。そこで、よりよい表現を考えることになったわけです。

1 つの案として、for (Object o: collection.iterator()) { ... } のように iterator メソッドを使って記述する方法です。しかし、これも書き方が複雑になる、Iterator が java.util パッケージで言語でサポートするには適当でないなどの理由から却下されます。

そこで、java.lang パッケージに Iterable インタフェースが導入されたわけです。Iterable インタフェースは iterator メソッドが定義されており、Iterator オブジェクトを返すようになっています。

そして、レトロフィットのために Collection インタフェースは Iterable インタフェースの派生インタフェースとなったわけです。とはいうものの、java.util.Iterator インタフェースはコンパチビリティのため、java.util パッケージのままになり、Iterable インタフェースだけが java.lang パッケージになったということです。

拡張 for 文は比較的単純な例らしいのですが、やっぱり言語仕様を変更するというのは大変ですね。

 

BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms

去年までは Java3D と JOGL の BOF だったセッションです。

Technical General Session で Ken Russell が新しい Plug-in のデモをしていたので、なんでだろうと思っていたのですが、いつのまにか Ken Russell が Plug-in チームに移動してました。

まずは、Kevin Rushforth による Java 3D について。

ところが、ほとんど新しい話はなし。去年のこのセッションでは 1.5 系と 2.0 系でどのように進めるかという話が議論されていたのですが、それもまったくありません。

なぜか。

それは、デスクトップ用の 3D ウィジェットを作成する Scene Graph 3D (SG3D) プロジェクトが始まったからです。これは主に JavaFX で使用されるものです。

以前、チーム単位で動きを見てみるといいよ、とある人が教えてくれたことがあります。

その時も、Java 3D の進捗がなくなってしまったときでした。その時は Java 3D のチームは CLDC 用の 3D ライブラリの開発に携わっていたのでした。

つまり、あるテクノロジーを開発するためのリソースは限られており、同時に 2 つのテクノロジーを開発するほどではないということ。そして、あるテクノロジーの進捗が滞っていたら、そのチームは他のテクノロジーの開発に狩りだされている可能性が高いということです。

まぁ、今回もそういうことのうちの 1 つなのでしょう。

SG3D のデモとして、JavaFX の 3D ゲームである Moontank。そして、LG3D の CD Viewer みたいな画像/動画ビューアがデモされました。

使いやすいといいんですけど、どうなんでしょうね。早く公開してくれないかなぁ。

さて、後半は Ken Russel による JOGL です... が、JOGL の話題はちょっとだけ。ほとんどの時間が Consumer JRE の新しい Plug-in の話でした。

まず、彼が紹介したのは Plug-in で動作する FPS ゲームの Jake 2。これは id Software の Quake 2 のゲームエンジンを Java に移植したものだそうです。

かなりサクサク動いてます。これはすごい。

つづいて、JavaScript と Applet の連携のデモ。NASA の World Wind という Java で実装された、Google Map のようなシステムがあるのですが、これをカスタマイズして JavaScript と連携させるというデモ

HTML のリンクをクリックすると、それに応じた場所にズームインするのです。

ソースを見てみると、JavaScript で getWWJApplet メソッドで Applet にアクセスできるようです。

また、Applet をドラッグして、ブラウザから Applet を切り離してしまうというデモも行ないました。これもブラウザと Applet が異なるプロセスで動作しているからできることなのでしょう。

ちなみに、Consumer JRE はベータ版がすでに公開されています。新しい Plug-in も提供されているので、いますぐ試すことができますよ。

さて、最後に JOGL のデモ。

携帯デバイス用に開発された NVidia の APX 2500 という CPU があります。このチップは NVidia ということで、Open GL ES 2.0 が動作します。Open GL ES は組み込み機器用の Open GL で、Open GL のサブセットになっています。

たとえば、PS3 などが Open GL ES を採用しています。

その APX 2500 で JOGL が動くというデモを行なっていました。これからは、携帯でも Open GL で JOGL という時代なのかもしれません。

Kevin Rushforth, BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms
Kevin Rushforth
Ken Russell, BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms
Ken Russell

Pavilion Reception

JavaOne 初日は恒例の Pavilion Reception。

そして、これまた恒例の食べ物に並ぶ行列。昨年よりも確実に長くなっています。こういうところでも、参加者の増減が分かるというものです。

でも、たいしたものは出ないんですけどね。トルティヤチップスやタコスなど。以前はもっと豪華だったのですが、やはり予算削減の影響なのでしょうか。

JavaOne Pavilion Welcome Reception, JavaOne 2008 JavaOne Pavilion Welcome Reception, JavaOne 2008

ラベル: , ,

2008/05/05

CommunityOne

JavaOne 2008 San Francisco

去年から JavaOne の前日には CommunityOne というイベントが開催されるようになりました。

もともと前日には NetBeans Day という NetBeans のイベントがありました。ところが、Sun が関連するオープンソースのプロジェクトが増えてきたことや、Sun がコミュニティ重視の立場をとるようになってきたことから、オープンソースのプロジェクトをまとめたイベント CommunityOne を開催するにいたったようです。

というわけで、2 年目の CommunityOne です。

去年は Java 関連のオープンソースプロジェクト/コミュニティだけだったはずですが、今年からは Sun が関連するすべてのオープンソースプロジェクト/コミュニティに拡大されました。

したがって、OpenSolaris や MySQL も一緒です。

コミュニティということでは JUG などのユーザ団体も結構参加しているようです。

さて、今日櫻庭が聴講したセッションは

です。

基調講演の後のテクニカルセッションはプログラムがギッチリで、すべてに出ようとするとランチを食べる暇もありません。

JavaFX の方はハズレでした。事例を話すのかと思ったら、単なるチュートリアル。それはないよ。

ラベル: , ,

General Session

Ian Murdock, CommunityOne General Session, Moscone Center SF

General Session の MC は去年と同じ Ian Murdock です。櫻庭はまったく知らなかったのですが、彼は Devian の創設者だとか。Sun にはいろんな人がいるんですねぇ。

彼がまず壇上に上げたのが、Jonathan Schwartz。Jonathan はいつものように茶系のツイード。日本だったらネクタイもするはずですが、やっぱり US だとネクタイはなし。でも、いつも茶系なのはおじさんっぽくって、地味すぎると思うんですけど。

Jonathan はたいしたことはいわず、まぁ祝辞みたいなものだけ。

Ian Murdock, CommunityOne General Session, Moscone Center SF Jonathan Schwartz, CommunityOne General Session, Moscone Center SF

次がユーザコミュニティの代表によるパネル。

Panel "A Multitude of Models, How Communities Work", CommunityOne General Session, Moscone Center SF

登壇したのは

  • Marten Mickos, MySQL
  • Jim Zemlin, Linux
  • Stormy Peters, OpenLogic
  • Ted Leung, Python
  • Jeremy Allison, Samba
  • Mike Evans, Red Hat

実をいうと、櫻庭はパネルが苦手です。何をいっているのか全然わかりません。特に今日はまだ英語に慣れていないので、全然聞き取れません....... orz

やっぱり英語勉強しないと。

ユーザコミュニティを運営していくのは大変だよね、というようなことをみんないっていたような気がします。

おもしろかったのが、Twitter でパネルに参加できること。

「ソーシャルソフトウェアがオープンソースのコミュニティやビジネスへのどのようなコントリビューションを成し遂げたか、また今後はどのようなコントリービューションすると思うか?」

なんて質問が出たりしてました。まじめな質問だけでなく、Joke もありましたけど。

パネルの後に登壇したのが、Sun のソフトウェアを統括する Rich Green。

彼もいつものごとく、黒の T シャツにジーンズ。

彼は基本的にカッコイイんだけど、T シャツをジーンズの中にいれるのはいただけないなぁ ^ ^;;

彼のスピーチは OpenSolaris だけ。

OpenSolaris 2008.05 を本日リリースというわけです。

インストールの簡易化や、LiveCD の提供など、どちらかというと今まで Solaris が対象にしてこなかったユーザを意識しているように思います。

特に Ubuntu なんかを使っている人かなぁ。

デモが行なわれたのは

  • インストール
  • グラフィカルな UI の DTrance
  • ZFS

です。

DTrace は GUI が使えるようになっただけではなく、C/C++ もしくは Java 以外のアプリケーションにも使えるようになったことが触れられていました。

デモでは、Firefox の JavaScript で作られたブロック崩しを DTrace を使ってパフォーマンスチューニングするというもの。リアルタイムにキー入力と、JavaScript のメソッドーコールをグラフ化することができます。これはなかなかよさそうですね。

ZFS のデモは派手。

ZFS でハードディスクを並列構成したシステムから、ハードディスクを接続したまま壊してしまうというもの。

1 つめがハンマーで叩きつぶす。はじめはデモの人 (名前をメモするの忘れました) がやって、2 台目は Rich Green の番。彼が「こういうの好きなんだ」といってハンマーを振り上げようとすると、「ちょっとまった」と出てきたのは電気ドリルを持ったおじさん (この人の名前もメモするのを忘れました)。

電気ドリルでハードディスクをガガガガっと、穴を開けてしまったのでした。

でも、ZFS なら大丈夫というのがデモの趣旨。こういう派手なの好きだなぁ。

最後にインテルの David Stewart が出てきて、OpenSolaris に対するインテルの貢献について話していきました。

基調講演の最後に、Ian から OpenSolaris がリリースされたのを記念して、Rich Green にシャンペンのプレゼント。メンロー シャトー製? などと冗談をいってました。

Rich Green, CommunityOne General Session, Moscone Center SF Rich Green, CommunityOne General Session, Moscone Center SF
ZFS Demo, CommunityOne General Session, Moscone Center SF
ZFS Demo, CommunityOne General Session, Moscone Center SF
ZFS Demo, CommunityOne General Session, Moscone Center SF Rich & Ian, CommunityOne General Session, Moscone Center SF

ラベル: , ,

The Road to Babel: Bringing JVM Machine Implementers Together

Charles Nutter, "The Road to Babel: Bringing JVM Machine Implementers Together, CommunityOne, Moscone Center

JRuby の Chrles Nutter のセッション。

なぜ Babel なのかというと、もちろん聖書の創世記からの引用です。

Babel というのを悪い意味でとらえるかもしれませんが、そんなに悪い意味ではないです。

人間が神の領域に届くようなバベルの塔を作り出した時に、神がそれを見て行なったのが、今まで 1 つの言語しか話していなかった人類に、多くの言語を与えたのです。言語が異なってしまったため、コミュニケーションがとれなくなり、バベルの塔は完成しなかったという逸話です。

重要なのが、この時点をきっかけに人類が多言語化されたということ。

このため、Road to Babel (バベルに至る道) というのは「多言語化に至る道」ということを示していると櫻庭は思うのですが、違うかなぁ。

間違っても、コンピュータに守られたバベルの塔に住んでいる少年の話ではありません。

さて、セッションの前半では主な Java VM 上で実装された言語の特徴とステータスを示し、後半は Java VM 上で言語処理系を実装するためのチップスなどを紹介したものでした。

前半に紹介された言語は以下の 6 種類です。

  • OCaml-Java
  • Scala
  • Groovy
  • JRuby
  • Jython
  • Rhino (JavaScript)

Ocaml が入っているところなんか、いかにも Charles Nutter だなぁという感じがしますね。

この中で、たとえば、Ruby (JRuby) は以下のような特徴を持ちます。

  • 動的型付け、オペレータオーバーローディング、メタプログラミング
  • Rails on Rubyなどのアプリケーションが動作可
  • 他の実装に比較してパフォーマンス、スケーラビリティが優れている

この他にも、Scala なら trail や mixin が提供されており、関数型言語であるということなどを列挙したわけです。

後半では、RubyをJVM上で実装することの難しさなどが紹介されました。たとえば、次に示すような項目が述べられました。

  • 動的型付けの最適化
  • Ruby独自の型システムの移行
  • C Extensionの依存
  • "eval"、Continuation、バイトを基にした文字列

Ruby を Java VM に移植したのは、以下のような理由があるようです。

  • Ruby が美しく、エレガントな言語であること
  • Javaの世界に新たな血、新たな考え方を導入するため
  • 優れたランタイム
  • JVMの限界を超えるため

確かに JRuby によって、クロージャなどが注目されるようになりましたね。

また、言語の実装におけるチップスとして、

  • 軽量なコード生成とローディング
  • リフレクションよりもメソッドオブジェクトを生成する
  • パース、インタプリター、コンパイル用のtoolchain

などが紹介されました。特にリフレクションは避けて、クラス生成および動的コンパイルおよびローディングをした方がいいようです。動的なクラス生成とコンパイル、ローディングは一番はじめにメソッドコールしたときのコストが大きいのですが、全体的なパフォーマンスはこの方が上がるのでしょう。

また、複数言語用のVMとして開発されているDa Vinci Machineプロジェクトを紹介がされました。

このプロジェクトはOpenJDKのサブプロジェクトであり、複数の言語を実装しやすくするための機能を持ちます。また、JSR 292 Supporting Dynamically Typed Languages on the Java Platformのリファレンス実装でもあります。

最後に、CommunityOne ということもあり、ぜひコミュニティに参加しようというメッセージを示してました。

ラベル: , ,

Startup Camp > Bootcamp and Community Reception

Reception, CommunityOne, Moscone Center

Starup Camp、Bootcamp はコミュニティ紹介みたいな感じです。去年は Moscone North と South を結ぶ通路で行われていたのですが、今年は Moscone の Hall A が使用されています。

そこで、去年 Sun を退社した Chet Haase に再開。元気そうでなによりです。

会場には、中に人が入って転がす大きなボールや、LEGO や粘土 (?) がおいてあります。きしださんがねこびーんを作ろうとしてましたけど、なかなか四角にならず、溶けてしまったねこびーんになってしまいました。

NetBeans Day のころからレセプションは行われていましたが、年々派手になっています。

今年はフラフープを使ったダンスなどがステージで行なわれたり、直径 4 ~ 5m の空気で膨らませたボールの中に入って転がるアトラクションがあったりと、いろいろと趣向が凝らされてました。

Startup Camp > Base Camp, CommunityOne, Moscone Center Startup Camp > Base Camp, CommunityOne, Moscone Center
Startup Camp > Base Camp, CommunityOne, Moscone Center Startup Camp > Base Camp, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center
Reception, CommunityOne, Moscone Center Reception, CommunityOne, Moscone Center

ラベル: , ,