JavaOne 2017 3日目レポート
2日目の分書いてないですが、Gihyo.jpにキーノートのレポートを書かせていただいたので、ひとまずそれで。
第1回 JavaOne 2017開幕,キーノート速報~Project Jigsawついにリリース!女性コミュニティ活性化,データが創る未来:Java 9のその先へ~JavaOne Conference 2017レポート|gihyo.jp … 技術評論社
Monitoring and Troubleshooting Tools Available in Your Java 9 “bin” Folder
JDK 9に含まれるモニタリングおよびトラブルシューティング・ツールの話。
主なものは以下の5つ。
jconsole
Javaアプリの監視と管理のためのグラフィカルツール。プロダクション環境でローカルで使うのは推奨しない。
リモートで使うには「com.sun.management.jmxremote.port=ポート番号」で起動。
JMC
Javaのミッションコントロールツール。JMXコンソールとJava Flight Recorder(JFR)を含む。
JFR APIがJava 9でサポートされたので、カスタムのJFRイベントを作れる。新しいイベントもサポート(safepoint/codecache/compiler/G1/moduler)
その他、次のようなものもある。jhsdbって知らなかったのであとでチェックしよう。
- jcmd
- jdb
- jinfo
- jmap
- jstack
- jhsdb - Java HotSpot Debugger
以下のものはJDKには同梱されなくなった。
- Java VisualVM
- jhat
- jsadebugd
Immutable Collections
immutableなcollectionって、本当はこういうものが欲しいけど、今のJava9でもまだちょっと足りないよね。じゃあどうしようか、という話。
まず、Immutable collectionに求めたい要件の提案。
- Manifest immutability
- Sealed
- Provide a bridge to mutable collections
- Efficient construction, updates, and copying
Java 9だとunmodifiable collectionsが使えるけど、上の要件は満たしてない。他のフレームワークはどうだろうか。
- Guava - 1と2はOK。3は無し。4はconstructionとcopyingは一部OKだけどupdatesは無し。
- Eclipse Collections - 1と3はOK。2と4は無し。
- Vavr, Clojire, Scala - 全部OK。
Immutable collectionの実装はMapやSet、VectorのPersistent data structureにつながる。Hash Array Mapped Tries(HAMTs)がEfficient persistentのベースになる。ということで、ここから先はこのHAMTsベースのCollectionsを実際に自前で実装してみよう、という話でした。
Modules in One Lesson / Migrating to Modules
Mark ReinholdによるJigsawのセッション。2つとも満席。
MarkがJava 9のModulerの使い方について実際に目の前でデモ。emacsでその場でプログラム書いて、コマンドラインでコンパイルしたりjlinkしたりする。目の前でどんどんコード書いて動いていくのは分かりやすくていいんだけど、新しい話はほとんど無かったのは残念。突然SwingSet2を起動して見せたのはちょっと笑った。
OpenJ9: Under the Hood of the Next Open Source JVM
IBMが開発してEclipse Foundationに寄贈したJavaVM「OpenJ9」の話。
http://www.eclipse.org/openj9/
ランタイム技術はEclipse OMR(とOpenJDK)ベース。つまりJITとかGCなんかの基礎部分はOMRをベースに作られていて、その上に起動の高速化とかメモリ使用量の削減みたいな拡張を加えている感じ。
ちょっと面白そうなので、余力があったら別途まとめたい。
最初の勢いで書いてたら体力がもたないことに気づいたので、尻すぼみですみません。