Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javaが最強JVM言語になる日はくるのか / Will Java become strong...

Javaが最強JVM言語になる日はくるのか / Will Java become strongest JVM language

2020/10/4にオンラインで行われたJ Lang Fest Kansai Online #1での登壇資料です https://kansai-jvm-langs-fest.connpass.com/event/188249/

Naoki Kishida

October 04, 2020
Tweet

More Decks by Naoki Kishida

Other Decks in Programming

Transcript

  1. Java Bean 関数型 セミコロン省略 equals Stream public static void main

    ラッパークラス 非同期処理 null メソッド定義 パターンマッチング
  2. Java Bean • コンストラクタ • setter / getter • toString

    / equals / hashCode • IDEでの自動生成やlombokでの暗黙の生成ができるとはいえ 面倒
  3. パターンマッチへの対応 • instanceofで型パターンマッチに対応(JEP 375, preview 2) • switch式(JEP 361, standard)

    • switchでのパターンマッチ(JEP Draft) • Recordの分解(未JEP) • 仕様決め難しそう
  4. 非同期処理への対応 • Project Loom • 仮想スレッドのJVMへの導入 • OS管理ではなくJVMで管理するスレッド(グリーンスレッド) • OSリソースを食わないので軽量

    • バイトコードレベルで対処を行う • 言語仕様への変更不要 • synchronizedまわりに変更あるかも? • 他の言語にも恩恵あり • 着実に開発進んでる模様
  5. メソッド定義の簡素化への対応 • Concise Method Bodies(JEP draft) • String myMessage(String m)

    = "message is %s".formatted(m); • 処理が単一の式であればreturnが不要になる
  6. ここまでのまとめ 機能 状況 Java Bean Recordで対応 フレームワークの対応が必要 パターンマッチ 実装中 deconstructionは時間かかりそう

    null Optionalへのパターンマッチ まだ時間がかかる 文字列定義 Text Blocks 変数補完は入らなそう 非同期処理 Project Loom ラッパークラス Project Valhalla 先は長そう メソッド定義の簡素化 JEP draft ローカルメソッド Gitにブランチあり 関数の後置 String.translate 拡張メソッド 理論的には可能 計画なし メインメソッド 理論的には可能 計画なし equals 無理 Stream 無理 関数型 無理 セミコロン省略 無理