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
510
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
Is Object Oriented nesessary? COSCUP 2024
kishida
0
69
プログラムに組み込みたい人向けLLMの概要 / LLM for programmers
kishida
2
290
Javaの現状2024夏 / Java current status 2024 summer
kishida
4
1.6k
Java 22 Overview
kishida
1
290
Is Object-Oriented nessesary?
kishida
0
80
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
33
24k
AI時代を乗り切る実装力をつけよう / Get avility of implementation beyond AI era
kishida
2
5.3k
AI時代を生き抜くために処理をちゃんと書けるようになろう / write a executable process for AI era
kishida
27
16k
Javaは今どうなっているの? / how about java now
kishida
14
19k
Other Decks in Programming
See All in Programming
GoのIteratorに詳しくなってしまう
inatonix
1
170
暴走のウホーレン 〜想いってのはvimrcにしないと伝わらないんだぜ〜 / iosdc_japan_2024
uhooi
1
240
労務ドメインを快適に開発する方法 / How to Comfortably Develop in the Labor Domain
yuki21
1
250
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
390
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
3
570
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
130
Wallet API, Verifier APIで実現するIDカード on iPhoneの世界
shitamori1272
1
320
ドメイン駆動設計を実践するために必要なもの
bikisuke
3
290
RAGの回答精度評価用のQAデータセットを生成AIに作らせた話
kurahara
0
210
快適な開発と高セキュリティを実現するCryptoKitを活用したCoreDataのデータ暗号化術
grandbig
1
300
LangGraphでのHuman-in-the-Loopの実装
os1ma
3
550
ECMAScript仕様を読むのに必要な知識 - ダイジェスト版
syumai
4
2.5k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
109
6.9k
5 minutes of I Can Smell Your CMS
philhawksworth
201
19k
Ruby is Unlike a Banana
tanoku
96
10k
BBQ
matthewcrist
83
9.1k
Agile that works and the tools we love
rasmusluckow
327
20k
Stop Working from a Prison Cell
hatefulcrawdad
266
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
We Have a Design System, Now What?
morganepeng
48
7.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
24
2k
What's new in Ruby 2.0
geeforr
340
31k
Bash Introduction
62gerente
608
210k
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はイイゾ