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
Yuichi.Sakuraba
September 05, 2025
Technology
2
440
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
270
Lazy Constant - finalフィールドの遅延初期化
skrb
0
3k
Java 30周年記念! Javaの30年をふりかえる
skrb
4
3.7k
JavaにおけるNull非許容性
skrb
2
3.8k
あなたはJVMの気持ちを理解できるか?
skrb
6
31k
で、ValhallaのValue Classってどうなったの?
skrb
2
14k
Javaにおける関数型プログラミンへの取り組み
skrb
7
680
今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
skrb
6
26k
今こそ、ラムダ式を考える - ラムダ式はどうやって動くのか
skrb
7
12k
Other Decks in Technology
See All in Technology
Goのerror型がシンプルであることの恩恵について理解する
yamatai1212
1
250
AlloyDB 奮闘記
hatappi
0
160
Zeal of the Convert: Taming Shai-Hulud with AI
ramimac
0
150
A Casual Introduction to RISC-V
omasanori
0
420
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
2
340
Agent ServerはWeb Serverではない。ADKで考えるAgentOps
akiratameto
0
120
Laravelで学ぶOAuthとOpenID Connectの基礎と実装
kyoshidaxx
0
110
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
7
3.9k
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
130
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
220
Sansanでの認証基盤内製化と移行
sansantech
PRO
0
590
JAWS DAYS 2026 AWS知識・技術力を使って隠された旗をゲットせよ!〜出張版「ごーとんカップ」〜 解説編
kaminashi
0
110
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
5.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
260
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
240
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.9k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Code Reviewing Like a Champion
maltzj
528
40k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
480
The browser strikes back
jonoalderson
0
810
30 Presentation Tips
portentint
PRO
1
260
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
86
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 櫻庭 祐一