|
Лоис Фолтан (Lois Foltan) из компании Oracle подтвердила, что реализация предложения JEP 401 ("Value Classes and Objects") будет интегрирована в основной репозиторий OpenJDK и запланирована для включение в релиз JDK 28, намеченный на март 2027 года, в качестве отключённой по умолчанию экспериментальной функции.
Ключевая идея проекта Valhalla: "код как класс, работает как int". Проектом водится понятие классов значений (Value classes), позволяющих создавать типы, которые:
- не имеют идентичности (в отличие от обычных объектов, два экземпляра с одинаковыми полями считаются равными).
- не могут быть синхронизированы (synchronized вызывает IdentityException).
- могут быть скаляризованы (разложены на поля без выделения памяти) или выровнены в массивах и полях (данные хранятся плотно и последовательно).
Синтаксис подразумевает использование нового ключевого слова "value":
value class Point {
final int x;
final int y;
Point(int x, int y) { this.x = x; this.y = y; }
}
В данном примере "Point[]" теперь может хранить значения напрямую, а не ссылки на объекты.
|