openjdk.ruOpenJDK на русском

Проект Valhalla

Проект Valhalla дополняет объектную модель Java возможностью Value Objects (объекты-значения), сочетая абстракции объектно-ориентированного программирования с производительностью простых примитивов.

Спонсор проекта — HotSpot Group.

Что нового?

Август 2026:

JEP 401: Value Objects (Preview (предварительная версия)) и JEP 539: Strict Field Initialization (строгая инициализация полей) in the JVM (Preview) интегрированы и войдут в JDK 28! Попробуйте Value Objects уже сегодня в сборке Early Access (ранний доступ) JDK 28.

Для знакомства с темой можно прочитать JEP или посмотреть это краткое введение. Более широкий контекст даёт доклад с JavaOne о программировании с неизменяемыми данными в Java.

Новые возможности

Ожидаемые языковые возможности и улучшения производительности Valhalla появятся не одновременно, а постепенно, в виде последовательных улучшений в нескольких выпусках JDK.

В разработке находятся пять отдельных групп возможностей:

  1. Value Objects: объекты без Identity (идентичность объекта), которые благодаря этому могут иметь оптимизированное представление

  2. Null-Restricted Storage для Value Objects, чтобы улучшить размещение в памяти

  3. Улучшения массивов: поддержка таких свойств, как неизменяемость и безопасная инициализация, а также упрощение взаимодействия между массивами примитивов и массивами ссылок

  4. Объединение примитивов и классов: более удобная упаковка (boxing) при вызовах методов и в обобщённых типах, а также расширение возможностей вроде преобразований и операторов на Value Classes (классы-значения)

  5. Parametric JVM: специализация и оптимизация параметризаций обобщённых классов и методов во время выполнения

Справочные документы и доклады

Эти документы и доклады дают более целостное представление о целях проекта Valhalla и соображениях, лежащих в основе его дизайна.

Реализация

JEP 401: Value Objects (Preview) и JEP 539: Strict Field Initialization in the JVM (Preview) интегрированы в JDK и войдут в JDK 28.

Заинтересованным разработчикам предлагается поэкспериментировать со сборками Early Access по адресу https://jdk.java.net/28/.

Прототипы других возможностей находятся в различных ветках репозитория Valhalla на GitHub.

Сообщество

  • Участники

  • Рассылки

    • valhalla-dev (архив) — для технических обсуждений и опыта пользователей, связанных с проектом Valhalla

    • valhalla-spec-experts — для модерируемого обсуждения дизайна среди приглашённых экспертов (архив)

    • valhalla-spec-observers — для тех, кто хочет следить за обсуждениями в рассылке valhalla-spec-experts; публичные ответы разрешены, но в рассылку экспертов не пересылаются (архив)

    • valhalla-spec-comments — для отправки экспертной группе комментариев, предложений и других отзывов о спецификации (архив)

  • Репозиторий документации (через него можно обновить эту страницу!)

Мы рады отзывам заинтересованных Java-разработчиков. Учтите, что большинство теоретических идей за последние несколько лет уже хорошо изучено! Больше всего помогут те, кто опробует опубликованные реализации и сможет поделиться опытом их применения на реальных кодовых базах.

JEP проекта

Каждое улучшение платформы Java описывается и отслеживается с помощью JDK Enhancement Proposal (JEP). Следующие JEP находятся в активной разработке или уже выпущены.

JEP Возможность Статус
JEP 401: Value Objects (Preview)
Value Objects, версия Preview
Value Objects Integrated (интегрирован)
JEP 539: Strict Field Initialization in the JVM (Preview)
Strict Field Initialization в JVM, версия Preview
Дополнительные Integrated
Null-Restricted Value Class Types (Preview)
Null-Restricted Types (типы, запрещающие null) для value-классов (Preview)
Null-Restricted Storage Draft (черновик)
JEP 402: Enhanced Primitive Boxing (Preview)
Улучшенная упаковка примитивных значений (Preview)
Объединение примитивов Draft
JEP 390: Warnings for Value-Based Classes
Предупреждения для value-based-классов
Value Objects Выпущен в 16
JEP 371: Hidden Classes
Hidden-классы (скрытые классы)
Дополнительные Выпущен в 15
JEP 334: JVM Constants API
API для описания констант JVM
Дополнительные Выпущен в 12
JEP 309: Dynamic Class-File Constants
Динамические константы class-файлов
Дополнительные Выпущен в 11
JEP 181: Nest-Based Access Control
Управление доступом на основе nest
Дополнительные Выпущен в 11