ページ

2015年11月29日

JJUG CCC 2015 Fallに参加してきました

Javaのコミュニティカンファレンスに参加してきたのでメモを投稿。ちゃんとまとめるつもりはあまりないけど、あとで公開されたスライドへのリンクも追加する。

JJUG CCC 2015 Fall
http://www.java-users.jp/?page_id=2056

keynote-1 基調講演1 : Javaは守りに入らない、これが今のJavaだ

by 谷本 心(日本Javaユーザーグループ)
10:00-11:00
#ccc_keynote1

Kids are Future.
Javaを子供向けに教える。教育に利用する。

そろそろ他の言語に行こうと思っていたが、やっぱりJavaから離れられなかった。
Spring Boot

keynote-2 基調講演2:Java EE 8 – Work in Progress

by David Delabassee(Oracle Corporation)
11:00-12:00
#ccc_keynote2

進捗がいいもの
WEB層の拡張 (HTML5 Support/ Web Tier Enhancements)
JSON Binding (JSONB)
JSON Processing (JSON-P) enhancements
Server-sent events (SSE)
Action-based MVC
HTTP/2 support

Survey: https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee

JSON-P 1.1
JsonPointer…JSONの要素へのポインタオブジェクト
immutableになってる

SSE
JAX-RSを活用していく
ストリームを使う例
@Produces("text/event-stream")

MVC
Java EE 8ではAction-based MVCを提供する (Struts2やSpringのようなアプリケーションでコントローラを実装するMVC)
今まで通りJSFのようなComponent-based MVCも提供し続ける
Model層、View層は既存の資産を利用すれば良いが、Controller層については議論された。結局JAX-RSを使うことになり、それがいい方法であった。

Controller用の新しいアノテーション
@Controller…メソッドに付与してコントローラであることをフレームワークに知らせる

HTTP/2サポート
Servlet 4.0による
ほとんどの開発者にとっては今まで通りの使い方でHTTP/2対応ができる

感想
早くJava EE 8出てほしい。

AB-1 「jOOQ と Flyway で立ち向かう、自社サービスの保守運用」

by 池田 裕介(株式会社サイバーエージェント)
13:00-13:50
#ccc_ab1

DBスキーマのバージョン管理
チーム開発実践入門にも書かれてる

Flyway…DBマイグレーションツール
mavenやgradleでビルドできるようにするといい

ファイル名のバージョンは連番ではなくタイムスタンプにすると良い
マージしたときに衝突しない
outOfOrderオプションを使うことで過去のバージョンも適用できる

JOOQ
すでに存在するDBを重視
ドキュメントやチュートリアル、サンプルコードが充実している
fetch()から結果をCSV, XML, HTML, FormatedText フォーマットで出力が可能

感想
JOOQ便利そうだし可読性もすごくいいけど、JPAにあるようなentity cacheやprepared statement cacheの機能があるのかどうか。
またJPAでも、Criteria APIの可読性が低いと思ったらJPQLを使えば良いのでは。要調査。

回答を発表者から頂けた。


EF-2 How to speed up your application using JCache[通訳有]

by gregrluck
14:00-14:50
#ccc_ef2

データを2回以上参照するなら、キャッシュを使う
データベースアクセスだけでなく、データの生成など

アムダールの法則 (amdahl's law)

Cache効率(キャッシュのヒット率)

何をキャッシュにつめるか
参照データ(郵便番号など)
長期間存在するデータ
よく使われるデータ
よく変化するデータについては考慮する

メソッド
get, put, putAndGet

JSR107 annotations

感想
JCacheのセッションすごく面白かった。キャッシュのイントロダクションが長かったかも。通訳しながらなので仕方ないけど、JCacheの設計方針や実装についてもっと詳しく話を聞きたかった。

GH-3 マイクロサービスアーキテクチャ – アーキテクチャ設計の歴史を背景に

by 鈴木 雄介
15:00-15:50
#ccc_gh3

時代の変化
メインフレーム→クラサバ→ウェブ

クラウドの時代(過渡期)
サーバーの処理能力が超巨大化
巨大なサービスをどのように変化させていくか

カナリアリリース(ブルー・グリーンデプロイ)
新バージョンをリリースして稼働させたサーバー群に、全体のアクセスのうち少量だけ流すことで、システム全体を停止することなくリリース時の不具合を検知することが出来る

ダークカナリアリリース (test-in-prod)
LBから新バージョンにアクセスできるのは開発者のみ
モチベーション:ステージングではなく本番でテストしたい
→連携するシステムとの整合性が取れているかは本番環境でなければわからない

Chaos Monkey
Netflixの事例

巨大なサービスをいかに管理するか
→マイクロサービスアーキテクチャ (MSA) に分割

広義には、粒度ではなく関係性に注目を
重要なのはサービス相互の関係性のあり方
- 複雑なものを、いかに管理するのか

巨大なサービスはトップダウンに管理できない
技術面:分散配置と統合
組織面:持続性と分権
ボトムアップでもうまくいかない
あるルールのもとで多様性を保証する
→プラットフォームを利用する

サービスの分割
モジュール分割の基本は「時間軸の中で変化するスピードの違いの境目」で切る

プラットフォームとは
巨大なサービスを管理するための基盤

GH-4 GS CollectionsからEclipse Collectionsへ - 機能豊富なオープンソースJavaコレクションフレームワーク

by 伊藤 博志(ゴールドマン・サックス)
16:00-16:50
#ccc_gh4

スライド:http://www.goldmansachs.com/gs-collections/documents/2015-11-28_JJUG_CCC.pdf

JavaOne 2014で発表して以降、人気急上昇中

開発者としてはかなり自信があり、Java標準のコレクションに採用されても遜色がないと考えている

ファクトリーメソッドが用意されてる mutable/immutable
より簡潔に書ける
より多くのケースでメソッド参照を活用できる
より高い可読性で記述できる
再利用が可能
メモリ効率が良い

SortedBag
キーに対して、キーのaddされた回数を保持する

shuffleThis
リストの要素の順番をランダムに入れ替える

zip
リストとリストを組み合わせてペアのリストにする

chunk
コレクションの分割処理

集合演算
intersect, union, difference, symmetricDifference (XOR)

CharAdapter
文字列のコレクションから、数字のみ抽出して別の文字列コレクション

GS Collections Kata
https://github.com/goldmansachs/gs-collections-kata
ユニットテストをひとつずつパスしていくTDD型トレーニングマテリアル

感想
GuavaやApache Commonsのコレクションで良くない?って思ってたけど、Eclipse Collection使おうと思えた。すごい。

EF-5 これからのコンピューティングの変化とJava

by きしだなおき
17:00-17:50
#ccc_ef5

処理を早くするには
並列度を上げる
より近いところにデータを置く(キャッシュ)

データ・セントリック・システム
データの近くで処理(Hadoop等)

ノイマン型アーキテクチャ
CPU…OSが実行できる
GPU

非ノイマン型アーキテクチャ
ノイマン型じゃない
FPGA, ニューラルネット型コンピュータ、量子コンピュータ
2,3つ目は今のところプログラム可能ではない

FPGA
命令をメモリから読み込む必要がない
データを流すだけで回路が処理をしてくれる

JavaでCPU
Streamで並列処理

JavaでGPU
Aparapi…JavaコードをOpenCLに変換・楽だがGPUの性能を出しにくい
OpenCL…JOCLとかある・ちょっと面倒だけどGPUの性能を出せる
Project Sumatra…Stream処理を自動的にGPUで行う(今年5月で開発終了)

ディープラーニングで処理が速くなる

JavaでFPGA
Synthesijer…FPGA用のコードを自動生成してくれる

今のままのJavaで足りるのか
オブジェクトのメモリ効率が悪い
さまざまなアーキテクチャに対応した値が扱えない
- 256bit整数型、floatx4型(SIMD命令用)
高機能データ構造がメモリにやさしくない
- Genericsが基本型を扱えない
配列がハードウェアにやさしくない

ハードウェアに近付く (Close to the Metal)
sun.misc.Unsafe
並列化プリミティブとかシリアライズとかメモリ管理とかJVMとのやりとりができる
Cassandra, Ehcache, HBase, Hadoop, Hibernate, JRuby, Netty等の製品が使ってる
Java9でメンテナンス停止(仕様凍結)
Java $N-1で完全置き換え、Deprecate
Java $Nで廃止
Unsafeの代替は仕様策定中

Project Valhalla
ユーザー定義基本型
ValueType…nullを持たず、参照ではなくデータを格納する
ハードウェアに近いコードが書けるようになっていく

コンピュータは変わる
Javaも変わる
あなたは?

ふと思ったこと

Related Posts Plugin for WordPress, Blogger...