エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

JJUG CCC 2019 Spring 参加報告

公式サイト

JJUG CCC 2019 Spring - 日本Javaユーザーグループ/Japan Java User Group | Doorkeeper

参加セッション

  • Oracle Keynote Valhalla, updates and future
  • Catch up Java 12 and Java 13
  • ドメイン管理サービスにおけるJava活用のご紹介
  • 入門: 末尾呼び出し最適化
  • ソフトウェア設計の教育工学的な分析と育成へのアイデア
  • Project Loom - 限定継続と軽量スレッド
  • Functional Spring Cookbook

感想・まとメモ

Oracle Keynote Valhalla, updates and future

  • 内部クラス -> JVM上では別クラス
  • JEPの名前は、変わることもある
  • 二仕様物語は、笑うところ
    • たぶん、笑わないのは元ネタが分からないから。二都物語とかけているらしいが、読みが似ているだけで、内容が揶揄しているのか、よく分からなかった。。。
  • Java11より前は、内部クラスから外部クラスを呼ぶときにBridgeMethodを経由して呼ばれる
    • 開発者は作ってないが、スタック上に出力されてしまう。。。
    • やろうと思えば、外部からBridgeMethodにアクセス可能
    • Java11でなくなった
  • ValueTypes
    • Minimal Value Types プロジェクト(MVT)
      • タイプの種類
        • LQRU
          • なんか、エヴァのタイトルに出てきそうな英字だな。。。

BridgeMethodは、一回、試してみたい。
確かに、Java8使っているときに、見覚えのないメソッドがスタックトレースに出てきた経験がある。

Catch up Java 12 and Java 13

www.slideshare.net

Java12

lts のあとなので、大きな変更はない。
とはいえ、ツールとか入ってきた。

JEP 189

  • GCが7種類に
  • Shenandoahは、一回の GC は一定だが、頻度が変わる。

ShenandoahのJEPのサマリを見たときは、「そんな、バカな!」と思ったけど、やっと意味が分かった。
最初見たときは、一回のGCで全部回収して、実行時間も一定みたいな意味合いに見えてしまったが、違うのね。
参照の切り替えで済むから一定で、頻度は違うかもってわけか。。。
思ったんだけど、これの発生タイミングが重複してしまったら、どうなるんだろう?

JEP346

  • Java がメモリを返すようになった
  • これが可能になることで、常駐プロセスが作りやすくなったはず。
  • GC 改善は続いている。

JEP325

  • switch -> preview
    • 即使うのは待った

イマイチ、これは、便利になったのか?って疑問符が湧く。
switch文が嫌いなのだが、JDKのコミッターにswitch文好きがいるのかな?
それとも、デカい回収のための何かなのだろうか?

JEP341

  • 起動時間の短縮

JEP334

  • 定数の遅延処理

String#transform

  • ラムダ式でアクセスの逆順で書けるようになる。

かなり便利そう。
これは、Stringだけなのかな?
他のオブジェクトでも使いたいケースがありそうな予感。
内部の仕組みを確認しておきたい。

java13

  • socket 一新される
  • Loomは桜庭さんのセッション参照

かなり駆け足だった。
45分で振り返るのは、無理があったのだろうな。。。
興味持ったところだけしか、メモは取れなかったが、コンパイラの話は、かなりスッキリした。
あとは、String#transformが、かなり気になる。

ドメイン管理サービスにおけるJava活用のご紹介

  • TLD -> top level domain
  • ドメインはオークションで落札する必要がある。そこから色んな会社を経由して利用者に渡る
  • ドメインの最高落札額は、150億円くらい

ICANNと聞いて、最初にICANを連想してしまった。。。
ICANNって、ビジネス的にウハウハなんじゃないかな?って思ってしまった。

入門: 末尾呼び出し最適化

speakerdeck.com

末尾呼び出し最適化ってのは、後続の処理がないことに目を付けているわけね。
処理をスタックトレースに積まないことで、メモリ消費を抑えていると。
後々、疑問に思ったが、問題が発生したときにトレースできなくなるのでは?と思ったが、どうなんだろう?
同じ処理の繰り返しだから、スタックトレースは不要という考えなのかな?
分岐があったら死にそう。。。

あと、スタックってのは、遊戯王で言うところのチェーンを積んだ状態と一緒だなって思った。

ソフトウェア設計の教育工学的な分析と育成へのアイデア

speakerdeck.com

やっぱり、現場に出てない講師もいるんだ。。。
なんか、セミナーとかは、現場に出てないやつが出ているのではないかという疑惑が心の中にあったが、やっぱり、ものによっては、現場から追い出されたやつが講師しているケースもあるのね。。。

分からない箇所が本人の説明と違う箇所にあるってのは、よくある話。
俺も、新人の頃は、分からない箇所を教えてもらっても、しっくりこないことがよくあった。
それを理解して接してあげないと、精神攻撃になってしまうから、教える側は注意が必要かもね。

Project Loom - 限定継続と軽量スレッド

t.co

  • safe habor statement -> 信じるなの意
  • 並列/並行処理=難しい
  • 並列処理がスケールしない= CPU が遊んでる

待ちを譲るって聞くと、js の Promise だな。
JavaでjsのPromiseをやるには、スレッドを上手く使うしかないと思う。
wait-notifyAllでも実現はできるのか。。。

どうも、スレッド周りの話は、難しい。
ExecutorServiceが理解できてないせいかもしれない。
時間を見つけて、本腰入れて勉強する必要があるかも。
できれば、Fiberが来る前にやっておきたい。

Functional Spring Cookbook

docs.google.com

Spring Fu???
eclipse cheにインスパイアされてそうな命名に感じる。
ただ、FuはFunctionであることは、なんとなく予想できる。

Springにも関数型の概念が入ってきているのか。
Spring webfluxを早めにキャッチアップしておきたい。

全体通して

やっぱり、人が多い。女性の割合がかなり増えた印象がある。
あと、初参加者は、毎回、一定数いるんだなって感じた。

主流はmacだが、サーフェス使いも増えてきた気がする。

String#transform が、かなり気になった。
最初にやりたいことが、一番最後に記述するはめになるのを、どうにかならないものかと考えていたので、とても画期的に思えた。
応用が効くのか、試したい。

タスク・課題

  • String#transformの確認
  • BridgeMethod
  • ExecutorServiceを調査する
  • Spring webflux