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
Language Update: Java
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuichi.Sakuraba
September 05, 2025
Technology
2
420
Language Update: Java
2025.09.06 Learn Language 発表資料
Yuichi.Sakuraba
September 05, 2025
Tweet
Share
More Decks by Yuichi.Sakuraba
See All by Yuichi.Sakuraba
Java 25に至る道
skrb
3
260
Lazy Constant - finalフィールドの遅延初期化
skrb
0
2.6k
Java 30周年記念! Javaの30年をふりかえる
skrb
4
3.6k
JavaにおけるNull非許容性
skrb
2
3.8k
あなたはJVMの気持ちを理解できるか?
skrb
6
30k
で、ValhallaのValue Classってどうなったの?
skrb
2
14k
Javaにおける関数型プログラミンへの取り組み
skrb
7
670
今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
skrb
6
26k
今こそ、ラムダ式を考える - ラムダ式はどうやって動くのか
skrb
7
12k
Other Decks in Technology
See All in Technology
俺の失敗を乗り越えろ!メーカーの開発現場での失敗談と乗り越え方 ~ゆるゆるチームリーダー編~
spiddle
0
400
AIエージェントで変わる開発プロセス ― レビューボトルネックからの脱却
lycorptech_jp
PRO
2
800
LINEアプリ開発のための Claude Code活用基盤の構築
lycorptech_jp
PRO
1
1.1k
インシデント対応入門
grimoh
7
5.6k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
大規模な組織におけるAI Agent活用の促進と課題
lycorptech_jp
PRO
5
7.1k
AWS Bedrock Guardrails / 機密情報の入力・出力をブロックする — Blocking Sensitive Information Input/Output
kazuhitonakayama
2
180
ヘルシーSRE
tk3fftk
2
190
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
43k
2026-02-24 月末 Tech Lunch Online #10 Cloud Runのデプロイの課題から考えるアプリとインフラの境界線
masasuzu
0
100
なぜAIは組織を速くしないのか 令和の腑分け
sugino
80
51k
バニラVisaギフトカードを棄てるのは結構大変
meow_noisy
0
160
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
170
How to Think Like a Performance Engineer
csswizardry
28
2.5k
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
Designing for humans not robots
tammielis
254
26k
4 Signs Your Business is Dying
shpigford
187
22k
HDC tutorial
michielstock
1
480
Claude Code のすすめ
schroneko
67
220k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Transcript
Language Update Java 櫻庭 祐一
Java の作り方 https://openjdk.org/projects/jdk/ OpenJDK: JDK Project Mark Reinhold の他のプロジェクトをまとめて を開発
JDK OpenJDK Java 25 2024-09-16 Java 24 2023-03-18 半年ごとのリリース Java 21, Java 25 2 年周期 LTS Oracle は などのディストリビュータによる Note: OpenJDK LTS LTS には と非 の区別はない LTS
JEP: JDK Enhancement Proposal の機能を規定 JDK 新機能だけでなく、実装改善、機能の削除も含む Preview Standard 正式な機能
の種類 JEP Incubator Experimental 言語仕様関連 VM の実装改良 新しい API ex. Records ex. HTTP Client ex. ZGC
JEP: JDK Enhancement Proposal の機能を規定 JDK 新機能だけでなく、実装改善、機能の削除も含む Preview Standard 正式な機能
の種類 JEP Incubator Experimental 言語仕様関連 VM の実装改良 新しい API ex. Records ex. HTTP Client ex. ZGC
Java 22 423: Region Pinning for G1 454: Foreign Function
& Memory API 456: Unnamed Variables & Patterns 458: Launch Multi-File Source-Code Programs Java 23 467: Markdown Documentation Comments 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 474: ZGC: Generational Mode by Default Java 24 472: Prepare to Restrict the Use of JNI 475: Late Barrier Expansion for G1 479: Remove the Windows 32-bit x86 Port 483: Ahead-of-Time Class Loading & Linking 484: Class-File API 485: Stream Gatherers 486: Permanently Disable the Security Manager 490: ZGC: Remove the Non-Generational Mode 491: Synchronize Virtual Threads without Pinning 493: Linking Run-Time Images without JMODs 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe 501: Deprecate the 32-bit x86 Port for Removal Java 25 470: PEM Encodings of Cryptographic Objects (Preview) 502: Stable Values (Preview) 503: Remove the 32-bit x86 Port 505: Structured Concurrency (Fifth Preview) 506: Scoped Values 507: Primitive Types in Patterns, instanceof, and switch (Third Preview) 508: Vector API (Tenth Incubator) 509: JFR CPU-Time Pro ling (Experimental) 510: Key Derivation Function API 511: Module Import Declarations 512: Compact Source Files and Instance Main Methods 513: Flexible Constructor Bodies 514: Ahead-of-Time Command-Line Ergonomics 515: Ahead-of-Time Method Pro ling 518: JFR Cooperative Sampling 519: Compact Object Headers 520: JFR Method Timing & Tracing 521: Generational Shenandoah Java 22, 23, 24はStandard JEPのみ
Java 22 423: Region Pinning for G1 454: Foreign Function
& Memory API 456: Unnamed Variables & Patterns 458: Launch Multi-File Source-Code Programs Java 23 467: Markdown Documentation Comments 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 474: ZGC: Generational Mode by Default Java 24 472: Prepare to Restrict the Use of JNI 475: Late Barrier Expansion for G1 479: Remove the Windows 32-bit x86 Port 483: Ahead-of-Time Class Loading & Linking 484: Class-File API 485: Stream Gatherers 486: Permanently Disable the Security Manager 490: ZGC: Remove the Non-Generational Mode 491: Synchronize Virtual Threads without Pinning 493: Linking Run-Time Images without JMODs 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe 501: Deprecate the 32-bit x86 Port for Removal Java 25 470: PEM Encodings of Cryptographic Objects (Preview) 502: Stable Values (Preview) 503: Remove the 32-bit x86 Port 505: Structured Concurrency (Fifth Preview) 506: Scoped Values 507: Primitive Types in Patterns, instanceof, and switch (Third Preview) 508: Vector API (Tenth Incubator) 509: JFR CPU-Time Pro ling (Experimental) 510: Key Derivation Function API 511: Module Import Declarations 512: Compact Source Files and Instance Main Methods 513: Flexible Constructor Bodies 514: Ahead-of-Time Command-Line Ergonomics 515: Ahead-of-Time Method Pro ling 518: JFR Cooperative Sampling 519: Compact Object Headers 520: JFR Method Timing & Tracing 521: Generational Shenandoah Java 22, 23, 24はStandard JEPのみ 宣言的記法 データ指向 VM 初心者向け 安全性
Java 22 423: Region Pinning for G1 454: Foreign Function
& Memory API 456: Unnamed Variables & Patterns 458: Launch Multi-File Source-Code Programs Java 23 467: Markdown Documentation Comments 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 474: ZGC: Generational Mode by Default Java 24 472: Prepare to Restrict the Use of JNI 475: Late Barrier Expansion for G1 479: Remove the Windows 32-bit x86 Port 483: Ahead-of-Time Class Loading & Linking 484: Class-File API 485: Stream Gatherers 486: Permanently Disable the Security Manager 490: ZGC: Remove the Non-Generational Mode 491: Synchronize Virtual Threads without Pinning 493: Linking Run-Time Images without JMODs 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe 501: Deprecate the 32-bit x86 Port for Removal Java 25 470: PEM Encodings of Cryptographic Objects (Preview) 502: Stable Values (Preview) 503: Remove the 32-bit x86 Port 505: Structured Concurrency (Fifth Preview) 506: Scoped Values 507: Primitive Types in Patterns, instanceof, and switch (Third Preview) 508: Vector API (Tenth Incubator) 509: JFR CPU-Time Pro ling (Experimental) 510: Key Derivation Function API 511: Module Import Declarations 512: Compact Source Files and Instance Main Methods 513: Flexible Constructor Bodies 514: Ahead-of-Time Command-Line Ergonomics 515: Ahead-of-Time Method Pro ling 518: JFR Cooperative Sampling 519: Compact Object Headers 520: JFR Method Timing & Tracing 521: Generational Shenandoah Java 22, 23, 24はStandard JEPのみ 宣言的記法 データ指向 VM 初心者向け 安全性
4つの方向性 宣言的記法/ データ指向 VM 初心者向け 安全性 関数型機能はひと段落 小さなObjectを扱う手法 巨大ヒープ用GCの世代別化 小さなObjectを扱う構造
起動時間短縮 今後導入予定のValue Classの露払い機能 初心者のハードルを下げる 保守できない機能の削除 セキュリティ向上
小さなObjectを扱う Mutable Huge Object Immutable Small Object Brian Goetz Project
Valhalla: Value Class (導入時期未定) Java 25までの露払い機能 JEP 484: バイトコードを操作するAPI JEP 513: オブジェクトの初期化順序の変更 JEP 519: オブジェクトヘッダーのコンパクト化 et al.
初心者のハードルを下げる お約束の記述をなるべく減らす JEP 512: メインクラスの省略 JEP 511: import文の簡略化 et al.
import java.util.stream.IntStream; public class Main { public static void main(String... args) { IntStream.range(0, 10) .forEach( i -> System.out.println("Hello, World")); } } Main.java ?
初心者のハードルを下げる お約束の記述をなるべく減らす JEP 512: メインクラスの省略 JEP 511: import文の簡略化 et al.
void main() { IntStream.range(0, 10) .forEach( i -> IO.println("Hello, World")); } Main.java
Conclusion 4 つの方向性で発展 Mutable Huge ObjからImmutable Small Objへ 初心者に優しく VMの改良と安全性の向上は永遠に続く
Language Update Java 櫻庭 祐一