FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

JavaOne 2015 サンフランシスコに参加しました!(1日目)

Hello World! コンテンツ・メディア第1事業部の、jyukutyoこと阪田です。

JavaOneとは

みなさんはJavaOneというイベント、カンファレンスをご存知でしょうか? JavaOneは、オラクル社(以前はサン・マイクロシステムズ)が1996年から毎年開催している、Javaに関する最大級のカンファレンスです。サンフランシスコで5日間、400以上のセッションがあります。朝から晩までJavaに浸っていられる、夢のような内容となっています。

私は今回海外出張としてJavaOneに”初”参加しました。このブログでその様子をレポートします。 まずこのエントリでは、サンフランシスコ国際空港に到着してから、1日目を終えるまでをレポートします。

移動について

日本からサンフランシスコは、関西国際空港からだと行きは飛行機で9時間で到着します。時差は16時間あるため、日本を夕方に出発しても、サンフランシスコに到着するとその日の午前中に逆戻りします。

9時間のフライトとはいえ、離着陸や食事の時間があるため、それほど長時間眠ることはできず、到着すると疲労と睡魔を感じます。空港からJavaOneの会場となるユニオンスクエア近辺までは、電車に1本乗るだけで行けます。

BARTと呼ばれるものです。「Powell St. Station」が直近の駅で、片道8ドルほどかかります。BARTのチケットを購入するのは少し難しいので、初めての方はサンフランシスコの高速鉄道BART(バート) [サンフランシスコ] All About などを参考に、事前に予習しておいた方がよいでしょう。ちなみに、私は予習していても少し詰まりました。

到着日はJavaOne開催日の前日でしたが、前日からRegistration(登録)できます。モスコーン・センターまたはヒルトン・サンフランシスコ・ユニオンスクエアで登録できます。私はヒルトンで登録しました。

事前にメールで送られてくるQRコードを読み取り、パスとノベルティとして定番のJavaOneリュック、Duke Tシャツなどに加えて、水筒がもらえました。

キーノートレポート!

1日目はキーノート(基調講演)とユーザグループのセッションが主にあります。この日だけ、モスコーン・センターでの開催となります。 モスコーンはまさにお祭りのよう!長い通りがすべてカンファレンス施設で埋められています。実は、JavaOneと同時開催でOracle OpenWorld(OOW)というイベントも開催されており、モスコーンはOOWの方が主に使用するため、オラクル社の赤で統一されています。

キーノートの会場は日本では考えられないくらい広く、軽く数千人は入る規模です。

キーノートでの技術的な話題としては、「Project Jigsaw」と「Project Valhalla」、「Project Panama」です。と言っても、もう数年間ずっとこれしか出ていないわけですが、とくに劇的な進捗があるようにも見えませんでした。 Project Jigsawは、Javaのモジュール化のためのものです。新たなキーワードとして”module”を導入し、モジュールの依存関係と公開するパッケージを指定できます。たとえば、CommonsのライブラリBeanUtilsだと、以下のような感じになります。

moduel commons.beanutils {
   requires commons.logging;
   exports org.apache.commons.beanutils;
   ...
}

BeanUtilsはcommons.loggingに依存していて、org.apache.commons.beanutilsパッケージを外部に公開していることになります。公開していないパッケージは、たとえpubclicなクラスが含まれていてもアクセスできないようになります。moduleはパッケージよりも上位の概念となります。こうして、JARが利用する外部パッケージと、JARが外部に公開するパッケージをそれぞれ決められるようになります。 Project ValhallaではValue Typesという新しい型が導入されます。以下のようなクラスがあるとします。

class Point {
    final int x;
    final int y;
    ...
}

その配列”Point[]”を扱うとき、各要素は参照を経由していました。この場合、データへのアクセスにオーバーヘッドがあります。データをまとめて扱うようにしてCPUのキャッシュにおけば、キャッシュミスが減りパフォーマンスが向上します。そのようなときのために新たなキーワード”value”が導入されます。

value class Point {
    final int x;
    final int y;
    ...
}

こうすることで、Value Typeとして扱われるようになります。イミュータブルに限定されることに注意してください。 もう1つ、Project Valhallaでは”Specialized Generics”があります。ご存知の通り、Javaジェネリクスではプリミティブ型は指定できず、代わりにラッパークラスを指定していました。

List<Integer> l = new ArrayList<>();

Specialized Genericsでプリミティブ型を直接指定できるようになります。

List<int> l = new ArrayList<>();

IntStreamなんていらなかったんや…そしてProject Panamaはあまり詳しい話はなかったように思います。 このあと、サン・マイクロソフト創業者のスコット・マクニーリがビデオで登場し、「Javaプログラマにとって最悪な12のこと」を読み上げ、盛り上がりは最高潮を迎えました。

ユーザグループセッションレポート!

ユーザグループのセッションでは、ウクライナのJUG(Java User Group)である「JUG.ua」の取り組みが非常に興味深かったです。 JUG.uaではAdopt a JSR(Java Specification Requests:Java仕様リクエスト)の活動として、どのJSRをサポートするかグループ内で話し合い、JSON-B仕様をサポートすることに決めました。そこから仕様のメーリングリストに入り、実装のサンドボックスGitHubに作り、公開された質問や提案をグループ内で共有しました。それからグループからの質問やコメント、提案を出していきました。結果として60以上の提案やコメントを出し、そのうち30は組み込まれたそうです。 私も関西Javaエンジニアの会(KansaiJUG)というJUGを運営し、昨年JCPメンバーとなっています。今後のAdopt a JSRへの参画に、よいヒントをもらえたと考えています。

Java Lounge @ Oracle Welcome Reception

1日目の夜はウェルカムレセプションがあり、楽しい雰囲気で終わりました。

1日目までのレポートは以上です。2日目以降のレポートもお楽しみに!