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

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



"Проект Valhalla будет включён в основную ветку JDK"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект Valhalla будет включён в основную ветку JDK"  +/
Сообщение от opennews (??), 01-Авг-26, 21:45 
Лоис Фолтан (Lois Foltan) из компании Oracle  подтвердила, что реализация предложения JEP 401 ("Value Classes and Objects") будет интегрирована в основной репозиторий OpenJDK и запланирована для включение в релиз JDK 28, намеченный на март 2027 года, в качестве отключённой по умолчанию экспериментальной функции...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=66010

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

2. Сообщение от Аноним (2), 01-Авг-26, 21:46   +3 +/
круто.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14, #19

3. Сообщение от Аноним (3), 01-Авг-26, 21:52   +5 +/
fyi 12 лет разрабатывают.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7

4. Сообщение от trolleybus (ok), 01-Авг-26, 21:53   +19 +/
Создатели явы изобрели структуры... Скоро перегрузку операторофф придумают
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6, #8, #36, #44

5. Сообщение от slavanap (?), 01-Авг-26, 21:56   +4 +/
Добро пожаловать к C# struct.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20

6. Сообщение от Аноним (6), 01-Авг-26, 22:02   +1 +/
Не изобрели. Point из трёх интов будет ссылкой
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #16, #18

7. Сообщение от Dzen Python (ok), 01-Авг-26, 22:03   +7 +/
Ну, зато достаточно стабильно для прода
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

8. Сообщение от Dzen Python (ok), 01-Авг-26, 22:04   –2 +/
Украли у 1С, ужас
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #10

9. Сообщение от _ (??), 01-Авг-26, 22:09   +4 +/
Имитация жизни.
Ответить | Правка | Наверх | Cообщить модератору

10. Сообщение от Аноним (10), 01-Авг-26, 22:33   +1 +/
а те к бэсика с паскалем, получается что тое у бэсика с паскалем
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

14. Сообщение от Аноним (14), 01-Авг-26, 23:25   –6 +/
Только а зачем, если на уровне компилятора можно было отлавливать все что можно оптимизировать и обрабатывать под капотом? А для валидаций в java и без этого много инструментов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #58

15. Сообщение от Аноним (15), 01-Авг-26, 23:27   –3 +/
ну вот и нормальная реализация потихоньку выходит на сцену. не корявая наколенка типа сишарп стракт. всётаки джава оперирует баблом всего мира
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #28

16. Сообщение от Аноним (16), 01-Авг-26, 23:33   +4 +/
и плевать, что прямо в новости написано "В данном примере "Point[]" теперь может хранить значения напрямую, а не ссылки на объекты. "
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #24, #32

17. Сообщение от zionist (ok), 01-Авг-26, 23:41   –4 +/
Теперь вместо раздувания по heap памяти получим раздувание по CPU и по стеку. Когда миллионы жабодевелоперов с непривычки начнут передавать value слассы куда угодно, то есть станут приумнажать копирование данных.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #45

18. Сообщение от penetrator (?), 01-Авг-26, 23:41   –1 +/
> В данном примере "Point[]" теперь может хранить значения напрямую, а не ссылки на объекты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #27

19. Сообщение от Аноним (19), 01-Авг-26, 23:48   +17 +/
Они изобрели паскалевский record!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #55

20. Сообщение от Brian (?), 01-Авг-26, 23:52   –1 +/
Только как обычно в Java этим без слоя гов/del ломбока пользоваться невозможно будет, за нормальным апи придется опять в котлен идти
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #47

21. Сообщение от Аноним (21), 02-Авг-26, 00:03   +6 +/
Тот самый момент, когда ребята, которые хвалились какие у них классные интерпретируемые/VM-языки, начинают заново изобретать велосипед, т.е. простые типы из компилируемых языков. Ибо так тупо оптимальнее.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #114

22. Сообщение от Аноним (22), 02-Авг-26, 00:43   –10 +/
В оракле только пока ещё видимо не поняли что ничегл кроме раста не нужно. Всё, что сейчач написано на жаве может быть написано на расте и работать сильно лучше.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #23, #26, #30, #50, #82

23. Сообщение от Аноним (19), 02-Авг-26, 01:10   +2 +/
Ну это как советовать перейти с мяса на колбасу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #42, #48

24. Сообщение от Аноним (6), 02-Авг-26, 01:30   +/
Поинт из двух тестов да, а из трёх - нет. Атомарность при изменении объекта в джаве ломать не будут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #25

25. Сообщение от Аноним (6), 02-Авг-26, 01:30   +/
Интов, а не тестов, блин.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

26. Сообщение от Аноним (15), 02-Авг-26, 02:00   –1 +/
помнится судо на раст аккуратно переписывали и выявилась куча багов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

27. Сообщение от Аноним (6), 02-Авг-26, 02:34   +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.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

28. Сообщение от Илья (??), 02-Авг-26, 02:37   +1 +/
>  не корявая наколенка типа сишарп стракт

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

29. Сообщение от Илья (??), 02-Авг-26, 02:48   +/
Как реализованы дженерики с структурами?
При каких условиях будет упаковка?

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #108

30. Сообщение от Аноним (30), 02-Авг-26, 02:52   +1 +/
Джава гораздо безопаснее раста.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #31, #78

31. Сообщение от Аноним (31), 02-Авг-26, 03:54   –5 +/
Джава "гораздо безопаснее" какого-нибудь C++. По сравнению с растом она только чуть-чуть более безопасна, но плата за это чуть-чуть - гигантская. Хреновый расход памяти, хреновая производительность, постоянное таскание JRE с собой, хреновая система типов, низкокачественная экосистема библиотек, и так далее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #39

32. Сообщение от morphe (?), 02-Авг-26, 03:57   +3 +/
Там лимит 64 бита для прямого хранения

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #33, #34

33. Сообщение от morphe (?), 02-Авг-26, 03:59   +1 +/
При этом на платформах что не могут атомарно писать 64 бита, например x32... Лимит будет ограничен 32 битами. Ну, хоть Integer[] оптимизирован будет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #46

34. Сообщение от Аноним (16), 02-Авг-26, 05:14   +/
> для того чтобы из нескольких потоков можно было переписывать элемент массива и при этом не получалось data race когда одно поле внутри Point переписало, а второе нет

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #37

36. Сообщение от Аноним (36), 02-Авг-26, 05:53    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

37. Сообщение от morphe (?), 02-Авг-26, 06:09   +/
> Чел, попытайся читать не пятой точкой. Тебе прямо в первом предложении сказано
> "Introduce value objects, which are immutable". Ты понимаешь, что такое immutable?

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #71

39. Сообщение от iZENemail (ok), 02-Авг-26, 08:21   +5 +/
Для компиляции и сборки Rust 1.97 на FreeBSD не хватает 32 ГБ оперативной памяти, процесс сборки лезет в SWAP.
Для компиляции и сборки OpenJDK 26 достаточно 4 ГБ ОЗУ.
И что из них считается bloatware?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #43, #60, #112, #113

42. Сообщение от ПомидорИзДолины (?), 02-Авг-26, 09:19   –2 +/
С переморожкнного мяса на свежую фермерскую колбасу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

43. Сообщение от Аноним (-), 02-Авг-26, 09:41   +/
До этих не достучаться. Сами придумали что раст - серебряная пуля, панацея. Сами в это поверили... ведут себя как откровенные фанатики. Вот уж действительно маркер здравого смысла!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

44. Сообщение от Анонисссм (?), 02-Авг-26, 10:02   +1 +/
>Создатели явы изобрели структуры.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

45. Сообщение от Анонисссм (?), 02-Авг-26, 10:04   +1 +/
>получим раздувание по CPU и по стеку

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


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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #57

46. Сообщение от Смузихеб забывший пароль (?), 02-Авг-26, 10:20   +3 +/
> 64 бита ... Лимит будет ограничен 32 битами

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #65, #77

47. Сообщение от Смузихеб забывший пароль (?), 02-Авг-26, 10:22   –1 +/
> в котлен идти

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

48. Сообщение от Смузихеб забывший пароль (?), 02-Авг-26, 10:24   –2 +/
с соевого подпорченного мяса на пельмени но без мяса
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

49. Сообщение от Смузихеб забывший пароль (?), 02-Авг-26, 10:27   +/
"не имеют идентичности (в отличие от обычных объектов, два экземпляра с одинаковыми полями считаются равными)"
-Мы сделали максимально громоздко, сложно, зато типо секурно и теперь - да, срочно допиливаем чтобы было просто ведь сильно секурно не получилось )
Ответить | Правка | Наверх | Cообщить модератору

50. Сообщение от Человек обыкновенный (?), 02-Авг-26, 11:18   +1 +/
Сейчас нейронки делают на Си то, ради чего руст придумали, и при этом с нулевыми затратами времени выполнения. Современные нейронки сделали старинный Си опять актуальным.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #56, #62

51. Сообщение от Аноним (51), 02-Авг-26, 11:33   +/
Кода уже в яве указатели появятся
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #61, #88, #105

55. Сообщение от Аноним (55), 02-Авг-26, 12:46   +/
Интересно, у них генерики всё ещё упаковываются в object или уже победили?
Смешно было, когда «отсталый клон от мелкомягких» уже на версии три обходил по куче аспектов, а с четвёрки ушёл в отрыв.
(потом пришли индусы-явисты и всё скатилось, но это уже другая история)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #59, #73

56. Сообщение от Аноним (3), 02-Авг-26, 13:12   –1 +/
Если уж на то пошло, то к такому коду ты не можешь притронуться своей рукой, а то опять дырка получится. Понять его тоже не так просто бывает.
Вот и получается, что уже и не важно на чем написано, хоть на asm. Нейронка написала - нейронка будет рефакторить несколько версий спустя (версий самой нейронки).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

57. Сообщение от zionist (ok), 02-Авг-26, 13:47   +/
>>получим раздувание по CPU и по стеку
> очередная экспертиза попеннета.

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #70, #76

58. Сообщение от Аноним (58), 02-Авг-26, 14:04   +/
Потому и нужно, что на уровне комплиятора не решить проблему. В Java большая часть функциональности - это JVM. Да, комплиятор может приукрасить, скрыть сложности, но принципы хранения данных опеределяет сама JVM. И если у неё нет подходящих фич, то хоть выворачивай компилятор наизнанку - он ничего поделать не сможет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

59. Сообщение от Аноним (58), 02-Авг-26, 14:08   +6 +/
Обратная совместимость в java - это не шутки. У меня до сих пор есть код, который под Java 1.4 написан. И работает же, не требует переписывать.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #123

60. Сообщение от Аноним (60), 02-Авг-26, 14:42   +2 +/
А зачем их компилировать самому? В дистрибутиве нет разве?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

61. Сообщение от Вася Пупкин (?), 02-Авг-26, 14:50   +1 +/
Они с самого начала в языке, пример:

List list = new ArrayList();

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #67

62. Сообщение от Вася Пупкин (?), 02-Авг-26, 14:52   +1 +/
Согласен, в принципе Раст уже не нужен, пишешь на С а нейронки все проверят, сразу скажут где баги
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #66, #79

63. Сообщение от Аноним (63), 02-Авг-26, 15:22   –1 +/
Скучаю по временам, когда меня волновали подобные изменения. Теперь против своей воли (чтобы меня рыночек не порешал) использую ии агент, и уже не думаю о таких мелочах. А хотелось бы как раньше
Ответить | Правка | Наверх | Cообщить модератору

64. Сообщение от BunRustZigBuzCruller (?), 02-Авг-26, 15:37   –3 +/
Вовремя я сбежал на TypeScript.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #109

65. Сообщение от morphe (?), 02-Авг-26, 16:01   +1 +/
> Вот это отлично и просто замечательно. Максимально платформонезависимо

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

66. Сообщение от BunRustZigBuzCruller (?), 02-Авг-26, 16:17   –3 +/
Пупкинз, зачем писать на С с помощью ИИ, когда можно на Расте?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #68

67. Сообщение от анонец (?), 02-Авг-26, 16:27   +/
Скорей всего, он имел в виду адресную арифметику, как в Си
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #69, #74

68. Сообщение от Вася Пупкин (?), 02-Авг-26, 18:10   +2 +/
Зачем вообще нужен Раст если есть С ???? Языку С уже более 50 лет, мало ИТ технологии так долго живут, С очень прост поэтому и выжил, Раст сложен
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66 Ответы: #80, #91

69. Сообщение от Вася Пупкин (?), 02-Авг-26, 18:11   +/
В таком случае вместо Явы лучше С++ использовать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67 Ответы: #97

70. Сообщение от Анонисссм (?), 02-Авг-26, 18:13   +/
>>>получим раздувание по CPU и по стеку
> А что не так в том, что я сказал?
> Это всё хорошо, но в бэкэнде обычно

что сделал не так - приплел бэк на последнем шаге. на java даже и субд пишут и много чего не из крудошлепства.
chatGPT кстати вполне делает оценку какие задачи и на сколько ускорятся и насколько меньше ОЗУ будут жрать.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

71. Сообщение от erifferfre (?), 02-Авг-26, 18:36   +/
Там сплющивание массивов в принципе работает? Когда я в последний раз смотрел "new Point[]" создавал обычный массив с ссылками и нужно было использовать какое-то другое апи.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #75

73. Сообщение от erifferfre (?), 02-Авг-26, 18:41   –1 +/
Конечно упаковываются :)

В этом случае оптимизироваться будет только "Point[]" (а может и не будет, как карта ляжет) а "ArrayList<Point>" и прочие дженерик коллекции будут как раньше боксить и хранить указатели.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

74. Сообщение от Анонимemail (74), 02-Авг-26, 18:41   +/
Адресная арифметика? В жабе? Щитоблджад? На кой ляг оно там вообще надо?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67

75. Сообщение от morphe (?), 02-Авг-26, 19:00   +/
> Там сплющивание массивов в принципе работает? Когда я в последний раз смотрел
> "new Point[]" создавал обычный массив с ссылками и нужно было использовать
> какое-то другое апи.

Работает если Point - 64 бита

Однако там ещё null arrays какие-то есть, которые лимит 63 бита имеют... Однако я так понял оно на уровне языка недоступно

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71

76. Сообщение от Аноним (76), 02-Авг-26, 20:01   +/
Ты бы JEP хотя бы сам прочитал что ли и мотивацию всех этих приседаний. Там изначально постулируют, что цель всей этой катавасии длиной в 14 лет - это heap flattening. Ничего про аллокацию на стеке. Джава это и так умеет делать уже лет 10 как через escape analysis. Проблемой было то, что вся память в джаве - это огромная куча указателей в heap, и любой существующий на данный момент софт на джаве страдает от 2 вещей: 1) существующие сборщики мусора в jvm тратят много ресурсов на переадресацию указателей при дефрагментации кучи (компактификация) 2) сам механизм текущей работы JVM на основе ссылок порождает pointer chasing, что даёт тормоза просто при обращении через геттер к любому объекту внутри класса-обертки.
К слову, в том же Go объекты изначально были "плоскими", поэтому прекрасно живут с простым трехцветным сборщиком мусора, придуманным ещё Дийкстрой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #85, #119

77. Сообщение от Вася Пупкин (?), 02-Авг-26, 21:48   +1 +/
write once, debug everywhere
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

78. Сообщение от Вася Пупкин (?), 02-Авг-26, 21:54   +/
ага, как же.. скажи это тредобезопасному коду, который валидируется растом на этапе компиляции
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #86

79. Сообщение от Настоящий Вася Пупкин (?), 02-Авг-26, 21:57   +/
на расте токенов будет в 10ки раз меньше сжигаться, потому как более выразительно и больше контекста и ограничений на программу. плюс понятные хинты компилятора как править ошибки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #84

80. Сообщение от Настоящий Вася Пупкин (?), 02-Авг-26, 22:01   –1 +/
С выжил потому что очень нужен был в свое время как переносимый ассемблер. Сейчас время прошло и люди переосознали многие подходы и практики. Плюс компьютеры стали куда мощнее и способны выполнять больше работы за людей(и надежнее). Кто это не осознает - самый настоящий луддит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

81. Сообщение от Анимешник за 30 (-), 03-Авг-26, 00:02   +2 +/
Чёт не вкуриваю, нафига это надо. Возможностей Java 8 выше крыши для любого проекта, а докинуть фич можно через сторонние либы. Лучше бы прокачивали саму жаву-машину, а не занимались всякой дичью.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #94, #98, #99

82. Сообщение от Анимешник за 30 (-), 03-Авг-26, 00:04   –1 +/
Python хватит для 99% юзерспейсных программ, держу в курсе
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #92, #93

84. Сообщение от Анимешник за 30 (-), 03-Авг-26, 00:08   +/
Тем кто пишет коммерческий код наплевать на токены, за у них эксклюзивные соглашения с ai компаниями. Всякие васи пупкины со своими хеллоувротами никого не волнуют.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #96

85. Сообщение от zionist (ok), 03-Авг-26, 03:00   +/
Я говорил про бездумное использование value классов, а не для чего их предлагают использовать в JEP.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76 Ответы: #102

86. Сообщение от Аноним (86), 03-Авг-26, 04:33   +/
Ну такие себе гарантии если честно. Не в смысле плохие, а в смысле - мы тебе это гарантировали путем наложения жестких ограничений, которые даже валидный тред-сейф могут не допустить просто потому-что компилятор не может  это вычислить в компайлтайме.
Типичный пример из геймдева - ECS. Любой уважающий себя ecs фреймворк умеющий в многопоточность автоматически понимает что и где можно параллелить потому-что сам выстраивает граф зависимостей систем и их компонент, но полноценно эту инфу можно собрать только в рантайме, но раст то требует гарантий в компайлтайм, а потому увы, иди-ка, дружок, подключай unsafe.
В дотнете есть замечательный акторный фреймворк Orleans, для создания распределенных систем, где многопоточность решена опять же на уровне фреймворка и общение между акторами (грейнами) само по себе потокобезопасно (за счет внутренних очередей) и ты пишешь код в классическом однопоточном стиле.
Да и без всего вышеперечисленного за свою жизнь написал тонны многопоточного кода что на c++ что на c#. И 99.99% возможных проблем ловилось, вы не поверите, банальным написанием тестов.
И вот поэтому я считаю все эти "гарантии потокобезопасности" раста оверхайпом. Зачем добровольно ограничивать себя рамками заданными примитивным компилятором? Лень написать несколько дополнительных тестов? Это же смешно, особенно в эпоху ИИ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #95, #120

87. Сообщение от хрю (?), 03-Авг-26, 05:06   +1 +/
бессмысленная для типичного применения явы фигня. во времена java me это имело смысл, а чичас нет.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #100

88. Сообщение от Аноним (88), 03-Авг-26, 05:11   +/
Чтобы можно было выходить за границы и делать всякие use after free вместе с double free?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

89. Сообщение от Аноним (89), 03-Авг-26, 07:19   +/
я один вижу обычный сахар для упакованной структуры с нативный integer?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #101, #106

91. Сообщение от Анон1110м (?), 03-Авг-26, 09:44   +/
Pascal лучше C и Rust вместе взятых.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68 Ответы: #104, #115

92. Сообщение от Анон1110м (?), 03-Авг-26, 09:47   +/
И они будут подтормаживать, занимать много процессорноого времени и в некоторых случаях тянуть зависимостей на сотни мегабайт. Проверено за то время что я пользовался Linux. Deluge и Gajim там всякие.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82

93. Сообщение от Аноним (93), 03-Авг-26, 09:58   +/
99% пользователей не хотят юзерспейс на питоне.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82

94. Сообщение от Аноним (93), 03-Авг-26, 10:00   +/
Чтобы усложнить спеку, создать несовместимости и тд. Чистый EEE.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

95. Сообщение от Вася Пупкин (?), 03-Авг-26, 10:09   +1 +/
Комптлятор это замена тестов, а помощник и их дополнение. Притом что тесты совсем не гарантируют корректность всех возможных веток исполнения, а очевидно только тех, что есть в тестах.
Да, класс программ, которые можно написать на ржавом меньше, но многие считают это приемлемой платой. Плюс есть побочный эффект об обязательности осмысления структуры программы. Неявно в плюсах и жабе ты также поддерживаешь похожие инварианты, но тут это проще - ща тебя их проверят компилятор.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

96. Сообщение от Вася Пупкин (?), 03-Авг-26, 10:15   +/
Разброс компаний колоссальный. Но даже весь крупнейший российский бигтех лимиты выставляет. Потому как там особенно хорошо умеют считать деньги
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

97. Сообщение от Вася Пупкин (?), 03-Авг-26, 10:17   +/
s/C++/rust/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

98. Сообщение от Вася Пупкин (?), 03-Авг-26, 10:21   +/
Потому что не осознают что нейрокод на расте и простихоспади го - работает искаропки сильно быстрее. пытаются хоть тут не проиграть гонку. И по итогу вместо накопленных сбоку вот таких вот "фич" проще будет нативно на раст переходить
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

99. Сообщение от Анонимущий (?), 03-Авг-26, 10:25   +/
Это и есть прокачка джава машины. Ты что, думаешь они новых ключевых слов накидали тупо, которые просто в тот же байткод будут компилироваться, без изменений в самой JVM?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

100. Сообщение от Анонимущий (?), 03-Авг-26, 10:32   +/
1) Это сильно ускорит работу всяческих алгоритмов-числодробилок,  например, в финтех решениях.
2) Это сильно снизит уровень тормозов при работе с DTO и JDBC ResultSet-ами. На тех же ресурсах выдерживаемый RPS на эндпоинт будет выше.
3) Это здорово снизит аппетиты текущих сборщиков мусора, которые на шаге компактификации во всей хип-области переназначают указатели, когда занимаются дефрагментацией памяти.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87 Ответы: #103

101. Сообщение от Анонимущий (?), 03-Авг-26, 10:43   +/
туда (в планах) будут упаковываться вообще все примитивы и вложенные value классы. Как в С/С++ - если одно из полей структуры - это другая структура, то при компиляции это в любом случае в плане memory layout развернется в плоскую структуру c косвенной адресацией полей формата "база + смещение".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

102. Сообщение от Анонимущий (?), 03-Авг-26, 10:51   +/
Сами разработчики этой темы (Brian Getz и другие) в своих интервью говорили, что value-классом можно будет сделать все классы, для которых вызывается .equals(), а не сравнение ссылок и при этом неизменяемые поля. Ну то есть потенциальный выигрыш в производительности будет практически во всем, где данные гоняются туда-сюда в классах-обертках.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #107

103. Сообщение от хрю (?), 03-Авг-26, 11:39   +1 +/
> 1) Это сильно ускорит работу всяческих алгоритмов-числодробилок,  например, в финтех решениях.

нет.


> 2) Это сильно снизит уровень тормозов при работе с DTO и JDBC
> ResultSet-ами. На тех же ресурсах выдерживаемый RPS на эндпоинт будет выше.

вообще нет.

> 3) Это здорово снизит аппетиты текущих сборщиков мусора, которые на шаге компактификации
> во всей хип-области переназначают указатели, когда занимаются дефрагментацией памяти.

нет.


не надо фантазий. запусти java приложение под профилятором и посмотри что кушает память, какие функции чаще всего вызываются и что больше всего дефрагментируется.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #100

104. Сообщение от Аноним (104), 03-Авг-26, 12:22    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91

105. Сообщение от Аноним (104), 03-Авг-26, 12:24    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

106. Сообщение от Аноним (104), 03-Авг-26, 12:25    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

107. Сообщение от zionist (ok), 03-Авг-26, 12:35   +/
Подавляющее большинство программистов на Java не имеет опыта программирования с передачей по значению чего-то большего, чем примитивные типы. Я с этим столкнулся лично, когда решил перейти с Java на Go. При передаче больших классов по значению увеличивается копирование данных и нагрузка на стек. Просто так использовать value классы везде и всюду - это полное безумие. Они имеют смысл лишь в определённых случаях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102 Ответы: #111

108. Сообщение от zionist (ok), 03-Авг-26, 12:42   +/
> Как реализованы дженерики с структурами?

Скорее всего так же, как и прежде - как синтаксический сахар на этапе компиляции с type erasure в рантайме.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

109. Сообщение от zionist (ok), 03-Авг-26, 12:44   +/
> Вовремя я сбежал на TypeScript.

Чем этот костыль к богомерзскому JavaScript лучше?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

111. Сообщение от ohsiriusemail (?), 03-Авг-26, 14:04   +/
Обычным это и не потребуется, будут готовые библиотеки. В scala мы имеем иммутабельные case class и системы эффектом вроде Cats Effect/ZIO.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107

112. Сообщение от Аноним (112), 03-Авг-26, 14:24   +1 +/
> Для компиляции и сборки Rust 1.97 на FreeBSD не хватает 32 ГБ оперативной памяти, процесс сборки лезет в SWAP.

Снизь количество процессов компиляции, не будет лезть в своп. Но тебе ж хочется все твои 16 ядер задействовать так? Выделяя по 2Гб каждому.

> Для компиляции и сборки OpenJDK 26 достаточно 4 ГБ ОЗУ.

Чтобы потом платить рантайм кост jit'а.

> И что из них считается bloatware?

Второе естественно. Компиляция занимается оптимизациями. В случае rust'а. В случае жабы она просто переводит блоат сорцов в другой формат, чтобы потом в рантайме разгребать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

113. Сообщение от Аноним (113), 03-Авг-26, 15:09   +2 +/
Зачем ты его сам собираешь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

114. Сообщение от Аноним (114), 03-Авг-26, 15:59   +/
Прям мою мысль словил. Ну видимо сильный протекционизм на рынке у Oracle.
Как не послушаю, так 1С прям фукака, а Java прям решение всех проблем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

115. Сообщение от Вася Пупкин (?), 03-Авг-26, 16:07   +/
В Паскале очень длинные keyword-ы, програмы получается громоздими
Пример:

Begin

End

В место

{

}

И это как минимум

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #122

116. Сообщение от nikodllemail (ok), 03-Авг-26, 18:15   +/
Это кстати открывает дорогу целому ряду проектов для включени в JVM, первым из которых думаю будет Vector API
Ответить | Правка | Наверх | Cообщить модератору

117. Сообщение от Аноним (117), 03-Авг-26, 20:11   +/
Жаба все жиреет и жиреет.
Ответить | Правка | Наверх | Cообщить модератору

118. Сообщение от BrainFucker (ok), 03-Авг-26, 22:04   +/
> в отличие от обычных объектов, два экземпляра с одинаковыми полями считаются равными)

А нельзя было просто добавить магический метод по аналогии с питоновским __eq__() и пусть разработчики сами решают как объекты их классов должны сравниваться?

Ответить | Правка | Наверх | Cообщить модератору

119. Сообщение от morphe (?), 03-Авг-26, 22:36   +/
> escape analysis

Что не гарантируется и работает через раз, что особенно наглядно заметно в любых играх на Java оперирующих структурами вроде Vector {float, float, float} где любая функция работающая с ними либо повторяет одну и ту же логику сотню раз с локальными переменными на стеке, либо пытаются полагаться на EA и в итоге долбятся об GC

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

120. Сообщение от morphe (?), 03-Авг-26, 22:39   +/
> Типичный пример из геймдева - ECS. Любой уважающий себя ecs фреймворк умеющий в многопоточность автоматически понимает что и где можно параллелить потому-что сам выстраивает граф зависимостей систем и их компонент, но полноценно эту инфу можно собрать только в рантайме, но раст то требует гарантий в компайлтайм, а потому увы, иди-ка, дружок, подключай unsafe.

А теперь посмотри на bevy, где зависимости систем как раз выстраиваются из системы типов

&mut Health - система изменяет Health, такие системы нельзя запускать параллельно
&Health - система читает Health, такие можно

И это работает намного лучше и приятнее других ECS с которыми я работал

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86

122. Сообщение от Анон1110м (?), 04-Авг-26, 13:21   +/
begin
  oldKey:=key;

  if assigned(OnKeyDown) then begin
    OnKeyDown(self,key,shift);
    if (Key=0) and not (key in [VK_SHIFT,VK_CONTROL,VK_MENU]) then
      FIgnoreNextKey:=oldkey;
  end;

  if key = 13 then begin
    key:=0;
    DoSearch(false,ssShift in shift);
  end;
end;

Очень громоздко. Прям ничего не видно за begin да end.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115

123. Сообщение от morphe (?), 06-Авг-26, 03:24   +/
> И работает же, не требует переписывать.

В общем случае про жаву это неправда

Совместимость на уровне исходных кодов они уже много раз ломали (Потому что гарантии совместимости только на уровне байткода), да и в целом большинство высокопроизводительного кода часто полагается на реализацию кишков, и всякие netty ломаются с каждым большим релизом

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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