Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект Valhalla будет включён в основную ветку JDK

01.08.2026 21:42 (MSK)

Лоис Фолтан (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[]" теперь может хранить значения напрямую, а не ссылки на объекты.

  1. Главная ссылка к новости (https://www.jvm-weekly.com/p/p...)
  2. OpenNews: Выпуск Java SE 26 и OpenJDK 26. Проект по интеграции поддержки JavaScript и Python в JVM
  3. OpenNews: Выпуск Java SE 25 LTS и OpenJDK 25
  4. OpenNews: Доступна платформа Jakarta EE 11, продолжающая развитие Java EE
  5. OpenNews: Выпуск Java SE 24 и OpenJDK 24
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66010-java
Ключевые слова: java, jdk
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 21:46, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    круто.
     
     
  • 2.14, Аноним (14), 23:25, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Только а зачем, если на уровне компилятора можно было отлавливать все что можно оптимизировать и обрабатывать под капотом? А для валидаций в java и без этого много инструментов.
     
     
  • 3.58, Аноним (58), 14:04, 02/08/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.19, Аноним (19), 23:48, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Они изобрели паскалевский record!
     
     
  • 3.55, Аноним (55), 12:46, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, у них генерики всё ещё упаковываются в object или уже победили?
    Смешно было, когда «отсталый клон от мелкомягких» уже на версии три обходил по куче аспектов, а с четвёрки ушёл в отрыв.
    (потом пришли индусы-явисты и всё скатилось, но это уже другая история)
     
     
  • 4.59, Аноним (58), 14:08, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обратная совместимость в java - это не шутки. У меня до сих пор есть код, который под Java 1.4 написан. И работает же, не требует переписывать.

    Поэтому когда mircosoft сделал с нуля что-то похожее, он смог отбросить неактуальные ограничения. К сожалению, отбросил он и необходимые ограничения тоже, поэтому не майкрософт не смогли родить кросс-платформенное решение в отличие от джавы. Мелкомягкие даже аналог JCK родить не смогли. То есть не смогли стать ничем серьёзным, ограничившись своей платформой с кучей несовместимостей.

     

  • 1.3, Аноним (3), 21:52, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    fyi 12 лет разрабатывают.
     
     
  • 2.7, Dzen Python (ok), 22:03, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ну, зато достаточно стабильно для прода
     

  • 1.4, trolleybus (ok), 21:53, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Создатели явы изобрели структуры... Скоро перегрузку операторофф придумают
     
     
  • 2.6, Аноним (6), 22:02, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не изобрели. Point из трёх интов будет ссылкой
     
     
  • 3.16, Аноним (16), 23:33, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    и плевать, что прямо в новости написано "В данном примере "Point[]" теперь может хранить значения напрямую, а не ссылки на объекты. "
     
     
  • 4.24, Аноним (6), 01:30, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Поинт из двух тестов да, а из трёх - нет. Атомарность при изменении объекта в джаве ломать не будут.
     
     
  • 5.25, Аноним (6), 01:30, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Интов, а не тестов, блин.
     
     
  • 6.52, Аноним (52), 12:10, 02/08/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.32, morphe (?), 03:57, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Там лимит 64 бита для прямого хранения

    Для того чтобы из нескольких потоков можно было переписывать элемент массива и при этом не получалось data race когда одно поле внутри Point переписало, а второе нет - они требуют чтобы такие записи были атомарные, а атомарно больше 64 бит писать нельзя

     
     
  • 5.33, morphe (?), 03:59, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При этом на платформах что не могут атомарно писать 64 бита, например x32... Лимит будет ограничен 32 битами. Ну, хоть Integer[] оптимизирован будет.
     
     
  • 6.46, Смузихеб забывший пароль (?), 10:20, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 64 бита ... Лимит будет ограничен 32 битами

    Вот это отлично и просто замечательно. Максимально платформонезависимо

     
     
  • 7.65, morphe (?), 16:01, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот это отлично и просто замечательно. Максимально платформонезависимо

    Так это ж просто оптимизация а не то на что ты можешь реально полагаться)

     
  • 5.34, Аноним (16), 05:14, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > для того чтобы из нескольких потоков можно было переписывать элемент массива и при этом не получалось data race когда одно поле внутри Point переписало, а второе нет

    Чел, попытайся читать не пятой точкой. Тебе прямо в первом предложении сказано "Introduce value objects, which are immutable". Ты понимаешь, что такое immutable?

     
     
  • 6.37, morphe (?), 06:09, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Чел, попытайся читать не пятой точкой. Тебе прямо в первом предложении сказано
    > "Introduce value objects, which are immutable". Ты понимаешь, что такое immutable?

    Я говорю не про изменение поля внутри Point, а изменение элемента массива Point[]

    ...Что реализовано атомарным переписыванием всех полей

     
  • 3.18, penetrator (?), 23:41, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В данном примере "Point[]" теперь может хранить значения напрямую, а не ссылки на объекты.
     
     
  • 4.27, Аноним (6), 02:34, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В данном да
    https://openjdk.org/jeps/401
    >Reference flattening must maintain the integrity of data. A flattened reference must always be read and written atomically, or it could become corrupted. On common hardware architectures, this limits the size of mutable fields that store flattened references to no more than 64 bits.
     
  • 2.8, Dzen Python (ok), 22:04, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Украли у 1С, ужас
     
     
  • 3.10, Аноним (10), 22:33, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а те к бэсика с паскалем, получается что тое у бэсика с паскалем
     
  • 2.36, Аноним (36), 05:53, 02/08/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.44, Анонисссм (?), 10:02, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Создатели явы изобрели структуры.

    по факту это всё было много лет в лице подключаемых одной строчкой fastutils, колобок итд

     

  • 1.5, slavanap (?), 21:56, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Добро пожаловать к C# struct.
     
     
  • 2.20, Brian (?), 23:52, 01/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только как обычно в Java этим без слоя гов/del ломбока пользоваться невозможно будет, за нормальным апи придется опять в котлен идти
     
     
  • 3.47, Смузихеб забывший пароль (?), 10:22, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > в котлен идти

    как будто что-то плохое. Джава не-курильщика

     

  • 1.9, _ (??), 22:09, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Имитация жизни.
     
  • 1.15, Аноним (15), 23:27, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    ну вот и нормальная реализация потихоньку выходит на сцену. не корявая наколенка типа сишарп стракт. всётаки джава оперирует баблом всего мира
     
     
  • 2.28, Илья (??), 02:37, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  не корявая наколенка типа сишарп стракт

    скорее наоборот. в дотнете виртуальная машина планировалась под структутры и дженерики, и там всё это уже лет 20 есть

     

  • 1.17, zionist (ok), 23:41, 01/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Теперь вместо раздувания по heap памяти получим раздувание по CPU и по стеку. Когда миллионы жабодевелоперов с непривычки начнут передавать value слассы куда угодно, то есть станут приумнажать копирование данных.
     
     
  • 2.45, Анонисссм (?), 10:04, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >получим раздувание по CPU и по стеку

    очередная экспертиза попеннета.


    Это огромная разница для:

    CPU cache;
    SIMD;
    скорости обхода.
    4. Меньше cache misses ⭐⭐⭐⭐☆


     
     
  • 3.57, zionist (ok), 13:47, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >>получим раздувание по CPU и по стеку
    > очередная экспертиза попеннета.

    А что не так в том, что я сказал?

    > Это огромная разница для:
    >
    > CPU cache;
    > SIMD;
    > скорости обхода.
    > 4. Меньше cache misses ⭐⭐⭐⭐☆

    Это всё хорошо, но в бэкэнде обычно просто данные переносят для обработки от туда сюда и обратно. Как тебе тут помогут CPU cache и прочие SIMD, если value классами начнут пользоваться бездумно где только можно?

     
  • 2.53, Аноним (52), 12:11, 02/08/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.21, Аноним (21), 00:03, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Тот самый момент, когда ребята, которые хвалились какие у них классные интерпретируемые/VM-языки, начинают заново изобретать велосипед, т.е. простые типы из компилируемых языков. Ибо так тупо оптимальнее.
     
  • 1.22, Аноним (22), 00:43, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    В оракле только пока ещё видимо не поняли что ничегл кроме раста не нужно. Всё, что сейчач написано на жаве может быть написано на расте и работать сильно лучше.
     
     
  • 2.23, Аноним (19), 01:10, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну это как советовать перейти с мяса на колбасу.
     
     
  • 3.42, ПомидорИзДолины (?), 09:19, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С переморожкнного мяса на свежую фермерскую колбасу.
     
  • 3.48, Смузихеб забывший пароль (?), 10:24, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    с соевого подпорченного мяса на пельмени но без мяса
     
  • 2.26, Аноним (15), 02:00, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    помнится судо на раст аккуратно переписывали и выявилась куча багов.
     
  • 2.30, Аноним (30), 02:52, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Джава гораздо безопаснее раста.
     
     
  • 3.31, Аноним (31), 03:54, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Джава "гораздо безопаснее" какого-нибудь C++. По сравнению с растом она только чуть-чуть более безопасна, но плата за это чуть-чуть - гигантская. Хреновый расход памяти, хреновая производительность, постоянное таскание JRE с собой, хреновая система типов, низкокачественная экосистема библиотек, и так далее.
     
     
  • 4.39, iZEN (ok), 08:21, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Для компиляции и сборки Rust 1.97 на FreeBSD не хватает 32 ГБ оперативной памяти, процесс сборки лезет в SWAP.
    Для компиляции и сборки OpenJDK 26 достаточно 4 ГБ ОЗУ.
    И что из них считается bloatware?
     
     
  • 5.43, Аноним (-), 09:41, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    До этих не достучаться. Сами придумали что раст - серебряная пуля, панацея. Сами в это поверили... ведут себя как откровенные фанатики. Вот уж действительно маркер здравого смысла!
     
  • 5.60, Аноним (60), 14:42, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем их компилировать самому? В дистрибутиве нет разве?
     
  • 2.50, Человек обыкновенный (?), 11:18, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Сейчас нейронки делают на Си то, ради чего руст придумали, и при этом с нулевыми затратами времени выполнения. Современные нейронки сделали старинный Си опять актуальным.
     
     
  • 3.56, Аноним (3), 13:12, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если уж на то пошло, то к такому коду ты не можешь притронуться своей рукой, а то опять дырка получится. Понять его тоже не так просто бывает.
    Вот и получается, что уже и не важно на чем написано, хоть на asm. Нейронка написала - нейронка будет рефакторить несколько версий спустя (версий самой нейронки).
     
  • 3.62, Вася Пупкин (?), 14:52, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Согласен, в принципе Раст уже не нужен, пишешь на С а нейронки все проверят, сразу скажут где баги
     
     
  • 4.66, BunRustZigBuzCruller (?), 16:17, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Пупкинз, зачем писать на С с помощью ИИ, когда можно на Расте?
     

  • 1.29, Илья (??), 02:48, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как реализованы дженерики с структурами?
    При каких условиях будет упаковка?

    Столько неудобных вопросиков, на которые разработчики сишарпа отвечали ДО разработки языка

     
  • 1.49, Смузихеб забывший пароль (?), 10:27, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "не имеют идентичности (в отличие от обычных объектов, два экземпляра с одинаковыми полями считаются равными)"
    -Мы сделали максимально громоздко, сложно, зато типо секурно и теперь - да, срочно допиливаем чтобы было просто ведь сильно секурно не получилось )
     
  • 1.51, Аноним (51), 11:33, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кода уже в яве указатели появятся
     
     
  • 2.61, Вася Пупкин (?), 14:50, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они с самого начала в языке, пример:

    List list = new ArrayList();

    list <----- это указатель на кусок ОЗУ в котором хранится непосредственно ArrayList

     
     
  • 3.67, анонец (?), 16:27, 02/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Скорей всего, он имел в виду адресную арифметику, как в Си
     

  • 1.63, Аноним (63), 15:22, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скучаю по временам, когда меня волновали подобные изменения. Теперь против своей воли (чтобы меня рыночек не порешал) использую ии агент, и уже не думаю о таких мелочах. А хотелось бы как раньше
     
  • 1.64, BunRustZigBuzCruller (?), 15:37, 02/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вовремя я сбежал на TypeScript.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру