Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
380
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
Lazy Constant - finalフィールドの遅延初期化
skrb
0
880
Java 30周年記念! Javaの30年をふりかえる
skrb
4
3.4k
JavaにおけるNull非許容性
skrb
2
3.7k
あなたはJVMの気持ちを理解できるか?
skrb
5
28k
で、ValhallaのValue Classってどうなったの?
skrb
2
13k
Javaにおける関数型プログラミンへの取り組み
skrb
7
630
今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
skrb
6
25k
今こそ、ラムダ式を考える - ラムダ式はどうやって動くのか
skrb
7
11k
Project Amberで変わる Javaのプログラミングスタイル
skrb
3
1.3k
Other Decks in Technology
See All in Technology
生成AI時代におけるグローバル戦略思考
taka_aki
0
170
Karate+Database RiderによるAPI自動テスト導入工数をCline+GitLab MCPを使って2割削減を目指す! / 20251206 Kazuki Takahashi
shift_evolve
PRO
1
730
グレートファイアウォールを自宅に建てよう
ctes091x
0
150
re:Invent 2025 ふりかえり 生成AI版
takaakikakei
1
200
AWSセキュリティアップデートとAWSを育てる話
cmusudakeisuke
0
250
世界最速級 memcached 互換サーバー作った
yasukata
0
340
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
130
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
280
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
2
250
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
150
re:Inventで気になったサービスを10分でいけるところまでお話しします
yama3133
1
120
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
440
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Documentation Writing (for coders)
carmenintech
76
5.2k
Building Applications with DynamoDB
mza
96
6.8k
We Have a Design System, Now What?
morganepeng
54
7.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Navigating Team Friction
lara
191
16k
RailsConf 2023
tenderlove
30
1.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Building Adaptive Systems
keathley
44
2.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 櫻庭 祐一