JJUGナイトセミナー「Java 20 リリース記念イベント」に行ってきた #jjug

JJUGナイトセミナー「Java 20 リリース記念イベント」に参加しました。オンライン参加。簡単に所感をまとめます。

jjug.doorkeeper.jp

所感

最近、Java の新しい機能があまり追えてないけど、以前よりずっと簡潔に書けるようになってる印象があります。大きなプログラムから小さなプログラムへというのは確かにありそう。もちろん、勉強とか簡易な動作確認がやりやすくなるのはあるけど、サーバーレスとか組み込みでも Java が使いやすくなると思う。

あと、Java と直接は関係ないけど、最近は ChatGPT とか Copilot とかが話題になってるけど、今後の IDE にはこのあたりが当たり前に組み込まれていくんだろうかね。テストコード書いたりデバッグのやり方が変わっていきそう。

Qodana 気になる。ちょっと調べてみよう。

以下、メモから抜粋。

最新JavaIDE

Java 20とその先 -オブジェクト指向からデータ指向へ、大きなプログラムから小さなプログラムへ-

  • JEP7個
    • 試用機能
  • Scoped Values
    • スレッドセーフ共有
    • ThreadLocal より手軽に
  • Virtual Thread
    • JVM 管理スレッド
  • URL コンストラクタ非推奨
    • URI#create + toURL
    • URL チェックされるように
  • 16bit 浮動小数
    • 変換のみ/計算はできない
  • main を最低限の記述で
    • JEP ドラフト
    • 匿名メインクラス (クラス定義不要)
    • インスタントメソッドで定義可 (static 不要)
    • パッケージプライベート (public 不要)
    • 引数不要 (String[] 不要)
  • 文字列への式の埋め込み
  • オブジェクト指向からデータ指向へ
    • オブジェクト指向はプログラムのモジュール化の技法
    • プログラムは小さくなっている
      • モジュール分割する必要がない
    • データ指向
      • 型の定義が重要
    • 抽象データ型/代数的データ型
  • クラス
    • 型とモジュールの性質がある
      • 型 > データ保持
      • モジュール > 手続きを記述する役割
  • 抽象データ型
    • データ操作だけを公開する
    • Records
    • 参照透過性/副作用
  • 代数的データ型
    • データの掛け算と足し算を考える
    • 直積型
      • 値を組み合わせる型
      • 値の取りうるパターン
      • Records
    • 直和型
      • いずれかの型になる
      • 例外のマルチキャッチ
      • 継承
      • Sealed
        • インタフェースが実装する型を限定する