Slide 1

Slide 1 text

JJUG / JJUG CCCについて あと、Java 21の紹介 2023/7/19 JJUG CCC 2023 Spring 報告会@福岡 LINE Fukuoka きしだ なおき

Slide 2

Slide 2 text

07/20/2023 2 自己紹介 ● きしだ なおき ● LINE Fukuoka ● twitter: @kis ● 「プロになるJava」という Java入門書を書いてます

Slide 3

Slide 3 text

07/20/2023 3 JJUGについて ● 日本Java User Group ● Java 技術の向上・発展、開発者の支援を目的とした任意団体 ● 2007年4月に発足 ● Doorkeeper登録者数12107人(6/4時点) ● 活動 ● JJUG CCC(年2回, Spring / Fall) ● ナイトセミナー(月1回) ● Java仕様勉強会(月1回) ● 地方イベントへの講師派遣(今回のirofさんも)

Slide 4

Slide 4 text

JJUG CCC ● Cross Community Conference ● 2007年当時、Seasar2やJSUGなどプロダクトごとのコミュニティが 活発であり、またGroovyやJRubyなどJVM言語も盛り上がっていたた め、Java/JVMをテーマに各団体の協力でイベントを開催 ● JJUG CCC 2023 Spring ● 初のオン・オフハイブリッド開催 ● 会場参加約300名

Slide 5

Slide 5 text

Java 21 ● 9/19リリース予定 ● LTS ● 主な機能 ● パブリックスタティックヴォイドメインが簡潔に!(Preview) ● String Templateで文字列に式を埋め込み(Preview) ● 実用的なパターンマッチングが標準に! ● Record Patterns / Pattern Matching for switch ● Virtual Threadが標準に!

Slide 6

Slide 6 text

パブリックスタティックヴォイドメインが簡潔に! ● クラスの定義が不要に ● mainメソッドの引数を省略可能に ● インスタンスメソッドでもOK ● publicじゃなくてもOK(privateだけダメ) ● 説明に完全なコードを入れやすくなった ● →はWEB+DB PRESS 135の原稿 ● Preview機能 ● --enable-preview -source 21が必要

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

実用的なパターンマッチングが標準に! ● 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; } }

Slide 9

Slide 9 text

Virtual Threadが標準に! ● いままでのスレッドは高機能 ● しかしサーバーで複数リクエストを処理することが主な利用目的 ● ネットワークの待ち時間が大きい ● スレッドは何もしていない ● 無駄にリソースを食う ● OSスレッドを複数リクエストで使いまわすことが可能 ● 軽量化

Slide 10

Slide 10 text

まとめ ● みんなもJJUG CCCに行こう ● 登壇もしよう ● 登壇初心者枠あり ● 交通費出るはず(要確認) ● Java 21はイイゾ