Project Valhalla, экспериментальный проект OpenJDK по исследованию и разработки основных новых языковых функций для Java 10 и последующих версий, предусматривает поэтапное внедрение объектов-значений и примитивных объектов, а также объединение их с базовыми примитивами.
В целом, амбициозный проект призван устранить существующий разрыв между примитивами и объектами. Три ключевых тезиса, которые в декабре 2021 года прозвучали в блоге «Состояние Valhalla» архитектора языка Java в Oracle Брайана Гетца, описаны в документе JDK Enhancement Proposals (JEP), находящемся в настоящее время на рассмотрении в сообществе OpenJDK. Три этих тезиса предусматривают:
— Создание объектов-значений, которые улучшили бы объектную модель Java с помощью экземпляров классов, имеющих только поля конечного экземпляра и не имеющих идентификатора объекта.
— Появление примитивных объектов, улучшающих объектную модель Java за счет примитивных объектов, объявляемых пользователем.
— Объединение базовых примитивов и объектов.
Проект Valhalla, реализация которого началась в 2014 году, должен привнести в языки на основе JVM более гибкие, унифицированные типы данных, обеспечив соответствие модели программирования характеристикам производительности современного оборудования. В последних сообщениях, появившихся в блоге, который состоит из трех частей – «Путь к Valhalla», «Языковая модель» и «Состояние Valhalla» – описаны следующие цели:
— План в отношении обобщений предусматривает создание универсальных и специализированных обобщений.
— Объединение примитивов и объектов, благодаря чему примитивные типы можно будет объявлять в виде классов с сохранением особых характеристик примитивов на этапе выполнения.
— Перевод в JDK многих классов, основанных на значениях, в классы-значения.
— Ввод форматов данных, в большей степени соответствующих производительности современного оборудования, с предоставлением разработчикам Java упрощенного способа кэширования и уплотненного размещения в памяти без ущерба для абстракции и безопасности типов.
Проект Valhalla финансируется группой HotSpot Group, в состав которой входят разработчики, участвующие в проектировании, внедрении и поддержке виртуальной машины Java HotSpot. В проекте уже дана оценка классам на основе значений, появившимся в версии Java 16, выпуск которой состоялся в марте 2021 года.