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

JJUG,JJUG CCCについて、あとJava21 / JJUG, JJUG CCC, an...

JJUG,JJUG CCCについて、あとJava21 / JJUG, JJUG CCC, and Java 21

2023/7/19に行われたJJUG CCC 2023 Spring報告会 in 福岡での登壇資料です。
https://javaq.connpass.com/event/288665/

Naoki Kishida

July 19, 2023
Tweet

More Decks by Naoki Kishida

Other Decks in Programming

Transcript

  1. JJUG / JJUG CCCについて あと、Java 21の紹介 2023/7/19 JJUG CCC 2023

    Spring 報告会@福岡 LINE Fukuoka きしだ なおき
  2. 07/20/2023 2 自己紹介 • きしだ なおき • LINE Fukuoka •

    twitter: @kis • 「プロになるJava」という Java入門書を書いてます
  3. 07/20/2023 3 JJUGについて • 日本Java User Group • Java 技術の向上・発展、開発者の支援を目的とした任意団体

    • 2007年4月に発足 • Doorkeeper登録者数12107人(6/4時点) • 活動 • JJUG CCC(年2回, Spring / Fall) • ナイトセミナー(月1回) • Java仕様勉強会(月1回) • 地方イベントへの講師派遣(今回のirofさんも)
  4. Java 21 • 9/19リリース予定 • LTS • 主な機能 • パブリックスタティックヴォイドメインが簡潔に!(Preview)

    • String Templateで文字列に式を埋め込み(Preview) • 実用的なパターンマッチングが標準に! • Record Patterns / Pattern Matching for switch • Virtual Threadが標準に!
  5. String Templateで文字列に式を埋め込み • STR.”今日は\{LocalDate.now()}です” import static java.util.FormatProcessor.FMT; void main() {

    for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { System.out.print(FMT."\{i}*\{j}=%2d\{i*j} "); } System.out.println(); } }
  6. 実用的なパターンマッチングが標準に! • JEP 440 Record Patterns • JEP 441 Pattern

    Matching for switch sealed interface Op permits Output, Goto {} // 命令 record Output(String message) implements Op {} record Goto(int no) implements Op {} List<Op> codes = List.of( // プログラム new Output("hello"), new Output("world"), new Goto(0)); int counter = 0; void clock() { // 命令実行 counter++; switch(codes.get(counter-1)) { // 命令ごとの分岐 case Output(var msg) -> System.out.println(msg); case Goto(var no) -> counter = no; } }