Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JJUG,JJUG CCCについて、あとJava21 / JJUG, JJUG CCC, an...
Search
Naoki Kishida
July 19, 2023
Programming
1
590
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
Share
More Decks by Naoki Kishida
See All by Naoki Kishida
Java 24まとめ / Java 24 summary
kishida
3
500
AI時代のプログラミング教育 / programming education in ai era
kishida
24
23k
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
10
2.4k
AI時代に求められるプログラマの能力 / ability of programmer in AI era
kishida
18
12k
Java 23の概要とJava Web Frameworkの現状 / Java 23 and Java web framework
kishida
2
510
Java Webフレームワークの現状 / java web framework
kishida
10
11k
Is Object Oriented nesessary? COSCUP 2024
kishida
0
180
プログラムに組み込みたい人向けLLMの概要 / LLM for programmers
kishida
3
670
Javaの現状2024夏 / Java current status 2024 summer
kishida
6
2k
Other Decks in Programming
See All in Programming
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
130
Optimizing JRuby 10
headius
0
420
生成AIを使ったQAアプリケーションの作成 - ハンズオン補足資料
oracle4engineer
PRO
3
250
Empowering Developers with HTML-Aware ERB Tooling @ RubyKaigi 2025, Matsuyama, Ehime
marcoroth
2
750
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
0
110
DataStoreをテストする
mkeeda
0
300
Amazon CloudWatchの地味だけど強力な機能紹介!
itotsum
0
180
サービスレベルを管理してアジャイルを加速しよう!! / slm-accelerate-agility
tomoyakitaura
1
190
The Evolution of the CRuby Build System
kateinoigakukun
0
720
KawaiiLT 登壇資料 キャリアとモチベーション
hiiragi
0
120
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
220
AI時代の開発者評価について
ayumuu
0
190
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
560
Practical Orchestrator
shlominoach
186
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
GitHub's CSS Performance
jonrohan
1030
460k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
A designer walks into a library…
pauljervisheath
205
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Music & Morning Musume
bryan
47
6.5k
Building an army of robots
kneath
304
45k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
Transcript
JJUG / JJUG CCCについて あと、Java 21の紹介 2023/7/19 JJUG CCC 2023
Spring 報告会@福岡 LINE Fukuoka きしだ なおき
07/20/2023 2 自己紹介 • きしだ なおき • LINE Fukuoka •
twitter: @kis • 「プロになるJava」という Java入門書を書いてます
07/20/2023 3 JJUGについて • 日本Java User Group • Java 技術の向上・発展、開発者の支援を目的とした任意団体
• 2007年4月に発足 • Doorkeeper登録者数12107人(6/4時点) • 活動 • JJUG CCC(年2回, Spring / Fall) • ナイトセミナー(月1回) • Java仕様勉強会(月1回) • 地方イベントへの講師派遣(今回のirofさんも)
JJUG CCC • Cross Community Conference • 2007年当時、Seasar2やJSUGなどプロダクトごとのコミュニティが 活発であり、またGroovyやJRubyなどJVM言語も盛り上がっていたた め、Java/JVMをテーマに各団体の協力でイベントを開催
• JJUG CCC 2023 Spring • 初のオン・オフハイブリッド開催 • 会場参加約300名
Java 21 • 9/19リリース予定 • LTS • 主な機能 • パブリックスタティックヴォイドメインが簡潔に!(Preview)
• String Templateで文字列に式を埋め込み(Preview) • 実用的なパターンマッチングが標準に! • Record Patterns / Pattern Matching for switch • Virtual Threadが標準に!
パブリックスタティックヴォイドメインが簡潔に! • クラスの定義が不要に • mainメソッドの引数を省略可能に • インスタンスメソッドでもOK • publicじゃなくてもOK(privateだけダメ) •
説明に完全なコードを入れやすくなった • →はWEB+DB PRESS 135の原稿 • Preview機能 • --enable-preview -source 21が必要
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(); } }
実用的なパターンマッチングが標準に! • 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; } }
Virtual Threadが標準に! • いままでのスレッドは高機能 • しかしサーバーで複数リクエストを処理することが主な利用目的 • ネットワークの待ち時間が大きい • スレッドは何もしていない
• 無駄にリソースを食う • OSスレッドを複数リクエストで使いまわすことが可能 • 軽量化
まとめ • みんなもJJUG CCCに行こう • 登壇もしよう • 登壇初心者枠あり • 交通費出るはず(要確認)
• Java 21はイイゾ