OpenJDK Committer's Workshop 2019 - Day 1(JVMLS Day 4)

JVM Language Summitが終わると、引き続いてOpenJDK Committer's Workshop(OCW)が開かれるので、コミッターではないけど参加してみました。
OpenJDK Committers’ Workshop

JVMLSはこちら。
JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena
JVM Language Summit 2019(JVMLS) day 2 - きしだのHatena
JVM Language Summit 2019(JVMLS) day 3 - きしだのHatena

Unconference

まず最初にMark Reinholdさんの開始のあいさつ。ほんとは9時開始だけど9:20くらいまでぐだぐだしてた気がする。
f:id:nowokay:20190802150747j:plain

コミットが多い会社の一覧。それぞれの会社に所属している人が順に起立してみんなで拍手。
f:id:nowokay:20190802150753j:plain

OCWは事前にタイムテーブルが決まっていないアンカンファレンス形式で行われます。というStuart Marksさんからの説明
f:id:nowokay:20190802150756j:plain

まずは話し合いたいネタがある人がトピックを書いて貼っていきます。
f:id:nowokay:20190802150800j:plain

そして、それぞれ短く説明のピッチ。 f:id:nowokay:20190802150811j:plain

そのとき、前のほうの席で関係ない話をしてたGilさんにReinholdさんが声を抑えてってジェスチャーしにきたり、時間を超過してピッチしてたGilさんに時間切れ〜とReinholdさんがやってたりして面白かった。

そのあと、みんなで投票して、内容が決まります。 f:id:nowokay:20190802150818j:plain

Project Skara

最初はあらかじめ応募があったSkaraの話。
f:id:nowokay:20190802150822j:plain

Project Skaraは、現在Mercurialで管理されているOpenJDKのソースをGitに移行するというプロジェクトです。すでにGitHubリポジトリが作られて、リポジトリがミラーされています。メインリポジトリだけではなく、ValhallaやPanamaなどのプロジェクトやJMCのようなツールなど周辺プロジェクトもリポジトリが作られています。
OpenJDK

そうすると、WebRevというツールとメーリングリストで行われているコードレビューの代わりにPull Requestを使いたいとか、Bug管理の代わりにGitHubのIssueを使いたいとか、開発作業のツールもGitHubに移行する必要が出て、どうしようかという話でした。

JEPはこれです。
JEP 357: Migrate from Mercurial to Git

すでに資料は公開されています。
http://cr.openjdk.java.net/~darcy/Presentations/OCW/ocw-2019-08-skara.pdf

Warmup

AzulのCTOであるGil Tateさんによる、Javaのウォームアップの話
f:id:nowokay:20190802150825j:plain

JVMではJITが進むごとにパフォーマンスがあがって、ピークパフォーマンスが出るまでにしばらくかかります。
f:id:nowokay:20190802150830j:plain

サーバーが複数台あると、そういうピークパフォーマンスが出る前の状態をそれぞれ経過することになりますが、これは無駄です。 f:id:nowokay:20190802150834j:plain

その問題に対処するために、AzulのJVMであるZingでの実装や、JVMLS2日目で話されていたJWarmup、OpenJ9のJITキャッシュなどがあります。
f:id:nowokay:20190802150839j:plain

これは通常のOpenJDKとGraalVMネイティブイメージ、CRaCを使ったものの比較で、ネイティブイメージほどではないですが、起動時間が短縮できています。
f:id:nowokay:20190802150843j:plain

起動時間の短縮には、ネイティブイメージ以外にもいろいろなアプローチがあるんだなぁという感想でした。

Lanch

ここで昼休み
f:id:nowokay:20190802153806j:plain

同じテーブルにいた人が、テストをどうするかっていうセッションの提案をしていたAdoptOpenJDKのひとに、OpenJDKにコミットするのめっちゃハードル高い、自分が使ってない環境でのテストとかできないと相談していました。
AdoptOpenJDKでは、そういった環境も提供したい、ということを言っていました。

ごはんを食べたら、午後からのタイムテーブルの発表です。
f:id:nowokay:20190802150846j:plain

こんな感じに1階と2階にわかれて全部で8セッション行われます。 f:id:nowokay:20190802142355j:plain

Core Lib、JFR Enhansment

Stuart Marksさんによるコアライブラリにロギングやメトリクスを入れる話。 f:id:nowokay:20190802150852j:plain

あとJFRの話。

よく聞いてなかった。

Virtual Container

Alibabaの人たちによるVirtual Containerの話
f:id:nowokay:20190802150858j:plain

JVMのレベルで仮想化しようという話
f:id:nowokay:20190802150901j:plain

Amazon Corretto Crypt Provider

Correttoのなにか。
f:id:nowokay:20190802150906j:plain

Finalization

finalize()をどうやって滅ぼすかという話。
f:id:nowokay:20190802150913j:plain

8/9 追記 問題 GC実装の複雑化とオーバーヘッド

代替 java.lang.ref.Cleaner ReferenceQueue

進捗 JDK9からdeprecated baseモジュールではほぼ変更・削除されている(クライアントやJavaFXで残ってる)

3rdパーティーライブラリはどうする? ドキュメント・広報など どのくらい時間が? ステップは?

イデア GCでfinalizeを無効にする スイッチをつける デフォルトをあとで変更する アプリケーションは失敗したりdegradeするかも

GC

CMSをどうやって滅ぼすかという話。
f:id:nowokay:20190802150918j:plain

手書きでしたね。そして、WindowsじゃなくUbuntuっぽい。
f:id:nowokay:20190802150923j:plain

14で消すぞ、ってことらしい。
なんで14よりあとじゃないの?って質問には、まあみんなLTSしか使わないからLTS以外ならどこでやっても同じなんでは?と言ってた。

Dinner

という感じでOpenJDKの大きめの問題についてみんなで議論する、という感じでした。
あしたの予定はJVMLSをどう広めるかとPanamaの話っぽい。のこりはまた明日アンカンファレンス形式でというStuart Marksさんからの話。
f:id:nowokay:20190802150929j:plain

晩ごはんはそのまま近所で食べるので、歩きます。Oracleキャンパスを出たところの道が「Sun Fire Way」という名前なんですが、Sun Microsystemsのサーバー「Sun Fire」から来ているらしい。
f:id:nowokay:20190802160309j:plain

晩ごはんは、jyukutyo御用達のチポトレ
f:id:nowokay:20190802150942j:plain

注文のしかたぜんぜんわからんだった。あとこれ1000KCal以上あるっぽく、全部食べたらおなかいっぱい+αになった。けどおいしかったです。
インスタ映えしないけど。
f:id:nowokay:20190802150946j:plain

こちらはインスタ映えするskrb
f:id:nowokay:20190802150950j:plain

ついでに同じエリアにあるSafewayというスーパーで、KOMBCHAという謎の飲み物を教えてもらいます。昆布のお茶ではなく、紅茶キノコ系らしい。
ここに写ってるのほとんど全部KOMBCHAです。
f:id:nowokay:20190802150954j:plain

新しい知識も仕入れたところで、OCW1日目終了です。またあした。 f:id:nowokay:20190802151000j:plain