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
1
110
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 30周年記念! Javaの30年をふりかえる
skrb
4
3.2k
JavaにおけるNull非許容性
skrb
2
3.5k
あなたはJVMの気持ちを理解できるか?
skrb
5
22k
で、ValhallaのValue Classってどうなったの?
skrb
2
11k
Javaにおける関数型プログラミンへの取り組み
skrb
7
580
今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
skrb
6
24k
今こそ、ラムダ式を考える - ラムダ式はどうやって動くのか
skrb
7
11k
Project Amberで変わる Javaのプログラミングスタイル
skrb
3
1.2k
String Templateによる文字列補間
skrb
4
4.5k
Other Decks in Technology
See All in Technology
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
2
490
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
240
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
10
700
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
240
実践アプリケーション設計 ③ドメイン駆動設計
recruitengineers
PRO
13
4k
クラウドセキュリティを支える技術と運用の最前線 / Cutting-edge Technologies and Operations Supporting Cloud Security
yuj1osm
2
250
DDD集約とサービスコンテキスト境界との関係性
pandayumi
2
180
衝突して強くなる! BLUE GIANTと アジャイルチームの共通点とは ― いきいきと活気に満ちたグルーヴあるチームを作るコツ ― / BLUE GIANT and Agile Teams
naitosatoshi
0
290
PRDの正しい使い方 ~AI時代にも効く思考・対話・成長ツールとして~
techtekt
PRO
0
290
AWS環境のリソース調査を Claude Code で効率化 / aws investigate with cc devio2025
masahirokawahara
2
1k
AWSで推進するデータマネジメント
kawanago
0
760
実践AIガバナンス
asei
3
280
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
696
190k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Bash Introduction
62gerente
614
210k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Navigating Team Friction
lara
189
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Into the Great Unknown - MozCon
thekraken
40
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Balancing Empowerment & Direction
lara
3
600
YesSQL, Process and Tooling at Scale
rocio
173
14k
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 櫻庭 祐一