JavaOne Tokyoに参加してきました

Ruby大好きな私は全てをRubyだけで片付けたいのです。しかし、仕事となるとお客様の様々なご要望に答えていかなくてはなりません。エンタープライズ向けのツールやパッケージを考えるとJavaの世界は非常に魅力的です。
今回JavaOneに参加した目的はそうしたJavaを取り巻くエコシステムを肌で感じる事、それからJRubyとアプリケーションのデプロイ環境の調査でした。収穫はまずまずという感じでしたが、2日間岡山から参加した他のメンバーや全国のJavaコミュニティの方と楽しくすごすことができました。
以下、参加レポートです

1日目

NIO.2を使って、簡単ファイル操作 櫻庭 祐一 氏

Javaでファイルコピーを行おうとすると入力用と出力用2本のFileStreamを開く必要があったが、New I/O 2を使用することで簡単にファイル操作を行うことができるという内容。正直、今までこんな基本的なファイル操作もできなかったの?と思った。Javaは良くも悪くも後方互換を重視している言語ということか。

PlayFrameworkでつくるWebSocketアプリケーション 原 一浩 氏

WebSocketを使用することでクライアント間の通信を高速に行うことができることをリバーシのサンプルでデモ。PlayFrameworkの1.x系は安定版、2.0系は実験版という位置づけ。ゲーム以外でどんな利用分野があるか考えされられた。

JVM言語BoF

JRuby,Groovy,Scalaのユーザー会、ユーザーグループが決められたお題に従ってプログラムを作りベンチマークで競いあうという面白い企画。JRubyは「Rubyのコードが100%動作する」のを目的としている点で他の2つと異なる。個人的に言語としてのJavaは時代遅れで好きではないけど、jvm上で色々な言語が動作するのはオモシロイと思った。より深くJRubyを知りたくなった。

2日目

Java SE 7 InvokeDynamic in JRuby 中村 浩士 氏

一生懸命話を聞いてたらあっという間に1時間たっていた。2日間で最も刺激を受けたセッションだったと思う。
JavaSE7から動的言語に最適化するために一度呼び出された命令をキャッシュしてくれるような仕組みとしてInvokeDynamicという機能が追加された。JRuby1.7系でどのような最適化がされているかを細かく説明してくれた。
実はフィボナッチ数の算法のベンチマークで好成績を残すためだけにマイナス1する命令が仕込まれてたりしたのが面白かった。
性能評価でJRuby1.7はCRubyの約3倍のパフォーマンスを発揮しており、処理の内容によっては業務でJRubyを使用することも考えようと思った。

マルチコアCPU時代のJavaプログラミング 数村 憲治 氏

先の説明でJRubyでプリエンプティブなマルチタスクを実現できれば!と夢が広がっていたのだが、このセッションの内容で考えさせられる内容だった。
StringBufferはスレッドセーフに作られているが、スレッドを使用していないのであればStringBuilderを使うべきという話があった。このようにスレッドを意識して作られている命令かどうかでマルチコアの性能を生かせるかどうかが決まる。JRubyで単純にスレッドを作れば高速なマルチタスクになるわけではなく、JRubyで呼び出すその先の処理でjvmがどの命令を使っているかを意識する必要を感じた。

JSR 353: Java API for JSON Processing 山本 裕介 氏

JavaJSONライブラリ制定にむけてどのようなことを意識しているかという話。JSONRubyやJavaScirptでしょっちゅう使うが、色々細かい点で決まりごとがあることが分かった。
山本氏はJSONライブラリをなるべくカジュアルに使用したいためVisitorパターンは実装したくないらしい。XMLの偉い人をどう説き伏せるか思案中とのこと。

SunSPOT,Ardruinoを使ったガイガーカウンターデバイスの作成について 太田昌文 氏・河野悦昌 氏・佐々木陽 氏

ヒドラスタイルのアノ人の発表。
正直Javaと殆ど関係ない内容なんだけど、火花を散らしながら写ルンですからガイガーカウンターデバイスを創り上げるMADな姿に開場は大盛り上がりだった。会場の雰囲気はtogetterにまとめられています。

Learn how the JVM is fundamental to our architecture. ロブ・ベンソン 氏

Twitterの内部の仕組みについて詳しく説明してくれた。
フォロアーが多い場合は4000人毎に配信されたり、タイムラインキャッシュがどのように実現されているかが分かりやすかった。

まとめ

Javaを取り巻くコミュニティは「Java言語」だけでなくjvm上で動作する言語全てに存在することが良く分かりました。私もJRubyをもう少し深く掘り下げjvmについて理解を深めようと思いました。