Java One Tokyo 2012 (#JavaOneJP) に参加しました
2012年4月4,5日に開催されたJava One Tokyoに参加させて頂いてきました。タイトルは "Moving Java Forward" ということで、Javaはどのように前進しているのでしょうか?
感想
このエントリは最後グダグダになるので、いきなり冒頭から総括します(^^; メインの内容は去年のJavaOne(サンフランシスコ)の報告会として開催されたJJUG CCC 2011 fallで得られた情報とかなりかぶっていました。本場に行けば半年前に情報が得られたわけですね。しかし、Oracle本社からキーパーソンが来日していることはやはり重要なことです。質問の機会もありますし、彼らの熱意を感じることができました。参加者も全国からJava好きの人が集まっているというのが大きいです。さすが祭典です!
その他、一般公募セッションやハンズオンなども開催されているので、5000円ほどの参加費用を払っても参加する価値は十分だったと思います。
だって7年ぶりですし!次は7年後でないことを願います……。
僕が参加したセッション
1日目(4/4)
- Strategy Keynote
- 途中から参加したらサテライトに回されました...
- 長期運用を実現するNECのEnterprise Java
- これが噂に聞くえすあいあーというものかー
- Java EE Web Container in the Cloud -What's New in Servlet 3.1
- Servlet 3.1 から NodeJSみたいなイベントハンドリングなプログラミングが出来るみたいです。
- The Heads and Tails of Project Coin
- 後述
- Pragmatic Cloud and PaaS with Java EE 7 (and GlassFish)
- 難しかった
- Project Lambda: To Multicore and Beyond
- 早く使いたい!
- JAX-RS 2.0: What's in JSR 339?
- クライアントもサーバもJAX-RSでつなげる!ということくらいしかわからなかったorz
- トラブルシューターの頭の中身 〜7年間のJavaトラブルシュートサービスから
- 面白かったです。後述
- Special Session
- 面白かったです。
2日目(4/5)
- Technology Keynote
- 途中から参加したらサテ(ry...
- ビッグデータ時代におけるJava技術
- ICTとか「ひゅーまんせんとりっく」とかいうキーワードが聞こえましたが、気がついたらセッションが終わって(ry
- [一般公募セッション] Java SE 7 InvokeDynamic in JRuby
- 難しかった
- Project Jigsaw: Putting it all Together
- How to Write Low Latency Java Applications
- 後述
- UI Controls and Charts: Drag-and-Drop, Filtering, Sorting, Table Hookup with Charts
- The Future of JavaScript in the JDK
- あまり話題になっていないけど個人的にすごい興奮しました。後述
- Special Session
- しごとないしょくしていてあまりきけなかっ(ry....
心に残ったセッション
The Heads and Tails of Project Coin
前半はJava7で導入されたダイヤモンド演算子、String switch、Try with resourcesの紹介を、NetBeansによるデモを交えて紹介。大分コードが完結になって良いですね!早く使いたい!(もう使えます)
後半は、この言語仕様を導入するためにいかに苦労したかという話。自分のような初心者が横で「こうだったら便利なのに」などと簡単に言うけどいざ言語設計に落としこんでみると矛盾したりして大変なんですね。それをどのように解決したか!どこが難しかったかと、言語マニアの熱意が伝わりました。
Project Lambda: To Multicore and Beyond
これは以前から聞いていた話の通りですが早くJDK8でLambda使いたいな〜
トラブルシューターの頭の中身 〜7年間のJavaトラブルシュートサービスから
自分も年に何度か、原因不明の不具合に対処してきましたが、いきなりソースを精読したり、スレッドダンプ見に行ったり無駄なことをしている例そのものでした。
jmap, visualvmでヒープダンプも見ます!
ハイテンションの谷本さんとクールな江里口さんのペアが面白かったです。
How to Write Low Latency Java Applications
知らなかったのは、Finalizerを実装すると、GCの後に再度GCが走ってパフォーマンスを悪くするということでした。Effective Java 第2版には
ファイナライザの使用には深刻なパフォーマンスのペナルティがあります。私のマシンでは、単純なオブジェクトを生成して開放するのに要する時間は約5.6ナノ秒です。ファイナライザを実装すると、その時間は2,400ナノ秒に増加します。つまり…
と記載されていますが、理由までは書かれていませんでした。ちなみに、同書では、ファイナライザを使用する正当な理由はネイティブメソッドを委譲しているオブジェクトの開放の時と、明示的終了を呼び出した時の「安全ネット」の2種類のみとのことです。安全ネットを取るべきか、パフォーマンスを取るべきかで迷うところです。AutoCloserが導入されたJDK7ではその必要も低下しているでしょう。
The Future of JavaScript in the JDK
実は個人的に2日間で一番聞きたいセッションでした。Project Nashornとは、JDK6よりバンドルされているRhinoというJVM上のJavaScript実装を、再実装するというプロジェクトがJDK8に向けて動いているというようです。
このブログでも、ここでちょっと触れさせてもらいました http://d.hatena.ne.jp/s-ishigami/20111203/p1
発表の概要は、
- JDK6からJVM上のJavaScriptが提供され、JavaからJavaScriptが動かせるし、そのJavaScriptからJavaクラスが使え、メソッドのoverrideもできる
- InvokeDynamicの導入を受けてJVM8搭載の実装としてRhinoをリプレースしてNashornを開発中
- Nashornはオープンソース化してOpenJDKプロジェクトに取り込まれる予定(時期は不明)
- まだ非公開だけど、オープンソース化したらみんな試せる
- Node.jsをポーティングしてJVM上でNodeのアプリケーションが動くようにしたよ!
- Node on NashornではJavaのクラスも参照できる!
淡々とした発表なのに内容はすごく熱くないっすか!Java APIが使えるNode使ってみたい><;
こんなのは僕だけかもしれませんが、僕はJavaAPI大好きっ子で、ちょっとしたスクリプトを書くときは Rhinoスクリプトを jrunscript コマンドで書いています。JDKが入っているすべてのマシンでどのOSでも使い慣れたJavaAPIでスクリプトがかけて便利なんです。心配なのは、それらの資源がNashornでも使えるかってことで、終了後に時間があったので発表者のAkhil Arora氏に、たどたどしい英語で質問チャレンジしてきました。
Do scripts written for Rhino run on Nashorn perfectly?
(ここで「えっ?」というような反応をされたので)
I'm afraid my scripts for rhino don't run after JDK8.
というようなことを言ったのですが、話しながら、自分はBe動詞で話し始めたのか、一般動詞で話し始めたのか、単数形だったか複数形だったか、中学生レベルの文法で頭の中が混乱して、「a..Are,,Do,,,,Does, no Do ....(゚∀゚)アヒャ 」という感じでした。motto eikaiwa benkyo shinaito dame desune!
答えは
Yes, it "shuold" be run!
でした。望みの解答が得られても"Thank you" しか言えないのも情けないですねえ。
ひとまず、これからも安心してRhino(→Nashorn)用scriptを書いて行けそうです。
それから早くJVM上のNode書いてみたいなー。
自分が参加しなかったセッション
今回は勤務先の会社の後輩S氏と一緒に参加してきました。彼に聞いたところ、JavaFXのセッションが全般的に熱いみたいです。やはり動く技術は楽しそうですね!彼にはJavaEEハンズオンを受けてもらってきたので、今後自社に最新標準技術を業務に取り入れてくれるよう動いてくれることを期待します。