Java Day Tokyo 2018 に行ってきた話
Oracle Java Day Tokyo 2018
OracleのJavaイベントに参加してきました。
昨年も参加したイベントですが、コンテナを導入していくぜって雰囲気の昨年と比べると、コンテナを実践していくぜ、JVMを改良していくぜといった雰囲気の話が多かった印象です。
私は主にリリースモデルやコンテナ周りのセッションを聞いてました。
概要はこちら
本記事は私のメモ書きと感想です。
keynote
所感
リリースサイクルの話と11に向けて各パラレルで動いているProjectの話が大半だった
昨年との比較としては、昨年はコンテナに注力していくぜ!だったのがコンテナはもう当たり前に使うものだ、みたいな潮流になっていた。
コンテナやサーバーレスといったアーキテクチャの新しい選択肢について、具体的なメリットの説明が加えられるようになっていたので、これからもその流れなんだろうなと。
GCとかフライトレコーダーとかの開発・改善も徐々にオープン化したりして進めているっぽい。
率先してオープンにしていっているのは良い変化なんだろうなと。
フライトレコーダーのデモはeclipseにembedされてた感じのものだったけど、分析結果が明瞭で利用価値がありそうだった。
サーバーレスとかコンテナをサポートするよ!っていうところが強調されてた。特にjava ee。
process上にdocker浮かべてってのも紹介されていたけど、処理を分散、パラレルで実行、は良さそう。
検索部分だけでもこういう仕組み仕込むと面白いかもしれない。
[TEC-2] Container Nativeアプリケーション開発とアーキテクチャの勘所
MicroServicesにおける課題を解決するためのContainer、みたいな筋が明確で、一番参考になったかもしれない。
資料
http://otndnld.oracle.co.jp/ondemand/javaday2018/TEC-2
まとめると
- MicroServicesには課題がいっぱい
- 課題を解決する一つの手段がConainerとそのオーケストレーションツールを利用した方法。Kubernatesがその実装の一つ。
- 活かせない例
- 一つのコンテナに多くの機能を詰め込みすぎるケース
- Container自体の品質が悪いケース
- 活かせる例
- 低レイヤーの共通処理は別コンテナに切り出す
- initContainerパターン
- 様々なデザインパターン
- 活かせない例
- Oracle Cloudのツールを使うと比較的容易に実践できる。
- [Oracle COnteiner Pipelines Werker[(http://www.wercker.com/)
[TEC-3] Running Java applications on Docker: practical tips and valuable insights
dockerでjavaを動かす際のメモリやCPU周りについてのTIPSについて。
資料
http://otndnld.oracle.co.jp/ondemand/javaday2018/TEC-3
まとめ
- 3つの問題
- アプリから実際に使えるメモリが見えない
- アプリから実際に使えるCPUが見えない
- docker上だとエントロピーに基づくランダム数を出すことが出来ない
- 解決策
- デバッグとインテグレーションテスト
- 基本的にはmavenを活用すれば大丈夫そう。
- サンプル
[JSE-3] JDKの新しいリリースモデル
OpenJDKとOracle JDKのリリースモデルについて。
独特なサイクルになるので注意すべきって話と、11LTSになるといろいろ話が変わるという話。
資料
http://otndnld.oracle.co.jp/ondemand/javaday2018/JSE-3
まとめ
- 機能か、リリースか
- 大規模な更新を待つとどうしてもリリースが不定期になる
- 小規模な機能開発でもリリースしていきたい
- クラウド環境に適応しているか
- マイクロサービスを意識したモデルに変更したい
- コンテナイメージも配布を始めた。
- フィーチャーリリース
- 年6回のリリースで、3月9月に機能リリース
- SE 8 の商用機能の利用が可能に
- LTSリリース
- 3年ごとのフィーチャーリリースのバージョンに設定
- 利用可能になる商用機能
- ZGC
- Flight Recorder
- 他。
- JDKに含まれなくなるものも一部ある
- Java Plugin から移行のお願い
- 切実な雰囲気。
- JRE
- 基本的には配布するアプリケーションベンダー側でアップデートしてほしい雰囲気
- リリースに対する要望
- より速く計画的に完成した機能をリリースする
- よりシンプルかつ再配布可能なバイナリのライセンス体系
- Oracleのバイナリ配布サイクル
- これからの開発について
[JSE-5] Java SE 10、そしてJava SE 11への移行ガイド
現場目線での移行のポイント解説
資料
http://otndnld.oracle.co.jp/ondemand/javaday2018/JSE-5
まとめ
- CHECK1 Deprecated
- Deprecated;forRemovalなもの 絶対消えるので修正しないといけない
- NO MORE Applet No More Java Web Star
- CHECK2 Prohibit Access to JDK Internal APIs
- sun~,com.sun~など・・・ -
- 一応、command lineからは --add-exportしてあげると公開できるので、普通に動かせるようにはなる。
- CHECK3 Reflection
- illegal rflctive access operation has occuredと出る
- --add-opens すると一応実行できる
- CHECK4 Remove Java EE Module
- packageを複数のモジュールに紐付けられなくなるので、ちゃんとjava eeの方の本流の方に戻していかないと使えなくなってしまう
- JAXBとかJAXWS → 11では使えない
- --add-modulesで追加してあげると、一応動く。追加でモジュールを使えるようにする。
- つまり標準のモジュールパスを拡張してあげればよい
- ただし11では完全になくなる
- つまり標準のモジュールパスを拡張してあげればよい
- CHECK5 Module Defines* Dependency Disclosure scope
- jarファイルのメタ情報としてモジュールの情報を付与できる
- この辺ちょっとうろ覚え...
- CHECK6 Module path class path
- Class Pathの世界とModule Pathの世界を両立させる必要がある
- ライブラリの依存関係的に、モジュールパスだけではうまくいかない
- 一方で、class pathというのだけではうまくいかない
- 直接アクセスするか、間接的にアクセスするのか、でmodule,non moduleを分けて考える
- --add-moduleds ALL-MODULE-PATHといった呪文で解決してやる。
- Class Pathの世界とModule Pathの世界を両立させる必要がある
- CHECK7 JavaFXがない
- CHECK8 Incubator Module
- 名前が変わる場合がある。
- 例えばIncubator 配下のモジュールがリネームされることがある。
- ModuleInfo とかで注意しとかないとまずい
- 名前が変わる場合がある。
[BN-3] 50分で最新技術学習の基礎を身に付ける
爆速で技術用語を総ざらいする感じ。
資料
http://otndnld.oracle.co.jp/ondemand/javaday2018/BN-3
まとめ
- マイクロサービスについてそれっぽいことが言えるようになる。
- 大体資料の通り。お見事。
総括的な感想
ざっくり言えば、Containerを利用してマイクロサービスを実践していく流れと、それによって要請されるJavaの方向性との両方に気を配っていくべきだと感じた。
dockerやkubernatesなどサポートする環境が整ってきたこともあり、そろそろ自分でも触ってみることが大事かなと。
書籍やセッションを聞くと、わかった気にはなるし、[BN-3]セッションの内容のように、それっぽいことは言えるようにはなる。
ただその一方で、それを形にしてどう?と言えないと現場で使えるとは言えないんだろうなと。
そんな感じ!!