見習いプログラミング日記

Java EE を中心に色々なことを考えてみます。目指せ本物のプログラマ。

JavaOne2014 1日目メモ (9/28)

JavaOne2014の初日はコミュニティが主体のユーザグループフォーラム(UGF)と、キーノートがサンフランシスコのモスコーンセンタにて行われた。カメラとPCを繋ぐケーブルを家に忘れたので、写真は後日追加予定。

以下、荒い部分も数多くあるがセッション参加メモ。

Lambdas and Laughs [UGF9672]

プロジェクトラムダの振り返りに関するセッション。

ラムダ式とは?ストリームAPIとは?Optionalは?など、Java8に入った新機能についてコードを見ながら振り返り、JavaOneでの関連セッションを紹介する。ユーザグループフォーラムのセッションらしく、途中でウケ狙いのスライドがたくさん入っているが、何回もスベる。

内容については様々なJava8特集で既出のため、特記事項なし。

GlassFish Roadmap and Executive Panel [UGF9120]

GlassFishのロードマップと、今後の方針に関するパネルディスカッション。アジェンダについては、GlassFishのホームページにもまとめられている。

ユーザグループフォーラムにも関わらず、オラクルのJava EE関連のエヴァンジェリストReza Rahmanさんや、この後のストラテジキーノートでも講演するCameron Purdyさん、日本でもWebLogicの製品発表関連で見かけるMichael Lehmannさんなど、オラクルとしての方針を話そうな立場の人たちがパネラーに並ぶ。

GlassFish 製品の基本的な戦略 (アナウンス済み内容と同じ)
  • Oracle GlassFish Server(商用サポート)としては、以前アナウンスしたとおり今後収束され、最終的に2019年にExtended Supportも終了する
  • GlassFish OpenSource Editionとしては今後も継続する。ただし、商用サポートは提供しない。
GlassFish4.1の新機能
  • プラットフォームのアップデート
    • Java8対応、CDI1.2、WebSocket1.1
  • Tyrus(WebSocket実装)
    • セッションリミット、プロキシのサポート、クライアント再接続
  • Jersey
    • 新しい診断(diagnostics)APIの導入
    • ServerSentEventクライアント再接続機能
  • 品質の安定化
Java EE8の今のところの方針
  • HTML5サポート/Web層の改善
    • JSON-Binding、JSON-Processing、Server Sent Event(SSE)、Action-based MVC、HTTP2.0サポート
  • Easy Of Development & Simplification : 開発生産性向上
    • セキュリティインタセプタ、メッセージングのシンプル化、WebSocketスコープなど
  • Modernize the infrastructure : モダンインフラへの対応
    • RESTベースの管理・監視APIの導入
    • より簡易なセキュリティAPIの導入。ユーザ管理、ロール管理、認証・認可など
Java EE8ロードマップ
  • Java EE 8 JSR 366で公開されている内容と同じ
  • 2016/3にFinal releaseとなる予定

パネルディスカッション内で触れられていたが、GlassFishWebLogicと共用しているモジュールも多く、これからも開発の継続されることが改めて強調されていた。

The OpenJDK Project: Your Java. Our Java. [UGF9755]

OpenJDKの今後の方針とコントリビュート方法に関するセッション。JEP(JDK Enhancement Proposals)に挙がっているJDKの改善案の紹介が行われた。いずれもドラフト段階だが興味深い。

紹介されたキーワードを以下のまとめる。

  • Shenandoah : 新しいGCストラテジ
    • 100GBヒープのような巨大ヒープでも、10ms以下の停止を目指す
List<Integer> list = #[ 1, 2, 3 ];
  • Measurement API
    • 色々な物事の値を単なるintやdoubleのような数値ではなく、クラスとして定義して抽象化したもの
    • githubのコード例により何となくイメージできる。例えば以下は心拍数を示す。
public static void main(String[] args) {
    HeartRate rate =  HeartRateAmount.of(BigDecimal.valueOf(90), BPM);
    System.out.println(rate);
}
  • HTTP2.0 Client
  • 軽量なJSONパーサ などなど

Strategy keynote / Technical keynote

Strategy Keynote
  • キーノートの前日に子供たちにプログラミングを教えるイベントがあったらしく、キーノートは子供たちの成果発表から始まる。
  • 子供向けだけではなく、コミュニティやJCPを通じてコミュニケーションを取る姿勢をアピール
Java SE
  • Java 8 buzz
    • Java8は色々な記事にも取り上げられ、書籍もたくさん出版されて確実に広まっている。
  • OpenJDKへのコントリビュート
    • オラクル以外のコミュニティによる貢献が引き続き行われている。ダグ・リーさんによるコンカレントAPIへの継続的な貢献など。
  • Goldman sachsによるJava8の適用事例
    • 自社のコレクションフレームワークのテストコードに適用したところ、105kL→95kLとなった
    • 匿名内部クラスをラムダ式に書き直したのが主な内容
  • Java SEのロードマップ
    • JDK8u40 (2015年前半)
      • パフォーマンス改善、他言語サポートの改善、アクセシビリティの改善など
      • Java SE Advancedへの継続的な機能追加
    • JDK8u60 (2015年後半)
      • バグフィックスおよびJava SE Advancedへの継続的な機能追加
      • シンプルにいうと『未定』と感じた
    • JDK9 (2016年)
Java ME
  • 普段使ってないので聞いてもよくわからず。
Java EE
  • 基本的には先ほどのGlassFishユーザグループフォーラムの内容と同じ
  • GlassFish4.1の機能、今のところ決まっているJavaEE8の方針について

Technical Keynote

  • Javaは来年で20周年
    • 2004年のJava5、2014年のJava8の大幅な改訂を振り返る
    • Javaは2030年になっても継続的に使われることを考慮して設計を続けている
  • 言語仕様やJVMの改善を盛り込むProject Valhalla、ネイティブコード呼び出しを改善するProject Panamaについては時間切れで説明なし

今年のキーノートは過去の振り返りが中心で新しい発表はなく、OpenJDKコミュニティやJCPで流れているJava9やJavaEE8の内容はまだまだ議論の途中でオラクルによる公式な周知はまだない印象を受けました。