読者です 読者をやめる 読者になる 読者になる


1月23日、JavaOne 2015 報告会 in 大阪に参加してきた

日記 開発 メモ

3週間前になりますが参加したのでメモレベルですがアップしておきます。
(メモレベルなのでキーワードを拾ってもらって気になるものは各自調べていただければ。)


kanjava.connpass.com


2016年1月23日当日、朝から少し用事があったため、13時を少しまわってオラクル西日本支社に到着。

日本オラクルの伊藤敬さん

・JCPでこれまで営利団体は年間$5,000だったが、無償化する方向に
・Java One 2015は日本人スピーカーは11名に増えた!
・DevOpsの話が多かった(7セッション(2014年)→100セッション以上(2015年))
 KPIを定めて、開発を進めてから後で評価する、適切な工数を求める
 自動化出来るフェーズはどんどん自働化
 Continuous Integuration -> Testing -> Delivery
・Microservices Gilt.comの事例を紹介
  12時が処理のピークとなる
  技術はScala、JSON等新しい技術を使用
  ピークに合わせてインスタンスを増やすようにする
   →AWSに乗せる
   →まずは現存のシステムをそのまま乗せる
   →次に大きなサービスグループに分ける
・JavaEE8 について
 EDR(early draft)のレビュー中
 HTML5/WebTigerの機能拡張
 開発をより容易に / CDIのさらなる活用
 クラウドの実行環境
・JSON Binding
  →JSONデータとJavaのエンティティをバインドする
  →もとにしようしているのはJackson
  →バインダのプロバイダを選択できるようにするつもり
・JSON-P 1.1
  - Pointer:JSONの中の一部のデータを書き換える
  - Patch :パッチ当て(一部データの削除など)
・MVC 1.0
  Model(CD,Bean Validation)
  View (JSP,Facelets)
  Controller (JAX-RS controller)
・HTTP2
  Sevlet4.0より導入
  1つのTCPを多重化し、リクエストは Stream と呼ばれるデータ単位
  バイナリフレームレイヤ
  Servlet Push、ヘッダ圧縮
・JMSのメッセージ処理を簡素化
・JavaOne2016は9月開催予定

櫻庭さん

4名の有名な方のお話を順番に紹介。

Mark Reinhold

JavaSEのスペックリード
Project JIGSAW がJavaSE9に!(JavaSE6の頃から言われていた)
これまでの問題点をJIGSAWで解決する
・classpath の問題
 例えば、HadoopのJARは110個にも及ぶ。。コンパイルや実行時に1つ1つ指定する煩わしさ。
 →これを解決するのが「Module」(JARのサブクラスみたいなもの)
  Module extends JAR {
   dependency,
   exportation,
   version
  }

 コンパイル
 javac -mp mods -d ・・・

 モジュール作成
 jar --create --file ・・ --module-version 1.0 -C ・・・

 実行
 java -mp mods -m モジュール名/クラス名

・Huge Standard Lib
 JavaSE8 Compact Profile
 JavaSE9 Moduleで扱われるようにある

Rovert Field

PROJECT CLLA →jshell というJavaのシェルみたいなものが使えるようになる

Michlele

HTTP Client
HTTP/2

Brian Goetz

Java8で出てきたLAMBDAのスペックリード
JavaSE10のPROJECT VALHALLA  (VALHALLAはオーディンの宮殿)
VALHALLAは、低レベルのでパフォーマンスアップ
 →今日はメモリの話
  Memory is the New Disk.

詳細は櫻庭さんのスライドへ。

じゅくちょーさん (id:jyukutyo)

GC Tuning

GCでメモリリークがなくなるわけではない
スループット、フットプリント、Latency →どれか2つしか無理(全部は無理)
ヒープサイズが大きくなってきたので、FullGCが怖い
スループットの向上には、並列化など・・・
Young領域のGCアルゴリズムはどれも似ているとのこと
コンパクション:断片化したヒープを固めて割当ができるようになる

 ・Serial Collector =シングルスレッド
 ・Throughput Collector=マルチスレッドでGC
 ・CMS Collector=マルチスレッド+old領域はアプリ実行と平行=StopTheWorldが起きない
   →時々そうならないときもある
  ・フルGCはどう起きる?
    →プロモーションの失敗。young->oldへの移動ができないとき
 ・The G1 Collector=2048個のリージョンに別れる
    The Garbage First Collector
     →Innitialize・・の設定を最初に設定しすぎると失敗する
     →始めはデフォルトにしておいたほうがいい
 ・Azul C4 Collector (商用JVM)
 ・Shenandoah (しぇなんど)
   copy gc のパフォーマンスアップ

その他に、じゅくちょーさんからプレゼンについて面白い話が聞けました。

「ポスチャ」:プレゼン中の振る舞い(姿勢や表情)のことで、ディスプレイを見たまま話したり、

ここで櫻庭さんから補足。
 GCはスループットを狙うか、反応速度を狙うかのどちらかになる。
 ・CMS:スループット型
 ・G1GC:スループットと反応速度の両方をよくするバランス型

ゴールドマン・サックスの伊藤博志さん

Eclipse Collections 最新アップデートについて、
ゴールドマン・サックスでJava?と初めは思いましたが、お話によると4万人中1万人がエンジニアで、Javaのエンジニアが約4000人ほどを占めているらしい。
JCPのExecutive Committee

GS Collections → Eclipse Collections
 Smalltalkに影響を受けたコレクションフレームワーク
 2004年から始まり、2012年にGitHubに公開 (Apache2.0 License)
・GS Collections Kata
  →同じようなことを繰り返すことで身につけることが目的

Eclipse財団へ移管
  →2015年11月:正式プロジェクトとして承認
  →2016年1月20日:成果物の承認がおり公式リリース

Eclipse Collections7.0はJDK5から互換性あり

Eclipse Collectionのいいところ
 ・より簡潔に書ける
 ・より多くのケースでメソッド参照を活用できる
 ・より高い可読性で記述できる
 ・より簡潔にExceptionの対処が記述できる。

ロードマップ
 Eclipse Collections 7.1 - 2016 Q1
  →JDK5以降で使用可能
 Eclipse Collections 8.0 - 2016 Q2/Q3
  Java8の関数IFとの互換性を確保
  Java8のOptional型を返すAPI(detect,max,min …)
  独自のStream実装によるstream()のパフォーマンス改善
  Defaultメソッド活用によるコード量削減
  上記変更によりJava8以前の互換性は撤廃 →JDK8以降しか使えなくなる

細かいことは下記リンクのスライドを参照。
http://kanjava.connpass.com/event/24474/presentation/

おまけ

じゃんけん大会に勝って、商品ゲットしました(*´ω`*)