$30 off During Our Annual Pro Sale. View Details »

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

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 きしだ なおき

    View Slide

  2. 07/20/2023 2
    自己紹介

    きしだ なおき

    LINE Fukuoka

    twitter: @kis

    「プロになるJava」という
    Java入門書を書いてます

    View Slide

  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さんも)

    View Slide

  4. JJUG CCC

    Cross Community Conference

    2007年当時、Seasar2やJSUGなどプロダクトごとのコミュニティが
    活発であり、またGroovyやJRubyなどJVM言語も盛り上がっていたた
    め、Java/JVMをテーマに各団体の協力でイベントを開催

    JJUG CCC 2023 Spring

    初のオン・オフハイブリッド開催

    会場参加約300名

    View Slide

  5. Java 21

    9/19リリース予定

    LTS

    主な機能

    パブリックスタティックヴォイドメインが簡潔に!(Preview)

    String Templateで文字列に式を埋め込み(Preview)

    実用的なパターンマッチングが標準に!

    Record Patterns / Pattern Matching for switch

    Virtual Threadが標準に!

    View Slide

  6. パブリックスタティックヴォイドメインが簡潔に!

    クラスの定義が不要に

    mainメソッドの引数を省略可能に

    インスタンスメソッドでもOK

    publicじゃなくてもOK(privateだけダメ)

    説明に完全なコードを入れやすくなった

    →はWEB+DB PRESS 135の原稿

    Preview機能

    --enable-preview -source 21が必要

    View Slide

  7. 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();
    }
    }

    View Slide

  8. 実用的なパターンマッチングが標準に!

    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 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;
    }
    }

    View Slide

  9. Virtual Threadが標準に!

    いままでのスレッドは高機能

    しかしサーバーで複数リクエストを処理することが主な利用目的

    ネットワークの待ち時間が大きい

    スレッドは何もしていない

    無駄にリソースを食う

    OSスレッドを複数リクエストで使いまわすことが可能

    軽量化

    View Slide

  10. まとめ

    みんなもJJUG CCCに行こう

    登壇もしよう

    登壇初心者枠あり

    交通費出るはず(要確認)

    Java 21はイイゾ

    View Slide