White Box技術部

WEB開発のあれこれ(と何か)

【まとめ】Java SE 9/EE 8リリースイベント 兼 JavaOne 2017 報告会

Javaな仕事に戻ったのもあり、JJUGのイベントに行ってきました。

当日の発表内容や様子は、以下にまとめてくださった方がいるようです。

ちなみにこのイベントの内容は、動画で公開されています。

参加できなかった方もこちらを見ていただけると、Javaの今がわかって良いのではないでしょうか!

といったところで、あとは各発表の私のメモになります。


1. JavaOne 2017 Overview & Announcements

https://youtu.be/XT2tIh9r6Eo?t=0m4s

  • 7の時代はCoin, Lambda, Jigsawを企画していた
  • 9でようやくMilling CoinとJigsawが入った
  • 機能追加が9では91(8のときは55

今まで

  • OpenJDKはOracle JDKと技術的な差がある
  • 2年に1度のリリース目標
    • 細かい機能リリースも合わせてリリースが遅れてしまっていた
  • 長期サポートや更新リリースがあった

これから

  • OpenJDKとOracle JDKの技術的差分を2018年後半までになくす
  • 機能リリースを6ヶ月に1度に
    • バージョン表記は$YEAR.$MONTHになる(JDK 9、18.3、18.9
  • OpenJDKのバイナリは無償配布(OracleJDKは有償になる

スケジュール

  • この1年で移行期間が終わる
  • 後継バージョンのリリースまでがサポート期間になる

2. JDK9, Release Cadence & Future

https://youtu.be/XT2tIh9r6Eo?t=30m24s

資料

ローカル変数の型推論であるAmberが入ると、Javaもだいぶ省力化できるようになりそう

JShellとライブラリの話

発表者が途中で変わる(吉田真也さん @shinyafox @bitter_fox

  • REPLツールが有ると教育分野で人気(これがJShellをつくるモチベーション
  • 新しいコレクションファクトリのSet.of()とかで作ったSetはイミュータブルになる
  • StreamAPIでtakeWhileで途中中断とかできるようになった

3. Intel's Persistent Memory

https://youtu.be/XT2tIh9r6Eo?t=1h18m18s

  • 今までのメモリより容量がめっちゃ増えた(4倍
  • めっちゃ安い(2分の1
  • OracleDB 18cがこれをサポートする
    • 5倍くらい早くなる

Javaでも効果が出るように進めている

PMの使い方

  • メモリのスケールアップ(揮発するメモリ
    • Javaのヒープをのっけてつかう
      • 開発者としては楽ちん
      • ビックデータとかインメモリのアプリでこれを使うといいよ
      • 実行するときのオプションでできるようにしていきたいという話@インテル
        • 1,2年でJavaに入りそうな雰囲気
    • 一部をDRAMに、それ以外をPMに
      • ユーザが割当を指定 or プロファイリング結果をもとに自動割当とか
      • 低頻度アクセスとかサイズの大きいのとかをPMに載せるといい
      • -Xmpオプションとかで指定できるようにしたい
  • ストレージのスケールアップ

自分が定義したクラスをPMに保存するって言う処理も書ける

  • PersistentObjectを継承すると行ける
  • 実装方法はPanamaのクラス定義の仕方を参考にしている

リアルタイムに値を変更できるようになる

  • IntelがめっちゃJavaに力を入れているらしい
  • ストレージのAPIはPanama依存が多いのでPanama待ちかもしれない
  • 対応するOSS DBが出てくるのはまだ先になりそう

4. Java EE 8

https://youtu.be/XT2tIh9r6Eo?t=2h25s

現段階で話せることが今回の発表内容

  • Java EE 8
  • EE4J
  • Panel Discussions
  • Key Takeaway

Java EE 8のリリース

JavaEEの開発がGitHubに移管された!

Javaの目指すところ

Open Evolving Nimble Scalable

Java EEは?

Available Open Nimble

もっとOpenに、もっとNimbleにしていかないといけない
->だからEclipse Foundationに移管することに決めた

移管プロジェクトがEE4J(ブランド名はまだ未定

EE4J

https://projects.eclipse.org/projects/ee4j/charter

  • Open
    • プロセスを透明化する
    • 沢山の人に参加してもらって決めていくことを目的にしている
      • Oracleも1ベンダーとしてコミットしていく
  • Compatible
    • 互換性を持たせて、新しい機能を提供していきたい
    • ライセンスをEclipse側にリライセンスする
      • 資産自体はOracleが幇助する
      • 今まであったものはそのまま使えるようにする
      • 新規に作るものはEclipseの流儀に合わせて作っていく
  • Flexible
  • Nimble
    • 2018年の中旬までには移管したい

Java EEOracleはどうサポートしていくのか

  • 今までの契約は引き続きサポートしていく
  • ライセンス許諾したベンダには、2025年までにEE4Jに移行するようにしてくれとアナウンスしている
    • EE4Jの発表を待ってくれという状況

パネルディスカッションの話

MicroProfileが将来的にはJava EEにマージされようとしている

MicroProfileとはなんぞや

Q. 標準化団体どうすんの?(今はJCP

  • 今はできれば作りたくない。時間がかかってしまう懸念がある
  • JSRは?
    • やり方は真似したい(踏襲する流れになっている

MicroProfile 2.0でJava EE 8の機能が入ってくる(2018/3/31

Key takeaway

  • Java EE 8がようやくリリースされた
  • EE4Jは始まったばかり
  • みんな意見を言ってくれ(食い気味に

5. Microservices Topic & Approach

https://youtu.be/XT2tIh9r6Eo?t=2h39m

  • ホテルを早めに予約しないと辛い(10月のサンフランシスコはいろんなイベントがやっている
    • 近くて4万、車で10分15分で2万(1泊
  • 土曜日が40時間ぐらいになる(時差の影響
  • 10月は結構寒い(特に夜
    • 行き先や料金とかもアプリでその場で決定できてよかった(Uber
  • セッションの事前予約はしっかりね
  • パネルディスカッション系のセッションは辛い(英語力ぅ・・・ですかねぇ・・・

セッションの紹介

モノリスからMicroservicesへ

自社の事例を話していたセッションで共通している内容

  • まだ旅は続いている

技術よりも組織・文化についてかなり強調されている

  • コンウェイの法則
    • 組織のコミュニケーション構造がシステムに反映される
    • 逆法則もある
  • Autonomyを何より重視
    • 独立リリースを継続的に可能な状態にする
    • 破壊的な変更はちゃんと手続きを取る
      • エンドポイントの移行期間を設けるとか

今の議論の対象は、サービスという部品をどう協調動作させるかということになっている

Eventual Consistency

結果整合性、いつか一致していればいいというものであれば、マイクロサービスにあっている

Event sourcing

  • データストアをイベント記録に使う
    • データをどんどんインサートしていく(更新しない

CQRS

都合のいいデータストアにEventual Consistencyでデータを同期していくとイイね!

CQRSってなんぞ?

複数ServiceにまたがったTransaction

  • Long Running Action
    • MicroProfileの仕様
  • WildFlyが一部だが単独で利用できる

考察

  • 今、自分たちにマイクロサービスの必要性があるかを考えたほうがいい
  • ある程度は固まっていているほうがいい
  • 組織や文化とセットで考える必要がある
    • 継続的に分散されたサービスを扱っていけないのであれば、きつい
  • どこまでの複雑性や変化を受け入れられるかを考えながら分割するのがいい
    • Service間Transactionとかやりだすとつらそう

6. Fn Project

https://youtu.be/XT2tIh9r6Eo?t=3h31m55s

Functionとは? 入力を受けて何かして出力する小さいプログラム

Functionの問題点 - 各ベンダの独自実装 - Javaのサポートが甘い

理想的なFunctionのプラットフォームとは? - Open Sourceでベンダーロックインされていない - 場所を選ばず使える(クラウド - 簡単に使える - Dockerで動く - デプロイとかで既存のものが使える

Fn projectはApache 2.0 License

FDKというJava用の開発キットが用意されている

CIを利用していてもCIの結果が戻ってくるまで数分かかる Fnではここが数秒間になるようにしようとしている

Fn Flow

複数の処理をまとめられる(コンカレントAPIっぽく使える

ブログ

7. Community&総括

https://youtu.be/XT2tIh9r6Eo?t=3h43m30s

図を出すと反応が多い

JJUG CCC fallの申し込みよろしく

8. LT

懇親会は出てないのですが、見つけた資料の内容がよかったのでこちらも貼っておきます。

所感

  • Javaが生まれ変わろうとしている感じがある
  • Oracle依存が強いとライセンス費用がやばくなりそう
  • 自動生成系のライブラリはこれから辛そう
    • 実際、JOOQの自動生成処理がJava9だとエラーになって動作しない
    • JOOQはまだメンテナスされているからいいにしろ、メジャーバージョンアップデートのときになんとか対応できていた系のライブラリはそのうち使えなくなりそう
  • コンウェイの法則はありますあります
  • マイクロサービスが目的になっているところもありますあります
  • 去年ぐらいにCQRSなデータストア採用できないか考えてたけど、やっぱりまた考えないといけないかなぁ
  • Fn Projectは実際のコード見てみたらなんか期待を感じた