2009/12/11

JavaFX 勉強会

はてなの blog にも書きましたが、この日は JavaFX.jp の勉強会

場所は前回に引き続き IAjapan の会議室です。いつも使わせていただいて、ありがとうございます > IAjapan 関係者のみなさま

櫻庭はアニメーションについてお話ししました。ほんとは 1 時間のつもりだったのですが、1 時間半も喋ってしまいました。

いわゆるキャラクターアニメーションではなくて、GUI でよく使われるフェードなどのアニメーションに関する話。

アニメーションはうまく使えばとても効果的だし、ユーザビリティも向上します。でも、使い方を間違えると、とても使いにくくなってしまいます。

アニメーションを使うと派手になるので、カッコよさのためにアニメーションを導入すると、大概失敗しますね。あくまでも、アニメーションは使い勝手をよくするためと位置づけなくてはいけないと思います。

特に、場面が変化する、状態が推移するなど、ユーザが迷子になりがちなところで、迷子にしないようにアニメーションを使えばいいのではないかと思っています。

そこらへんが伝われば、櫻庭としては御の字です。

 

その他は、岡崎さんが Project MaiTai、片貝さんが NetBeans の JavaFX Plugin に関して、高橋さんがビデオエンコーダーの話。

たまたまですが、NetBeans の JavaFX Composer Plugin の日本でのお披露目となりました。Composer Plugin は NetBeans の GUI ビルダーのように GUI コンポーネントをぺたぺたと貼って GUI を構築できるというプラグインです。

でも、これはやっぱり開発者向けなんですよね。早いとこデザイナー向けのツールを出してもらいたいなぁ。

岡崎さん, 第 2 回 JavaFX 勉強会
岡崎さん
片貝さん, 第 2 回 JavaFX 勉強会
片貝さん。後ろに写っているのが、Composer Plugin
高橋さん, 第 2 回 JavaFX 勉強会
高橋さん

ラベル: , ,

2009/11/28

Java Küche 第 9 回勉強会

というわけで、Java Küche の勉強会で講演です。場所は琉球大学。

私は JavaFX で、もう 1 人の下東さんは Ruby on Rails。かなりかけ離れた話題ですね。

JavaFX なんて聞いたこともないという人も多いと思っていたので、今回も初心者向けです。いつものごとく GUI と構造の話しをしてきました。

意外にも時間が余ってしまったので、NetBeans 使ってライブコーディングまでしてしまいました。あいかわらず、時間配分がむちゃくちゃのようです ^ ^;;

また、ノベルティの T シャツとかを持っていって、質問してくれた人に配ったおかげもあったのか、いろいろと質問があったのでよかったです。

Java SE 7 の質問とかもあったのですが、あまり答えられなくてスイマセン。

ラベル: , ,

2009/11/23

Getting Started SwingUnit (SwingUnit 第 2 回)

というわけで、今回から実際に SwingUnit を使ってみましょう。

インストール

まずは、インストールから。

SwingUnit は java.net で開発されています。プロジェクトサイトは https://swingunit.dev.java.net です。

ダウンロードはプロジェクトサイトの[Downloads]のところから。ダウンロードするのは以下の 2 つのファイルです。

  • swingunit.jar
  • TestSetting.properties

そのほかにサンプルが入っている demo.zip ファイルがダウンロードできます。

その他に、JUnit が必要です。ここでは、4 系を使いますが、3 系でも大丈夫です。

テストを行うときには、クラスパスに swingunit.jar と junit-4.x.jar (x はバージョン番号) を加えます。また、テストを行うディレクトリに TestSetting.properties ファイルを置いておきます。

デモ

試しにデモを実行してみましょう。

demo.zip ファイルをダウンロードして、適当な場所に展開しておきます。

デモには Ant を使うので、適宜用意しておいてください。

実をいうと、swingunit.jar ファイルと TestSetting.properties ファイルは demo.zip の中に含まれるので、ダウンロードする必要はなかったんですけどね。

次に、demo.zip を展開したところにある、build.properties ファイルを編集します。

デフォルトでは次のようになっています。

junit.jar=C:\\tools\\junit\\junit3.8.1\\junit.jar
swingunit.jar=.\\swingunit.jar

つまり、swingunit.jar と junit-4.x.jar の場所を書いておくわけです。swingunit.jar はこのままで大丈夫なので、JUnit だけ現状に合わせます。

後は Ant を実行するだけです。

すると、下の図のように勝手にテストが実行されます。メニューが出てきたり、ボタンをクリックしたり、テキストフィールドに値を入力したりと、どんどんテストが進みます。

とりあえず、こういうことが自動的にできるんだなぁということが分かったところで、今日はおしまい。

SwingUnit Demo

ラベル:

2009/11/16

SwingUnit (その 1)

すごい久々の Java ネタ。

今、ITpro の Java 技術最前線で、VisualVM の記事を書いてます (第 1 回へのリンク)。

たぶん、VisualVM の日本語の記事は初じゃないかなぁと自負しております。id:cero-t を差しおいて、書いてしまいました ^ ^;;

意外に書いてみると、いろいろと書きたいことが多く、3 ヶ月も引っ張っています。

まぁ、それはそれで見ていただくとして、今日はその記事の中で使用したツールについて。

ヒープのリークを発見するという時に、GUI を連続実行させるために SwingUnit というツールを使いました。

VisualVM の記事なので、SwingUnit に関しては説明をはしょってしまったのですが、SwingUnit に興味を持たれた方がちらほら。

そこで、SwingUnit の増補版を書いてみようと思います。

 

ところで、私が SwingUnit に出会ったのは、JavaOne 2005 Tokyo の Night for Java Technology の時です。

Night for Java Technology は、ライトニングトーク形式でアプリをデモする、デモ大会なのです。

その中で、櫻庭が注目したのが、SwingUnit だったわけです。

Night for Java Technology に出場しているということは、SwingUnit を開発しているのが日本人ということです。安中さんという方が開発を続けています。

で、いつか紹介したいとつねづね思っていたのです。

それはそうと、こういうデモ大会っていいですよね。JavaOne Tokyo がなくなってしまったので、Night for Java Technology もなくなってしまったのですが、ぜひ復活してもらいたいなぁ。

一度、JJUG で CCC にやりたいと幹事会で提案したんですけど、時間がなくてあきらめちゃったんですよね。

 

まぁ、それはそれとして、SwingUnit です。

SwingUnit は Unit という名前がつくことからも分るように JUnit と組み合わせて、Swing のアプリケーションをテストするために使用します。

Swing のテストというと、各コンポーネントを特定するため、ID を振らないとダメなような気がします。しかし、SwingUnit ではコンポーネントを特定するために ID だけでなく、ラベル名なども使って特定することができます。このため、テストを前提に作っていない Swing アプリケーションでも、大概はテストのために実装を追加する必要がありません。

テスト自体は XML で記述します (シナリオといいます)。テストシナリオを XML で記述できるので、テストを書き直してもコンパイルの必要はありません。

ただ、この XML を書くのが面倒なんですよねぇ... というのは昔の話。

以前は手で書かなくてはいけなかったのですが、今はシナリオのための専用のエディタがあるため、以前に比べるとずっと楽にシナリオを書けるようになりました。

しかも、オープンソースで開発されているのです。

というわけで、Swing アプリケーションのテストをするのであれば、SwingUnit はかなり強力な手助けになること間違いなしです。

この SwingUnit ってかなり強力なツールなんですけど、イマイチ知名度は低いような気が... せっかく日本初でこういうツールがあるのですから、ぜひ使ってみないと。

でも、長くなったので、実際に使ってみるのは次回。

ラベル:

2009/11/14

沖縄にいきます

11/28 に沖縄の Java コミュニティの Java Küche の第 9 回勉強会でプレゼンします。

お題は JavaFX です。

詳しくは以下の URL へ。

http://www.java-kuche.org/modules/eguide/event.php?eid=14

沖縄のみなさま、よろしくお願いします。

ラベル: , ,

2009/11/06

J2SE 5.0 が EOSL

J2SE 5.0 がリリースされてから、まだそんなに経ってないような気がしてましたけど、もう 5 年。

なんと、もう EOSL ですよ。

EOSL というのは End of Service Life のこと。つまり、これ以降の保守はしないということです。

まだ、J2SE 1.4系で動いているシステムも多いと思いますけど、本格的に Java SE 6 への以降を考えた方がいいと思いますよ。

すくなくとも、J2SE 1.4 系とそれ以降のバージョンではアプリケーションの管理がむちゃくちゃ楽になってます。

Java VM から得られる情報は、J2SE 1.4 系とそれ以降では大違いなのです。Java SE 6 に至っては、動作中のアプリケーションに後からアタッチして VM の情報を得られるのですから。

J2SE 5.0 で追加されたジェネリクスやアノテーションなんて使わなくてもいいから、とりあえず動作させるのは Java SE 6 にしてもらいたいところです。

 

ちなみに Java for Business の契約をしていれば、以前の J2SE 5.0 以前のバージョンも保守してくれます。

でも、やはり以前のバージョンの保守はなかなか難しい所があります。なんといっても、そのころ JDK を開発をしていた人は大量に抜けてしまっていますから。

以前、J2SE 5.0 がリリースされてかなり経った頃、とある会社が J2SE 1.4.2 のバグ修正を Sun にプロモートしたことがあったらしいのです。その頃、その某社は Java SE のソースライセンスを持っていました。

ところが、Sun は J2SE 1.4.2 でそのバグの修正はできないということと、もしその某社のシステムを J2SE 5.0 にバージョンアップにできるのであればそれに対しては対応するということを回答したようです。

で、その某社は J2SE 5.0 にバージョンアップすることを決め、再びバグ修正 (J2SE 1.4 に由来のバグと、バージョンアップに伴う新たなバグの両方) をプロモートしました。で、バグ修正してくれたようです。

つまり、ライセンシーであっても、以前のバージョンのバグに対しては対応しきれないこともあるわけです。

だから、もし J2SE 1.4 でシステムを動作しているとしたら、早めに Java SE 6 にバージョンアップした方がいいと思いますよ。

ラベル:

2009/07/24

CSQ さん ご苦労さん パーティ

CSQ さんご苦労さんパーティ, 銀座日航ホテル

コンポーネントスクエア (以下 CSQ) が精算されるのだそうです。ということで、丸山先生を中心に Farewell Party。

場所は銀座の日航ホテル。てっきり日航ホテルのレストランなのかと思ったら、宴会場でした。

こういう時の常で櫻庭は写真係。でも、実をいうと人の写真を撮るの苦手なんですよね。気弱なんです ^ ^;;

久しぶりにお会いする人多数。ほんとに CSQ がなければ出会っていない人が多かったなぁと感慨ひとしおです。特に私はエンタープライズ系は蚊帳の外なので、CSQ や CSQ が主催していた丸レクがなかったら、まったく接点がなかったはず。

ほんとにご苦労さまでした。

CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル CSQ さんご苦労さんパーティ, 銀座日航ホテル
CSQ さんご苦労さんパーティ, 銀座日航ホテル

銀座日航ホテル 東京都中央区銀座8-4-21

その後、二次会で美食酒家ちゃんと。なぜか私の所にデザートが集まる ^ ^;;

美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座
美食酒家 ちゃんと。, 銀座 美食酒家 ちゃんと。, 銀座

美食酒家ちゃんと。 銀座ナイン店 中央区銀座 8-5 銀座ナイン 1 号館 2F

ラベル: ,

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/19

今日の JavaFX 1.2

明日のオープンソースカンファレンスのために札幌に前泊。ぜっかく札幌まで来ているのですから、札幌 Java コミュニティ渡辺さんに連絡をとって、勉強会をやっていただくことにしました。

Swing とかの GUI 系の話題がいいということであったので、Swing のスレッドモデルと非同期処理についてお話しすることにしました。

しかし、明日の資料作成が全然終わらない。

JavaFX のプレゼンツール Caraibe は JavaFX 1.1 で作っていたので、せっかくだから JavaFX 1.2 に対応させようと思ったのが運のつき。

安易に NetBeans の JavaFX Plugin を JavaFX 1.2 対応のものにアップデートしてしまったのです。

そうしたら、動かない、動かない。

もう JavaFX 1.2 をやめて 1.1 に戻そうと思ったのですが、プラグインのダウングレードってどうやるかよく分からないし... しかたないので、例外はでるけど動くというところで、妥協することにしました。

ドキュメントには書いていないところで変更されていたのが、Scene Graph プロジェクトの Scenario.jar に関する部分。ようするに、JavaFX の描画要素と Swing を連携させる部分です。

まず、Scenrario.jar がありません。しかたないので、JAR ファイルを展開して (といっても jar コマンドの t オプションで調べるだけですが)、対応しそうなクラスを探すというところから。

その結果、javafx-sg-common.jar ファイルと javafx-sg-swing.jar の 2 つの JAR ファイルが Scenario.jar ファイルに対応することが分かりました。

今まで Node オブジェクトが貼られている Swing コンポーネントは

    var node: Node = ...;
    var pane: JSGPanel = node.impl_getSGNode().getPanel();

で取得することができたのですが、これができません。

var panel = (node.impl_createPGNode() as SGGroup).getPanel();

でパネルは取得できることがわかったのですが、どうもちゃんと Node オブジェクトが貼られているパネルではないようなのです。

この時点でこれはあきらめました。このため、ポップアップメニューで指定のページに移動することや、終了させることは省略。まぁ、プレゼン自体には影響ないので、大丈夫です。

この問題はもう少し時間をかけて調べれば、どうにかなるでしょう。Scene Graph プロジェクトのソースが公開されていれば、もっと簡単に調べられるのですが...

もう 1 点、分からないところがあります。

Caraibe ではマウスクリックによって、動的に Node オブジェクトを生成し、シーングラフに追加していきます。しかし、以下のようなメッセージと例外が発生してしまうのです。

WARNING * WARNING * WARNING * WARNING * WARNING
An attempt has been made to add node to a new group without
first removing it from its current group. See the class
documentation for javafx.scene.Node for further information.
This request will be granted temporarily but it will
be refused in the future. Please change your code now.
node=Group [id=background] oldgroup=Group newgroup=Group
Stack trace follows.
java.lang.IllegalArgumentException
        at javafx.scene.Group$_SBECL.onChange(Group.fx:162)
      <<以下、省略>>

この理由が全然分からない。例外が投げられている箇所の動的追加をやめたとしても、やっぱりまだ例外が発生します。

Caraibe 全体だと大きすぎるので、小さいサンプルを作って現象を再現させようと思ったのですが、普通に追加できます。

一体全体、なにがわるいんだろう。全然分からない。

幸いなことに、例外が投げられたとしても、動作はそのまま続けられるので、これも追求するのをやめました。クリックするたびに例外が投げられるのは気持ち悪いけど、背に腹は代えられません。

ほんとは札幌 Java コミュの勉強会に出るまでに、写真を撮りにいったり、なにか軽く食べたりしたかったのですが、断念。

今日は、朝からなにも食べていないのですごいおなかへっているのですが、しかたありません。

私がこうやってホテルで資料作り & デバッグをしている間、Java カンの人たちは、寿司食べに行って、その後ジンギスカンまで食べたというじゃないですか。いいなぁ。

ラベル: ,

今日の札幌 Java コミュニティ勉強会

というわけで、勉強会です。

前に書いたように、Swing のスレッドモデルと SwingWorker についてお話ししました。

Swing のスレッドモデルということで、まずスレッドセーフについて少し解説しました。でも、さわりだけ。マルチスレッドで実装するのは難しいんだよということが伝われば OK。

その後、Swing というか、ウィンドウシステム全般のアプリケーションがどうやって動作するのか、つまりイベント駆動について解説。ここで、重要なのはイベントをイベントキューにためておき、EventDispatchThread オブジェクトが唯一イベントキューからイベントを取りだして、イベント処理をおこなう (実際は以上するだけですが) ことです。

そうして、もう 1 つ重要なのが、イベントディスパッチスレッドと他のスレッドの間の橋渡しをしているのが、イベントキューだということです。なので、イベントディスパッチスレッド以外のスレッドから Swing の操作をおこないたい場合は、イベントキューにイベントを追加することしかできません。

よく使用される SwingUtilities.invokeLater メソッドを追っていくと、イベントキューにイベントを追加しているだけということが分かります。

これが、JFrame を生成するところで、SwingUtilities.invokeLater メソッドを使う理由というわけです。

後は、SwingWorker クラスの説明。まぁ、これはおまけみたいなものですね。

このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

Adobe Flash Player を取得

(資料はクリックすれば進みます)

 

勉強会の後は懇親会。地鶏と旬魚 手づくり豆冨 とととという居酒屋で歓談。北海道の状況とかいろいろをお話しできて、よかったです。

今度、札幌にいくことがあったら、またよろしくお願いします。

ラベル: ,

2009/06/17

今日の活動予定

今週末から、怒濤のようにいろんなところで講演します。

ぜひ、ご参加ください。

あさっては札幌 Java コミュで勉強会。まだ定員に達していないようなので、札幌近郊の方はぜひ。

ありがたいことに、OSC は満員。でも、会場に行ってみると入れるかもしれないので、登録できなかった方でも、セッション前にのぞいてみてください。

その後の、JavaOne 報告会は Java SE と JavaFX に関して報告します。詳細はまだ決まっていないので、決まりしだいアップデートします。

ラベル: , ,

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 です...

ラベル: , ,

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 に入るのだとしたら、なかなかおもしろそうです。たぶん、間に合わないのもありそうですけど。

ラベル: ,

2009/04/21

今日の JavaOne

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

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

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

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

ラベル: ,

2009/04/10

今日の QCon Tokyo

昨日、今日と品川の東京カンファレンスセンタで QCon Tokyo

櫻庭はカメラマンとして参加 ^ ^;;

なので、スピーカーの皆さんを並べてみることにしましょう。

QCon Tokyo 2009, 東京コンファレンスセンター QCon Tokyo 2009, 東京コンファレンスセンター
ロビーには O'Reilly のガチャガチャが...
QCon Tokyo 2009, 東京コンファレンスセンター
InfoQ の設立者の Floyd Marinescu さん。
後ろにいるのは InfoQ Japan の長尾さん
QCon Tokyo 2009, 東京コンファレンスセンター
トラックホストの細川さん
QCon Tokyo 2009, 東京コンファレンスセンター
同じく中台さん
QCon Tokyo 2009, 東京コンファレンスセンター
同じく角谷さん
QCon Tokyo 2009, 東京コンファレンスセンター
基調講演の Martin Fowler さん
QCon Tokyo 2009, 東京コンファレンスセンター
同じく貴重講演の まつもとゆきひろさん
QCon Tokyo 2009, 東京コンファレンスセンター
萩本順三さん
QCon Tokyo 2009, 東京コンファレンスセンター
Dylan Sciemann さん
QCon Tokyo 2009, 東京コンファレンスセンター
前田 修吾さん
QCon Tokyo 2009, 東京コンファレンスセンター
吉田 裕美さん
QCon Tokyo 2009, 東京コンファレンスセンター
Jeff Barr さん
QCon Tokyo 2009, 東京コンファレンスセンター
江川 崇さん
QCon Tokyo 2009, 東京コンファレンスセンター
木南 英夫さん
QCon Tokyo 2009, 東京コンファレンスセンター
鈴木 雄介さん
QCon Tokyo 2009, 東京コンファレンスセンター
鈴木 章太郎さん
QCon Tokyo 2009, 東京コンファレンスセンター
Martin Fowler さん
QCon Tokyo 2009, 東京コンファレンスセンター
大場 寧子さん
QCon Tokyo 2009, 東京コンファレンスセンター
萩原 正義さん
QCon Tokyo 2009, 東京コンファレンスセンター
梅村 知正さん

初日の夜は会場でパーティ。

もちろん食べ物の写真を撮ります ^ ^;;

QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター QCon Tokyo Conference Party, 東京コンファレンスセンター
QCon Tokyo Conference Party, 東京コンファレンスセンター

続いて 2 日目。

QCon Tokyo 2009, 東京コンファレンスセンター
トラックホストの河村さん
QCon Tokyo 2009, 東京コンファレンスセンター
おなじく平鍋さん
QCon Tokyo 2009, 東京コンファレンスセンター
おなじく中台さん
QCon Tokyo 2009, 東京コンファレンスセンター
丸山 不二夫さん
QCon Tokyo 2009, 東京コンファレンスセンター
Rod Johnson さん
QCon Tokyo 2009, 東京コンファレンスセンター
藤本 真樹さん
QCon Tokyo 2009, 東京コンファレンスセンター
Gregor Hohpe さん
QCon Tokyo 2009, 東京コンファレンスセンター
平鍋 健児さん
QCon Tokyo 2009, 東京コンファレンスセンター
牧野 隆志さん
QCon Tokyo 2009, 東京コンファレンスセンター
Randy Shoup さん
QCon Tokyo 2009, 東京コンファレンスセンター
中村 輝雄さん
QCon Tokyo 2009, 東京コンファレンスセンター
杉 達也さん
QCon Tokyo 2009, 東京コンファレンスセンター
Henrik Kniberg さん
QCon Tokyo 2009, 東京コンファレンスセンター
森 正弥さん
QCon Tokyo 2009, 東京コンファレンスセンター
木下 史彦さん
QCon Tokyo 2009, 東京コンファレンスセンター
清水 敏正さん
QCon Tokyo 2009, 東京コンファレンスセンター
パネル

これ以外の写真は以下のリンクからお願いします。

QCon Tokyo 2009

ラベル: ,

今日の懇親会 - 芋蔵品川べつどころ

芋蔵 品川べつどころ, 品川

QCon Tokyo の初日はパーティがあったのですが、その後河村さんたちが Rod Johnson たちと飲みにいくと聞いたので、一緒にまぜてもらいました。そしたら、Rod Johnson だけでなく、InfoQ の Floyd Marinescu と eBay の Randy Shoup も一緒。総勢 16 人!!

外国の人には苦手だろうと思われるホタルイカとかミミガーとか塩辛とかも、平気で食べてましたよ。みんな日本通?

どうやら Rod Johnson も Floyd Marinescu も私がカメラマンだと思っていたようでした。いつも部屋の一番前の方でカシャカシャやっているので、そう思われてもしかたないんですけどね。

しかも、D300 はシャッター音が結構大きいので部屋に響いていたらしいです。撮っている方としては夢中なのでそんなこととは思いもよらなかったのですが、かなり目立っていたらしいです ^ ^;;

ちなみに上の写真は、Rod Johnson が「春」という漢字を書いているところ。なにせ Spring ですから。

芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川 芋蔵 品川べつどころ, 品川
芋蔵 品川べつどころ, 品川

芋蔵品川べつどころ 港区港南 2-2-9 朝日ビル 4F

ラベル: ,

2009/03/23

今日の丸レク

今日は蒲田の富士通で丸山先生レクチャーシリーズ。今年は全然参加していないので、1 年ぶり。

しかも、Adobe の Flash Platform、Microsoft の Silverlight、そして JavaFX で去年とまったく同じ。発表者もまったく同じ。

この組み合わせはやりにくいんですよね。Adobe と MS はどういうプレゼンをするか容易に予想できるので、それと同じパターンはやりたくないのです。だって、つまらないんだもん。聞く方にとっても同じようなプレゼンが 3 つ並んでも、混同するだけでおもしろくないんじゃないかなぁ。

なので、今年も変化球。

去年は構造と手続きの話をしたのですが、今年は何の話をするかとても迷いました。というか、前日までまよってました。

結局、JavaFX Compiler とメタプログラミングについてお話しをしてきました。

JavaFX Compiler に関しては、あまり深入りせずに、宣言的文法がどのように Java の手続き的な文法に置き換えられるかを中心に紹介しました。そして、その延長線上でメタプログラミングの話。

Java では JSR 223 でスクリプト言語を扱えるようになりました。これを使えば、スクリプトの中で、動的にスクリプトを作成して、その場で実行ということも簡単にできます。

JavaFX には FXEvaluator クラスという JSR 223 をラップするクラスが用意されているので、スクリプトを実行することも簡単にできます。FXEvaluator クラスは JavaFX Script しか扱えないのが残念なところです。

資料はもちろん JavaFX で作った自作プレゼンツールです。下のリンクから見ることができます。

しかし、FXEvaluator クラスだけはアプレットで使えないんです。だから、メタプログラミングの部分はカットしてあります。

http://www.javainthebox.net/publication/20090323marulec/marulec.html

ところで、櫻庭は RIA という言葉がキライです。

どうもリッチというのが鼻につくんですよね。この場合のリッチは、普通に考えたらリッチな表現力に結びつくからです。

もちろん表現力が豊かなのはいいのですが、私がいやなのは表現力を豊かにすることが目的になってしまいがちだということ。やはり、表現力うんぬんよりもユーザビリティの方が重要なはず。

しかし、RIA という言葉にしてしまうと、表現力の向上ありきのような感じを受けてしまいがちではないかと思うのです。

ユーザが使いやすいのであれば、シンプルな UI でも全然かまわないし、必要であれば 3D などを駆使して作っても全然かまいません。でも、それはユーザの使いやすさという視点を常に忘れないようにしなければいけないと感じています。

もちろん、Adobe や Microsoft がリッチというのを表現力だけでなく、クライアントのリソースであったり、開発環境であったり、さまざまな意味のリッチを含んでいるというのは分かります。今日も Adobe の XXX さんがそう仰っていたし。

でも、普通の人にリッチにそこまで深い意味があると気づかせるのはなかなか難しいのではないかなぁ。どうしても表現力に目が向きがちになってしまうのではないでしょうか。

ということで、RIA よりは UFIA (User Friendly Internet Application) がいいね、という話も一番はじめにしました。略語の一番はじめの文字が U だと、プロレスとかボクシングの団体のように聞こえてしまいますけど ^ ^;;

アンケートを見せていただいたところ、それに賛同してくれる方が少なからずいたので、間違っていないと思うのですが、どうでしょう。

ラベル: ,

2009/01/28

今日の Java Hot Topics セミナ

去年の 12 月はなかったので、久しぶりの Java Hot Topics セミナ。今回は JavaFX 特集ということで、国際化チームの奥津さんと私が担当させていただきました。

実をいうと Sun Tech Days の時に大渕さんと話をしていて、ぜひ Hot Topics セミナで JavaFX を話してくれといわれていたのですが、12 月はあまりの忙しさに断ってしまっていたのです。

ということで、今月になったわけです。

資料はこちらから。もちろん、JavaFX で作ったプレゼンツールです。

http://www.javainthebox.net/publication/20090128JavaFX/javafx.html

今回も構造と手続き的なところから、JavaFX Script の宣言的文法が必要であったという論旨で進めました。

やはり、Flash や Silverlight と比べるとこの点が一番の違いなので、話がやりやすいのです。

ラベル: ,

2008/12/04

今日の Sun Tech Days Day 1

Mr. James Gosling & NekoBean T-Shirt, General Session, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02

今日から 3 日間、東京ミッドタウンで Sun Tech Days。今日は James Gosling が基調講演ということもあって、おおにぎわい。

基調講演の会場で一番前の席に陣取ろうと思ったら、のに子さんがいらっしゃいました。今日こそ指笛を披露してくれると思うのですが...

James Gosling には今年の JavaOne で JavaFX で Flickr の写真を表示するデモの中で、キーワードに James Gosling とした時に表示された写真が私が撮ったもので、去年の Sun Tech Days Tokyo の写真だということをいっておきましたよ ^ ^;;

基調講演の前にエヴァンジェリストによるデモ。白いパネルを検知して、プロジェクタの画像をそこに写すというデモがおもしろかったですね。各席には3D 用の赤青の眼鏡が置いてあったので、どんなデモをするのかと思ったのですが、こちらはちょっと期待はずれ。jMonkeyEngine を使ったデモなんですけど、jMonkeyEngine 使うんだったらもっと派手な映像にすればよかったのに。

そして、次が James Gosling の基調講演。ほんとうにジェネラルな話なので、全然おもしろくないです。彼にこういうことを喋らせてもつまらないということは、分かっている人には分っているはずなんだけどなぁ。

たとえば、JavaOne のジェネラルセッションでは James Gosling はそういう話はまったくしないですから。James Gosling にはもっとギークっぽい話題の方がいいですね。

午後は興味があるのだけ、ポツリポツリと聴講しました。Java SE 6u10 と、JavaFX と、NetBeans。

セッション後はレセプション。今日はその後があったので、ほとんど食べずに控えてました。

Mr. James Gosling, General Session, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02 Mr. James Gosling, General Session, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02
Mr. James Gosling, General Session, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02 荻布 真也さん, 1-M-1 Java SE 6 Update 10 and Deployment, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02
片貝 正紀さん, 1-J-5 NeBeans New and Cool, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02 増月さん, Reception, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02
Reception, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02 Mr. James Hughes, Reception, Sun Tech Days 2008 in Tokyo Day1, 2008.12.02

ラベル: ,

今日の Sun Tech Days Day 2

今日の General Session はかなり空席が目立ちます。私も途中で席を立ってしまったし。

確かに James Hughes は James Gosling に比べると、認知度がずいぶん違いますからねぇ。ちなみに昨日は James Gosling のセッションだけ聞いて帰ってしまった人がずいぶんいるらしいです。そんなに Gosling 見たいのかなぁ。つまらなかったのになぁ。

午後は JavaFX の Hands on Lab に参加しました。といっても、参加者というよりはお手伝いみたいなことをしてきました。なんと、この HoL はリリース前の JavaFX SDK が使えてしまうという、太っ腹な企画です。

でも、リリース前ということで、事前にダウンロードしておくことや、当日もネットからダウンロードもできないので、CD や USB メモリで参加者にコピーしてもらってました。このため、インストール完了までがとても大変。

その割には、内容がちょっと難しすぎたんじゃないかなぁ。

ラベル: ,

今日の Sun Tech Days Day 3

3-U-5 James Gosling に訊け!!, University Day, Sun Tech Days 2008 in Tokyo Day 3, 2008.12.04

今日はもともと NetBeans Day が予定されていたのですが、キャンセルになっちゃいましたねぇ。その代わり、午後から教育関係者向けのセッションがありました。今日は、Arshan の Sun SPOT のセッションや、Sun のキャンパスアンバサダーによる James Gosling への Q&A セッションがありました。この Q&A セッションが今年の Sun Tech Days の中で一番のおもしろかったじゃないかなぁ。

セッション後はレセプション。料理いっぱいですが、参加者が少ないので、食べまくり ^ ^;;

3-U-5 James Gosling に訊け!!, University Day, Sun Tech Days 2008 in Tokyo Day 3, 2008.12.04 3-U-5 James Gosling に訊け!!, University Day, Sun Tech Days 2008 in Tokyo Day 3, 2008.12.04
3-U-5 James Gosling に訊け!!, University Day, Sun Tech Days 2008 in Tokyo Day 3, 2008.12.04 3-U-5 James Gosling に訊け!!, University Day, Sun Tech Days 2008 in Tokyo Day 3, 2008.12.04
University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04 University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04
University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04 University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04
University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04 University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04
Duke どら焼き, University Day Reception, Sun Tech Days 2008 in Tokyo, 2008.12.04

ラベル:

2008/11/21

今日の java-ja

java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ

久しぶりの java-ja。第 1 回、第 2.5 回、第 4 回に参加した後、第 11 回までずいぶんブランク。で、今回は第 12 回。

このところと、かなり忙しくて、寝不足が続いていたのですが、そのために頭痛。もともと頭痛持ちで、寝不足だったりすると吐き気を伴った偏頭痛がひどいんです。

発表順序は最後にしてもらっていたので、ちょっと休んで、少しよくなってから会場へ。でも、まじめにキャンセルしてもらおうかと思ったぐらい。

8 時過ぎに会場についたので、すぐにでも発表なのかと思ったら、まだ太一さんが発表してましたよ。

後から聞いたところによると、開始が 30 分ぐらい遅れてたそうで。

 

で、今日は Synth Look & Feel について話をしてきました。

もともと、レイアウトマネージャに関して話をしようと思っていたのですが、やまうらさんとかぶるので Synth にしたのです。でも、それだけで食いさがるのもやなので、アニメーションを使ったレイアウトマネージャをデモしちゃいました。フレームの大きさをリサイズして再レイアウトする時、コンポーネントの移動をアニメーションで行うというモノです。

ついでに Synth ということで、つかみは大人の科学のシンセサイザークロニクルを持ち出しました。付録のアナログシンセの SX-150 で効果音出したり ^ ^;;

ちなみに、そんな遊びの部分は公開している資料からはばっさり切ってあります。参加してくれた人たちの特典です。

本題の方は、Synth を使ってちょっとずつ見た目をよくしていくという形式で行いました。JavaOne の Extreme GUI Makeover みたいなプレゼンにしたかったんです。

最近の Swing はパフォーマンスもいいし、Nimbus を使えば見た目もカッコいいので、見直すきっかけになればいいなぁ。

下の資料はクリックしていけば進みます。真っ白ですが、バグではなくて、そう作ったんです。クリックすれば、何か出てきます。サンプルのコードなどは こちら から。

 

ついでのついで。今回使用した曲

オープニング Donavon Frankenreiter Swing on down (やっぱり Swing でしょう)
シンセサイザーの紹介 Yellow Magic Orchestra Rydeen (シンセの古典的名曲)
Synth のサンプル STYX Mr. Robot (ドモアリガト ミスタ ロボット)
エンディング Neil Young After the Gold Rush (歌詞に UFO が出てくるんです。なぜ UFO が関係するかは秘密)
java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ
java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ
java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ java-ja 第十二回 第1回チキチキ そろそろ Swing の実力をおまえらにみせてやんよ

ラベル: , ,

2008/10/16

今日の Cross Community Conference

ということでとうとう当日です。

櫻庭はいつものごとく開場をウロウロして写真を撮るのが仕事。一部の人にはカメラマンと思われていたようですが ^ ^;;

きしださんプロデュースの BOF の後半だけ写真がないんですけど、それは裏の java-ja の LT のせいです。すいません。

ということで、まずは基調講演。

G-1 基調講演 「Cloud と Android」 丸山 不二夫さん

丸山 不二夫さん, G1 基調講演 Cloud と Android, JJUG Cross Community Conference 2008 Fall 丸山 不二夫さん, G1 基調講演 Cloud と Android, JJUG Cross Community Conference 2008 Fall
丸山 不二夫さん, G1 基調講演 Cloud と Android, JJUG Cross Community Conference 2008 Fall 丸山 不二夫さん, G1 基調講演 Cloud と Android, JJUG Cross Community Conference 2008 Fall

G-2 基調講演 「Hudson による継続的インテグレーション」 川口 耕介さん

川口 耕介さん, G-2 基調講演 Hudsonによる継続的インテグレーション, JJUG Cross Community Conference 2008 Fall 川口 耕介さん, G-2 基調講演 Hudsonによる継続的インテグレーション, JJUG Cross Community Conference 2008 Fall
川口 耕介さん, G-2 基調講演 Hudsonによる継続的インテグレーション, JJUG Cross Community Conference 2008 Fall 川口 耕介さん, G-2 基調講演 Hudsonによる継続的インテグレーション, JJUG Cross Community Conference 2008 Fall

川口さんは JavaOne のように T-Shirt トスをしてくれたのですが、JavaOne と違ってステージが暗いためぜんぜん写真撮れませんでした orz

 

午後は 3 トラック構成

まずはひがさんがプロデュースした A トラックです。

A-1 「DOM パフォーマンスチューニング入門」 amachang さん

amachang さん, A-1 DOMパフォーマンスチューニング入門, JJUG Cross Community Conference 2008 Fall amachang さん, A-1 DOMパフォーマンスチューニング入門, JJUG Cross Community Conference 2008 Fall
amachang さん, A-1 DOMパフォーマンスチューニング入門, JJUG Cross Community Conference 2008 Fall amachang さん, A-1 DOMパフォーマンスチューニング入門, JJUG Cross Community Conference 2008 Fall

amachang さんの写真は多いのですが、それは休憩中にも撮っていたからなのでした。

A-2 「ギークなお姉さんができるまで」 purprin さん, べにぢょさん

purprinさん べにぢょさん, A-2 ギークなお姉さんができるまで, JJUG Cross Community Conference 2008 Fall purprinさん, A-2 ギークなお姉さんができるまで, JJUG Cross Community Conference 2008 Fall
べにぢょさん, A-2 ギークなお姉さんができるまで, JJUG Cross Community Conference 2008 Fall purprinさん べにぢょさん, A-2 ギークなお姉さんができるまで, JJUG Cross Community Conference 2008 Fall

A-3 「『Java から Ruby へ』 アンド・ナウ」 高井 直人さん, 角谷 信太郎さん, 和田 卓人さん

高井 直人さん, A-3 『JavaからRubyへ』 アンド・ナウ, JJUG Cross Community Conference 2008 Fall 角谷 信太郎さん, A-3 『JavaからRubyへ』 アンド・ナウ, JJUG Cross Community Conference 2008 Fall
高井 直人さん 角谷 信太郎さん 和田 卓人さん, A-3 『JavaからRubyへ』 アンド・ナウ, JJUG Cross Community Conference 2008 Fall 和田 卓人さん, A-4 YET ANOTHER GREEN IT, JJUG Cross Community Conference 2008 Fall

角谷さんのイスの座り方が気になってしかたなかったセッション。いつずり落ちるのではないかと、ヒヤヒヤしてました ^ ^;;

ちなみに、このセッションでは中央最前列になぜか java-ja の 3 人が...

JJUG Cross Community Conference 2008 Fall

A-4 「YET ANOTHER GREEN IT」 角谷 信太郎さん, 和田 卓人さん (おまけ ヨシオリさん)

角谷 信太郎さん, A-4 YET ANOTHER GREEN IT, JJUG Cross Community Conference 2008 Fall 角谷 信太郎さん 和田 卓人さん, A-4 YET ANOTHER GREEN IT, JJUG Cross Community Conference 2008 Fall
A-4 YET ANOTHER GREEN IT, JJUG Cross Community Conference 2008 Fall 角谷 信太郎さん 和田 卓人さん, A-4 YET ANOTHER GREEN IT, JJUG Cross Community Conference 2008 Fall

 

次は今村さんがプロデュースした B トラックです。

B-1 「ネットワークの未来」 藤田 昭人さん, 大西 真晶さん

藤田 昭人さん, C-1 ネットワークの未来, JJUG Cross Community Conference 2008 Fall 大西 真晶さん, C-1 ネットワークの未来, JJUG Cross Community Conference 2008 Fall

B-2 「Sun SPOT で何して遊ぶ?」 小出 洋さん

小出 洋さん, B-2 SunSPOTで何して遊ぶ?, JJUG Cross Community Conference 2008 Fall 小出 洋さん, B-2 SunSPOTで何して遊ぶ?, JJUG Cross Community Conference 2008 Fall

大渕さんの blog でやっていた Sun SPOT アイディアコンテスト に応募した Sun SPOT 腕時計 の実物をほんとに作ってしまったらしいです。さすが小出先生。

B-3 「Android でモバイルマッシュアップ」 adamrocker さん

adamrockerさん, B-3 Androidでモバイルマッシュアップ, JJUG Cross Community Conference 2008 Fall

話題の Android なので、もっといっぱい人が入るかと思ったのですが...

B-4 「楽しい Spring 2.5」 土岐 孝平さん

土岐 孝平さん, B-4 楽しいSpring2.5, JJUG Cross Community Conference 2008 Fall

 

C-1 「変化を始めたe-businessアプリケーション環境」 米持 幸寿さん

米持 幸寿さん, C-1 変化を始めたe-businessアプリケーション環境, JJUG Cross Community Conference 2008 Fall 米持 幸寿さん, C-1 変化を始めたe-businessアプリケーション環境, JJUG Cross Community Conference 2008 Fall

C-2 「オラクルと BEA の融合で WebLogic はこうなる!」 杉 達也さん

杉 達也さん, C-2 オラクルと BEA の融合で WebLogic はこうなる!, JJUG Cross Community Conference 2008 Fall 杉 達也さん, C-2 オラクルと BEA の融合で WebLogic はこうなる!, JJUG Cross Community Conference 2008 Fall

C-3 「Java における Full GC の抑止 - 明示的メモリ管理によるアプローチ -」 小幡 元樹さん

小幡 元樹さん, C-3 JavaにおけるFullGCの抑止 -明示的メモリ管理によるアプローチ-, JJUG Cross Community Conference 2008 Fall 小幡 元樹さん, C-3 JavaにおけるFullGCの抑止 -明示的メモリ管理によるアプローチ-, JJUG Cross Community Conference 2008 Fall

 

ここからが、BOD です。まずはきしださんプロデュースの BOF B-1。

「OpenSocial で作るソーシャルマッシュアップアプリケーション」 田中 洋一郎さん

田中 洋一郎さん, BOF B-1 OpenSocialで作るソーシャルマッシュアップアプリケーション, JJUG Cross Community Conference 2008 Fall

「Cubby で RESTful な Web アプリを」 縣 俊貴さん

縣 俊貴さん, BOF B-1 CubbyでRESTfulなWebアプリを, JJUG Cross Community Conference 2008 Fall 縣 俊貴さん, BOF B-1 CubbyでRESTfulなWebアプリを, JJUG Cross Community Conference 2008 Fall

「エンジニアのためのキャッチコピーの作り方」岡崎 隆之さん

岡崎 隆之さん, BOF B-1 エンジニアのためのキャッチコピーの作り方, JJUG Cross Community Conference 2008 Fall 岡崎 隆之さん, BOF B-1 エンジニアのためのキャッチコピーの作り方, JJUG Cross Community Conference 2008 Fall

BOF A-1 「Agile は現場に適用できるのか?」 片山 智佐子さん, きたむらさん, 柳本 芙友子さん

BOF A-1 Agileは現場に適用できるのか?, JJUG Cross Community Conference 2008 Fall きたむらさん, BOF A-1 Agileは現場に適用できるのか?, JJUG Cross Community Conference 2008 Fall
柳本 芙友子さん, BOF A-1 Agileは現場に適用できるのか?, JJUG Cross Community Conference 2008 Fall 片山 智咲子さん, BOF A-1 Agileは現場に適用できるのか?, JJUG Cross Community Conference 2008 Fall

もうちょっと柳本さんにふった方がよかったんじゃない > 片山さん

BOF A-2 「java-jaプレゼンツ・第十一回 第 2 回チキチキ JJUG だよ全員集合 ライトニングトーク大会」

「家族と技術と私」 ふなと たかし (tfunato) さん

ふなと たかし (tfunato) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall ふなと たかし (tfunato) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「Hudson のソースコードリーディング」 cactusman さん

cactusman さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall cactusman さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「びーずのようななにか」 西尾 泰和さん

西尾 泰和さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 西尾 泰和さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「アウトプット重要 -LT 編-」 岩間 亮 (happy_ryo) さん

岩間 亮 (happy_ryo) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 岩間 亮 (happy_ryo) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「Java でさくっとミニプログラムを作る時の心得」 矢野勉 (t_yano) さん

矢野勉 (t_yano) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 矢野勉 (t_yano) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

矢野さんって、なんでいつもシャツのボタンを下 2 つだけ外しているのだろう?

「遠恋と何か」 鎌田 啓佑 (Ewigkeit) さん

鎌田 啓佑 (Ewigkeit) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 鎌田 啓佑 (Ewigkeit) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「【作ってみた】niconico4jを作ってみた【Java】 ~はじめてのライブラリ公開~」 野口 大輔 (regtan) さん

野口 大輔 (regtan) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 野口 大輔 (regtan) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「継承だろ JK」 露木 誠 (everes) さん

露木 誠 (everes) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 露木 誠 (everes) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

「ActionScript3 のススメ」 冨永 和志 (Seacolor) さん

冨永 和志 (Seacolor) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 冨永 和志 (Seacolor) さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

時間が余ったので、急遽ヨシオリさん

庄司嘉織さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall 庄司嘉織さん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall
ドラ娘 ナガタさん, BOF A-2 java-jaプレゼンツ・第十一回 第2回チキチキ JJUG だよ全員集合 ライトニングトーク大会, JJUG Cross Community Conference 2008 Fall

ちなみに、今回はドラ娘さんに登場していただいて、ドラを叩いていただきました。ありがとうございました。

以下、感想など

  • 会場の場所が分かりにくい
    青少年センタはいつも複数のイベントを行っているので、部屋にたどり着くまでが大変だったようです
    でも、道案内のための掲示とかは規則でできなかったんです
    誘導のための人がいればいいのですが、なにぶんにも人手が足りないので...
  • 会場暑い。特に A トラックの部屋
    会場のクーラーが 9 月までで、クーラーを入れても送風にしかならなかったのです
  • 窓を開けたら、虫の音がうるさい
    会場は代々木公園のすぐ裏なので、自然はいっぱいです ^ ^;;
  • 思ったより暗かった スピーカーを照らすライトが欲しい
    普通に写真が撮れないので、ストロボを使いました
    でも、ストロボは迷惑ですよね。スイマセン
  • ストロボ使ったせいで、赤目続出
    直接ストロボの光が目に当たると、赤く写ってしまうのです。本当はストロボの光をどこかに反射させればいいのですが....
    修行し直してきます
  • 予想通り A トラックが人が多い
    やっぱり、ひがさんがプロデュースしただけあります。
    C はもうちょっと人が入ってもいいと思うんだけどなぁ。場所が離れているのでしかたないのですが...
  • ドラ娘さん、迷子
    懇親会に向かっていたら、見たことのある人がウロウロしているではないですか。だれかと思ったらドラ娘さんでした。
    java-ja の人たちにおいてけぼりにされたらしいです。
  • 懇親会参加人数が予想の倍の人数だった
    入り切らなくて、java-ja の人たちは別の店へ。すいません、今度はもっと大きな箱を用意します。
  • java-ja 怖い
    ウーロン茶 2 杯とクラッカー 1 枚だけしか食べていないのに、お金払えと脅されました。えぇ、払いましたよ。やはり、噂通り java-ja は怖いです
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会 七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会 七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会 七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会 七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会 七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会
七福, 代々木八幡, JJUG CCC 2008 Fall 懇親会

こちらが、java-ja の打ち上げ

JJUG CCC 2008 Fall もう 1 つの懇親会, 匠料理 いなば, 代々木八幡 JJUG CCC 2008 Fall もう 1 つの懇親会, 匠料理 いなば, 代々木八幡

ラベル: , ,

2008/10/15

今日の川口さん交流会 at Appresso

川口さん交流会, Appresso

川口さんがらいにちされているということで、Hudson のコミッタでもある id:cactusman さんが企画した交流会に参加しました。

4 人の発表が会った後、Appresso での交流会、その後場所を移して懇親会という流れです。

発表したのは、Appresso の小野さん、矢野さん、川口さん、岡崎さん。

小野さん, 川口さん交流会, Appresso 矢野さん, 川口さん交流会, Appresso

小野さんは自社の DataSpider のデモ。

データ連係を行うためのツールで、さまざまな入力や出力を扱うことができます。それだけでなく、途中にロジックを入れることもできるようなので、おもしろいことができそうです。デモでは Excel から DB とか、Excel からメール送信なんてことをやっていただきました。

矢野さんは Wicket と ScriptEngine に関して。

ScriptEngine を使って、Wicket の設定をしてしまおうというもの。

川口さんはコードリーダの Sourcerer

JavaScript の勉強のために作ったツールらしいのですが、すごすぎる...

結論は JavaScript は Lisp だった。

岡崎さんは Project Caroline。

Sun のクラウドの Caroline です。岡崎さんは資料を作る時間がなくて、他人のふんどし状態でした。

ちなみに川口さんと岡崎さんの写真がないのは、お二人とも発表中うろうろ動くので、ぶれてしまうからなのでした。

ところで、交流会の料理の写真は撮るつもりがなかったのですが、岡崎さんから「撮らないの?」という暗黙の視線が...

川口さん交流会, Appresso 川口さん交流会, Appresso
川口さん交流会, Appresso 川口さん交流会, Appresso
川口さん交流会, Appresso 川口さん交流会, Appresso

2 次回の懇親会は 2 日連続の笑笑でした ^ ^;;

笑笑, 江戸川橋 笑笑, 江戸川橋
笑笑, 江戸川橋 笑笑, 江戸川橋
笑笑, 江戸川橋 笑笑, 江戸川橋
笑笑, 江戸川橋

ラベル: ,

2008/10/14

今日の Java Hot Topics Seminar

川口耕介さん, Java Hot Topics Seminar

今月の Hot Topics Seminar は川口さんが来日されているので、特別編。

Projce MetroProject Jersey の話です。

Metro は JAX-WS と JAXB を統合して、より使いやすくした Web サービスのスタックです。JAX-WS だけだとセキュリティと組み合わせるのが面倒くさいのですが、そこらへんも簡単に行えるようになっています。

Jersey は JAX-RS の RI。つまり RESTful Web サービスのためのライブラリです。かなり直感的に REST を扱うことができるようです。

でも、JAX-RS ではクライアントはスコープ外なんですよね。JAX-WS で REST のクライアントを作るのは面倒くさいので、JAX-RS にもクライアントは入らないのかと質問したのですが、ダメそうです。

ちなみに Jersey にはクライアント用のコードも入っていますが、パッケージが com.sun.jersey.api.client。使うなといっているようなものですね。

懇親会は笑笑。

さぼてんくんは社員旅行のハワイから帰ってきて、直接こちらにこられたらしいです。最後の、クッキーの写真はさぼてんくんのハワイみやげです。

笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀 笑笑, 用賀
笑笑, 用賀

ラベル: ,

2008/10/05

今日の CCC

JJUG Cross Community Conference

もちろん、今回も BOF をやります。

java-ja の LT はもちろんですが、その裏のミニセッションもお勧め。このセッションはきしださんプロデュース。blog で募集してたので、ご存じの方も多いはず。櫻庭は特に Cubby と 分散検索エンジン が気になるところです。

もう 1 つのセッションが女性 Agiler たちによるパネルです。どんな話が飛び出すんでしょうね?

 

登録は以下の URL からお願いします。

http://www.java-users.jp/contents/events/ccc2008fall/index.html

ラベル: ,

2008/10/04

今日の CCC

JJUG Cross Community Conference

川口さんのセッション以外にも、おもしろそうなセッションがいっぱいあります。

今回も 3 トラック構成なのですが、A 会場はひがさんがプロデュース。B 会場は SIProp や Android の会の幹事でもある今村さんがプロデュースしています。

ひがさんは blog でセッションの募集をしていたので、ご存じの人も多いはず。今村さんも、Android やネットワーク、ガジェットと今村さんの好きそうなセッションが並んでいます。

そして、もともと java-ja の LT も B 会場のセッションとして行う予定だったのですが、やはり BOF 向けだということで、BOF になりました。

個人的には C 会場の日立の小幡さんの GC ネタのセッションも聞いてみたいですね。

ラベル: ,

今日の PBL

昨年に引き続き、今年も九工大の PBL に協力することになりました。今年のお題は Sun SPOT です。

11/3 にキックオフミーティングがあるということで、小倉へ。

小倉は大学院の時に、ME 学会の発表で来たことがあるのですが、ぜんぜん思い出せません。しかも、その時の学会の会場は九工大の戸畑キャンパスだったはず。

今回の会場は戸畑キャンパスではなくて、九工大ネットワークデザイン研究センターのある AIM ビルです。

前回のキックオフの時も浅海さんと私が喋ったのですが、今回も喋ります。それときしださん。私たちの出番は午後なのですが、ミーティング自体は朝 10 時から。午前中は学生さんたちが自己紹介兼どういうものをつくるかのプランを話すということなので、それにも参加しました。

10 時に小倉に着くために、7:30 の飛行機に乗っていきましたよ。

Sun SPOT というと、SPOT にはじめからある加速度センサや LED、照度センサ、もしくはデバイスをつなげるという話題が多いと思います。なので、そういうのはわざと避けて、Isolation API について喋ることにしました。

SPOT で採用されている Isolation API は JSR 121 のサブセットなのですが、独自の機能もあります。独自なのはハイバネーションとマイグレーション。ハイバネーションはスレッドの一時停止と再開、マイグレーションはスレッドを他の SPOT に移送することです。

せっかくなので、この 2 つの機能を使ったデモも作ろうと思ったのですが、かなり手こずってしまいました。結局、デモは完成せず。しかも Isolation で作成したアプリは暴走して SPOT が反応しない orz

そんなこんなで資料を作り始めたのは昨日の基礎セミナの後。飛行機に乗らなければいけない時間になっても完成せず。

今回は絵をすべてタブレットを使って、Flash のブラシで描いていたのです。完成しなかったので、タブレットを持っていこうと思ったらスーツケースに入らず。

私のタブレットは intuos の A4 サイズなのですが、タブレット領域のまわりの枠がかなりあります。そのために A3 ぐらいの大きさになってしまうのです。かといって、大きいスーツケースは持っていきたくないので、泣く泣くあきらめました。

こうだと分かっていれば、会社にある FAVO を持ってきておけばよかったんですが...

タブレットがないので、資料の後半の絵はノート PC のパッドで描いたのですが、これは大変でしたよ。

 

さて、プレゼンです。今回は大失敗でした。聞いていたみなさん、ほんとにスイマセン。

何が失敗かというとターゲットです。私はみな Java が書けて、しかも少しは SPOT にも触ったことがあるという想定で資料を作ったのです。しかし、実際には Java をまるで触ったこともないという人がかなりいたのでした。

前提が崩されてしまったので、もう全然ダメ。説明していても、これを説明しても分からないだろうなぁというところばかり。そのせいで、説明をはしょってしまい、結果的に 1 時間の枠にもかかわらず 40 分で終わってしまいました。

ちゃんとターゲットは事前に聞いておかないとダメですね。

まぁ、それでも Isolation というものがあるんだよ、というメッセージが届けば十分と考えることにしましょう。もし、Isolation API を使って分からないことがあれば、メールしてくださいね > PBL に参加している学生さんたち

ラベル: ,

2008/10/02

今日の CCC

JJUG Cross Community Conference

10/16 に CCC を行うことになりました。

前回はダイビルでしたが、今回は代々木のオリンピック記念青少年総合センタです。青少年総合センタというと、オブジェクト倶楽部のイメージが強いかもしれませんが ^ ^;;;

今回の目玉は、ズバリ、川口耕介さんです。

川口さんはアメリカの Sun で働いているのですが、このイベントのために急遽来日してくれることになったのです。

川口さんといえば JAXB 2.0 のスペックリードであり、JAX-WS の開発者でもあり、JAXB と JAX-WS を統合した Project Metro の開発者でもあり、GlassFish の開発者でもあり、しかも統合インテグレーションツールである Hudson の作者でもあるという多彩な活動をなされている方です。

しかも、未踏ではスーパークリエイター、そして Rock Stars にも選ばれている、まさにスーパープログラマーです。ついでにいうと、.NET の勉強のために こんなもの まで作ってしまう方です。櫻庭には、勉強がてらこんなの作るのなんて信じられないのですが...

今回、CCC では Hudson を中心に話をしていただけることになっています。これは要チェックですよ。

 

登録は以下の URL からお願いします。

http://www.java-users.jp/contents/events/ccc2008fall/index.html

ラベル: ,

今日の基礎セミナ Struts

松野 洋希さん, JJUG 基礎セミナ Struts, 2008.10.02

JJUG のアンケートでどういうトピックのセミナがあるといいかを聞いているのですが、だんぜん多いのが Struts なのです。なので、今回はそのようなリクエストにお答えして Struts です。

ところが、ところが、登録者数が少ない。前回の JSP に比べても半分ぐらい。なんで? 理由が全然分かりません。期初や期末はダメなのかなぁ。

それでも、約 80 人に参加いただきました。ありがとうございます。

今回の講師は NRI の松野さん。私は受付で全然聞けなかったのですが、ずっと聞いていた野上さんによるとかなりいい内容だったらしいです。松野さんは前回のはっし~~の轍は踏まないと誓ったらしいのですが、どうやらそれがよかったようです。いや、はっし~~の時の内容が悪いということではないんですけどね。でも、はっし~~のキャラは避けたいということなのでしょう。

基礎セミナはこれからもコンスタントに続けていきたいのですが、次は何のテーマがいいでしょうねぇ。リクエストがあれば、コメントに書いていただいてもいいし、JJUG の ML に投げていただいても OK です。今だと、リクエストがかなう確率はかなり高いと思います。

松野 洋希さん, JJUG 基礎セミナ Struts, 2008.10.02 松野 洋希さん, JJUG 基礎セミナ Struts, 2008.10.02

ラベル: ,

2008/09/25

今日のナイトセミナ GlassFish

岡崎 隆之さん, GlassFish Night Seminar, JJUG + GlassFish ユーザ・グループ・ジャパン, 2008.09.25

今日は Glassfish ユーザ・グループ・ジャパン (グラジェー) と JJUG の共催で GlassFish のナイトセミナ。

ちなみに GlassFish のプロジェクト名は Fish の F が大文字なのですが、グラジェーでは小文字なのだそうです。

スピーカーはグラジェーの岡崎さん。すこしだけ、同じくグラジェーの寺田さん。

GlassFish の機能などを紹介するのではなく、GlassFish を使ったアプリケーションの開発という内容です。ところが、岡崎さんのマシンがいまいちらしくデモがなかなか動かない ^ ^;;

唯一デモできたのは、1 月のクロスコミュニティでデモをした Wii のリモコンを使った Commet のデモだったのでした ^ ^;;

GlassFish Night Seminar, JJUG + GlassFish ユーザ・グループ・ジャパン, 2008.09.25 GlassFish Night Seminar, JJUG + GlassFish ユーザ・グループ・ジャパン, 2008.09.25

ラベル: ,

2008/08/28

今日のクロスコミュニティ JRuby と Jython

JJUG Cross Community "JRuby と Jython", 2008.08.28

このところ、午後になると雷雨という日が続いていますが、今日も雨。そのせいもあるのでしょうけど、歩留まりが悪い。JRuby も Jython もおもしろかったのに。

お二人ともデモを中心にしたセッション。そのうち、デモで使用したソースコードも含めて公開する予定ですので、しばしお待ちください。

とはいうものの、櫻庭は受付にずっといたので写真を撮っている時以外はあまり聞けなかったんです。まぁ、主催者なのでしかたないんですけどね。

追記: 資料の公開しました。JJUG のクロスコミュニティのページからどうぞ

西尾 泰和さん, JJUG Cross Community "JRuby と Jython", 2008.08.28 高井 直人さん, JJUG Cross Community "JRuby と Jython", 2008.08.28
ひが やすをさん, JJUG Cross Community "JRuby と Jython", 2008.08.28 岡崎さんと寺田さん, JJUG Cross Community "JRuby と Jython", 2008.08.28

ラベル: ,

2008/07/16

今日のプレゼンテーション

今日は Java Hot Topics Seminar。鈴木さんの JBI/OpenESB と、さぼてんくんHudson です。

OpenESB はあまり興味がないので (すいません、鈴木さん)、目当ては Hudson。さぼてんくんはヴァーチャルでは java-ja 関連でつながりがあるのですが、リアルに会うのははじめて。

でも、2 人ともプレゼンに慣れていないせいか、構成がイマイチだと思ったわけです。

どうすればいいかをちょっと考えてみました。

いちおういっておきますが、彼らを責めているわけではなくて、あくまでもプレゼンの技術論として書きます。

プレゼンって技術なんです。だから、技術を極めれば上手なプレゼンが誰でも絶対できるはずです。

プレゼンの技術には、プレゼンをするときの姿勢や動作などから、プレゼンの構成、資料の作りかたなど多岐に渡りますが、今日は特に構成について書きます。

何か新しいことを知るときには、抽象的なところからだんだんと具体的(具象的)なことを説明することが理解を早めると思いませんか。マクロ的な視点からミクロな視点といってもいいかもしれません。

ここでいう抽象的とか具体的といっているのは次のような項目にあたります。

抽象
  • 一言でいうとそれが何なのか
  • 背景、経緯
  • ユーザに対するメリット
  • 既存に対する差別化要因
  • 同様なものに対する位置づけ
    et al.
中間
  • 全体の構成
  • 動作原理
  • アーキテクチャ
    et al.
具象
  • 使い方
  • 書き方
  • コード例
  • 応用例

もちろん、これだけではないのですが、だいたいどういうことなのかは分かっていただけるはずです。

プレゼンテーションではこの抽象から具象のバランスが非常に重要だということです。

特に抽象的な話題は重要です。ここが理解できるかどうかで理解度がずいぶん違うはず。

とはいっても、単に抽象と中間と具象で時間を 3 分割すればいいというわけではありません。ターゲットによって配分を変える必要があります。

たとえば...

  • 技術の導入を決めるだけで、実際にコードを書くわけではない人に対しては、抽象的な話題を多くし、残りは中間的な話題、具象はほとんどいらない。
  • 実際にコードを書く開発者であっても、そのものをほとんど知らない人であれば、中間的な話題を多くし、抽象と具象は少なめ。
  • だいたいどういうものかは分かっている人であれば、具象をほとんどにする。

ターゲットがマネージャー層なのか、開発者層なのかは、セミナーなりイベントなりの趣旨でだいたい分かります。難しいのはそのものを知っている人が多いのか、少ないのかということです。

これはその場にいかないと分からないことが多々。

しかたないので、資料は抽象を少し、中間の話題と具象の話題を半々にしておいて、実際に説明する時間を調整するようにします。

プレゼンの構成

実をいうと、活字媒体とプレゼンテーションではこのバランスは大きく変ります。ぶっちゃけ、活字媒体では具象的な話題が多いはずです。

抽象から具象まで十分に説明すると、実際には具象的な話題が一番多くなります。

活字媒体ではある程度分量があるので、より多く具象を説明できるのです。

その一方、プレゼンテーションでは時間が限られているので、なかなか具象の細かいところまで説明する時間がないはずです。しかも、プレゼンテーションでは、たとえばサンプルコードを提示されたとしても、読みにくかったりして、なかなか細かいところまで理解するのは難しいのです。

ところが、ところが、話す側からすると具象が一番準備がしやすいのです。普段、使っているときはあまり抽象的なことを考えないですからね。そして、ここに一種のミスマッチが発生してしまうわけです。

ターゲットに適合しない抽象から具象のバランスだと、結局分かってもらえません。

具象ばかりで中間や具象がないと、なんとなく分かったけど、結局なんだか分からないという結果になります。

逆に具象ばかりだと、全然分からないとなりがち。

今回のセミナでは 2 人とも抽象と具象しかなくて、中間的なところがほとんどありませんでした。抽象からいきなり具象に入ってしまうと、途中からついて来られなくなってしまいがち。

一般的に、抽象なればなるほど、図の重要性は上がります。抽象的な話題であれば、なるべく図を多くしたほうが、理解を早めます。また抽象的な時には、メタファを使うことも有効ですね。

難しいのはデモの位置づけです。デモというと、具象のような感じがしますが、そんなことはありません。抽象的なデモも可能だし、具象的なデモも可能です。

ターゲットに対して有効なデモが何なのかを考えるのはとても重要です。

少なくとも、デモで何を提示したいのかをはっきりさせなくてはダメです。

 

たとえば、今回のセミナで考えてみましょう。このセミナのターゲットは開発者。でも、ESB や JBI、そして Hudson に関して知っている人はほとんどいません。

だとすると具象は少なめにし、抽象的な話題をやや多めにするのがいいと思います。

たとえば、OpenESB で考えてみます。いちおう、いっておきますけど鈴木さんを非難しているのではなくて、私だったらこうするという例です。

重要なのは ESB という概念を理解できるかどうかだと思います。

そのために、今までの背景として、今までの直接メソッドコール、インタフェースを会したメソッドコール、JMS などのメッセージングと依存度が減少していく流れを説明します。

とはいうものの、メッセージングにはいろいろと欠点があるはずです。だからこそ、ESB が出てきたわけですから。

ここで、メッセージングの欠点がどのように ESB で克服されているのかの説明は欠かせません。これは ESB にすることでどのようなメリットがあるかを十分に説明できませんから。

問題の共有をスピーカと参加者で、できるかどうかということはとても重要です。「そうなんだよね、ここが問題なんだよね」と共感してくれれば、後はスピーカの思うつぼというか、とてもやりやすくなるはずです。

でも、その問題だけ提示して、それに対する解決がなされていなければ、「結局、その問題はどうなったの?」と聞いている人を惑わしてしまうだけです。

ここは十分に時間をとって丁寧に説明するべきです。

そして、ESB を実現するものとして JBI/OpenESB を紹介します。ここからが中間的な話題ですね。

重要なのは OpenESB でどのように ESB を構築しているのかということだと思うんです。そして、他の ESB、たとえば SCA との差別化要因などを説明します。

ここまでちゃんと説明できれば、あまり具象的な話題はいらないと思います。

デモをするとしたら、すでにサービスがいくつか存在していて、それを ESB で結びつけるデモを櫻庭だったらやると思います。サービスから作ると、どうしてもサービスの粒度が低くなってしまい、ESB の概念からすると外れたものになってしまうような気がします。また、サービスを作る手順がどうしても煩雑になってしまい、見せたいところが十分に示せなくなってしまうと思うのです。

プレゼンテーションの構成以外にもいろいろと考えなくてはいけないことはありますが、長くなったので、その他はまた別の機会に。

ラベル: ,

2008/07/04

今日の基礎セミナ

JJUG 基礎セミナ JSP, NRI 木場

JavaOne 報告会以来、JJUG の活動をしていなかったわけですが、久しぶりに基礎セミナ。

今年から秋葉原の稚北サテライト校が簡単に使えなくなってしまったので、会場探しが大変だったのです。今日は野村総合研究所のセミナ室をお借りすることができました。ありがとうございます。

ここは横に長い部屋なのですが、なんとプロジェクタが 6 面もあるのです。すごいですねぇ。前後の距離は短いので、後ろの席でも見やすいです。

さて、今日のお題は JavaServer Pages、いわゆる JSP です。講師ははっし~~と、片山智佐子さん。片山さんは福岡から直行してくれました。

はっし~~も喋るのは久しぶりということもあって、はじめはちょっと緊張気味。でも、だんだんと調子に乗ってきたようです。片山さんも喋るのかと思ったら、PC の操作だけ。一緒に喋ればよかったのに。

アンケートで、他にやってもらいたいテーマをあげていただいたのですが、思いのほか Struts が多い。いろいろと批判はされてはいるものの、やっぱり Struts 使われているのでしょうね。

JJUG 基礎セミナ JSP, NRI 木場 JJUG 基礎セミナ JSP, NRI 木場
JJUG 基礎セミナ JSP, NRI 木場 JJUG 基礎セミナ JSP, NRI 木場
JJUG 基礎セミナ JSP, NRI 木場 JJUG 基礎セミナ JSP, NRI 木場
JJUG 基礎セミナ JSP, NRI 木場 JJUG 基礎セミナ JSP, NRI 木場

ラベル: ,

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

ラベル: , ,

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 に紹介することができたので、それだけでよしとしよう。

ついでに大渕さんの