Keynote2 - Java EE 8 Work in Progress -
Java EE 8 のテーマ
- HTML5のサポート
- 開発容易性
- クラウド対応
けっこう開発が進んでるものもあるし、イマイチなのもある
特にWeb層の拡張はけっこう進捗進んでる
Java EE8でHTML5サポートするのは自然な流れ
追加フィーチャー
JSON-B 1.0
Java ObjectをJSONに変換するAPI
JacksonとかGsonあるから再発明するわけじゃない。
ベストプラクティスの開発。
Gsonとかの上に乗っかって動くもの。好きな物使えばいい。
デフォルトマッピングを提供する。
JSON−P 1.1
Java EE7から入ってるやつのアップデート
JSON-Pointer IETF RFC6901
JsonCollectors
JsonArray
Server sent Events
JAX-RSのAPIで実装した
リファレンス実装のJerseyがすでにSSEをサポートしてたから
MVC
コンポーネントベースのMVC
JCache
グレッグ
HazelCastのCEO
キャッシング入門
キャッシュとは、キャッシュを使ってない人は使うべき、使ってる人はもっと使うべきもの。
キャッシュの利点
- パフォーマンス
- オフロード
- スケーラブルではないアーキテクチャでも重要
- メインフレームとか
- スケールアウト
ブラックフライデーみたいな一時的な負荷に備えて一時的にキャッシュ用のノードを追加する
クラウドでデータグリッドを実現
JCacheはこれらを迅速に可能にする技術
いつキャッシュを使うのか
- アプリケーションが同じデータに二回以上アクセスするなら使う価値がある
- データベースにフェッチするよりかは遙かに早い
どんなところに使うか
- Webアプリケーション
- ネットワークにまたがるRESTfulなシステム
- ゲーム会社とかみたいなところに有効
- オブジェクトはグラフ構造になっているので、100TBとかになっても有効
- データの永続化
データベースキャッシング
複数アプリ→一つのDBな例
従来ならこれをスケールすることは難しい
NoSQLとかを採用しなくても、キャッシングだけでも相当な効果がある
キャッシュはRAMに構築
典型的な例では、JVMのヒープ領域を使う
→GC対象
フレームワークには色んなものがある
Amdahl
キャッシングについて
問題点
スタンドアロンキャッシュをやめて、分散キャッシュにする
Immutableなデータなら移行は安全
JCache
完成した
12年かかってできた
コンセプト
Map vs Cache API
どちらもキーバーリュー
ChacheManager=データベースみたいなもん
Cache=テーブルみたいなもん
Spring
SpringはアノテーションでJCacheを色々使えるようになってる
Hazelcast JCache Support
- フル実装
Reactive Web Application - そしてSpring5へ
アムダールの法則
ブロッキングIOは悪
今でもとりあえずブロッキングコード書いてても動いてるしいいじゃん
たしかに今は問題ない
IoTとかMSAでコール数は増えるはず
ブロッキングコード使ってると金がかかる
ノンブロッキング
リアクティブプログラミングはGUIの世界で使われてる
タイムマシン採用 明日のエンタープライズJavaの世界を予想する
タイムマシン経営
最近はそんな時間差もなくなってきた
日本のIT業界も似たような状態ではないか
- イノベーションスピードの優先 (Web企業)
- リスクの最小化を優先 (SI系企業)
この二つに技術の時間差があるんじゃないか、という話
全く異なる技術が使われてるわけじゃない。
Web系は試行錯誤してうまくいったのをドンドン進化させる
↓
タイムマシン採用
必ずしも全部がSIに入るって分けではない
採用確実な技術
- HTML5
- MSA
- Java EE7 / Java SE8
- Docker
- Chef
エンタープライズ
これからエンタープライズの分野でも分割による再利用をちゃんとやらないと行けなくなってくる
ブラウザ・クライアント環境が増えてきた
これらの変化のスピードが速いため
きしださんの話
CPUをパワーアップさせようという発想する人は今はいない
CPUの性能が頭打ちだから
データ船トリックシステム
Hadoopのコンセプト
処理を行うのはCPUだけじゃなくなる。
じゃあどこ?→GPU
ノイマン型アーキテクチャ
メモリから命令を呼び出して、命令に従って回路で処理を行う
- CPU
- 色んな機能がある
- OSが動くかどうかが基準
- GPU
- ちょうたくさんコアがある
非ノイマン型アーキテクチャ
ノイマン型じゃないやつ
- FPGA
- ニューラル型コンピュータ
- 量子コンピュータ
JavaでGPU
ディープラーニング実装してみた
Javaで色々できるか?→足りてない
Close to Metal
→ハードウェアに近づこうと言うアプローチ
Unsafe
けっこう使われてるけど近いうちに廃止される
Specialization
Arrayがやりたい
G1GCの話
G1GC=たこ焼き器
GCログはしっかり取る!
まずはSuvivorに移動
いっぱいになったり古かったらOldに移動
そして回収
G1はけっこうガンガン回る
元々G1はヒープがでかいものに対してできたものなので、ヒープがでかいやつに使え!
ムリせずCMS GC使え
OutOfMemoryErrorが発生したらどうしたらいい?
起動し続けるのは進めない。停止するべき。
OutOfMemoryErrorが発生した場合にHeapDumpを吐き出すオプションを付けとくといい
HeapStats入れるといいよ!
カードって何?
CT=CardTable
懇親会
LTやりました。
GCPUG Shonanのイベントを宣伝しました。
前日なので当然申込はありませんでしたw
でも、LT終わった後二人ほど話しかけて頂けてすごく嬉しかったです。
次回のGCPUG Shonanには参加してください!お願いします!