https://youtu.be/1dY57CDxR14?si=2wftucg-UnhcJVpS
## 概要欄より
Join Brian Goetz (Java Language Architect) on a whirlwind tour of recent enhancements and future directions for the Java language with a special emphasis on Project Amber and Project Valhalla.
Presented by Brian Goetz - Java Language Architect (Java Platform Group - Oracle) at JavaOne 2025 (CA, March 2025).
## メモ
主に直近動いている(というか最近のJavaのバージョンやJEPで良く目にする機能が属してる) Amber と Valhalla が全体としてどこに向かってるかの紹介という内容
### Project Amber
全体を通して、開発者の生産性を良くするということを目標としている
最近取り組んでいるのは、
- Record
- Sealed class
- Pattern Matching
特に Record と Sealed Class はリリースされていることもあり新しい発見はなかった。
ただ代数的データ型やいかにオブジェクトではなくデータ指向が大事になってきているかという話をJavaサイドから聞くのは興味深かった。
パターンマッチングに関してはかなり未来についても触れられていた
Kotlin にあるような Switch の強化版 (Switch + Smart Cast) というわけではなくいわゆるな形を実現していきたいとのこと (伝わるかわからないけれど shape の一致を見る形)
例えばこういう一致などもできるような計画
```
case Optional.of(Ball.of(Color.RED, 1));
```
### Project Valhalla
どっちかというとJava内部の話に焦点を向けていて、
- より効率的なメモリレイアウト
- JVMの仕様に純粋に従うとポインタのような形で飛び飛びなレイアウトになってしまうのを効率化したい
- プリミティブ型とオブジェクトのギャップを減らしたい
メモリのレイアウトはこのスライドとかがわかりやすかった
[](https://gyazo.com/11593b7578bcfa6190bdcdc7272ecc36)
そんな中でホットな機能は以下2つ
- Value class
- Null Restricted Type
Value Class は概念としては ID を不要とせずフィールドの状態一致のみで等価性を評価できるようなもの。
Valhala の実装文脈としては、 immutable な値として処理ができる可能性が高くメモリレイアウトとしてもその場で展開すれば良い可能性がある。
それこそ java.time の LocalDate とかは value class にしたいと考えてるらしい。
Null Restricted Types は元々は Valhalla 文脈でコンパイラに Null にならないことを伝えることでメモリレイアウトなどを効率化することを意図しているようだった。
一方で Valhalla とは別の文脈で Kotlin などでもあるような機能なのでリクエストは多くあったそうでその人たちにとっても嬉しい機能となるはずとのこと。