
Этот пост — вольно-краткий перевод документа State of the Values, предложения по введению типов-значений в JVM и сам язык Java, который написали Джон Роуз, Брайан Гоетц и Гай Стил, разбавленный моими мыслями. Опущены детали предложения по реализации типов-значений на уровне байт-кода, что не очень интересно для большинства Java-программистов.
Важнейшая мысль: объектная (ссылочная) идентичность нужна только для поддержки изменяемости объектов. Объект может изменить состояние, но по ссылке мы всегда можем проверить, что это «тот же» объект. Поэтому типы-значения будут строго неизменяемые.
Предполагаемые варианты использования типов-значений:
- Числа: комплексные, беззнаковые, 128-битные, с фиксированной запятой и т. д. Все, что не описывается имеющимися примитивами.
- Алгебраические типы:
Optional, Choice<T,U>
, перечисления
Кортежи: пары, тройки, ...
Итераторы, курсоры
«Уплощение» сложных структур
Я знаю, этот блог читает много сотрудников Oracle, которые куда внимательнее следят за списками рассылки и вообще ближе к теме, буду рад если они внесут важные уточнения.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Нужны ли в Java типы-значения?
14.21%Очень, страдаю без них52
46.45%Было бы неплохо170
27.87%Не нужны102
11.48%Java не нужна42
Проголосовали 366 пользователей. Воздержались 175 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Когда в Java добавят типы-значения (ваш прогноз)?
11.54%Java 942
23.9%Java 1087
17.31%Еще позже63
21.98%Никогда80
25.27%Не знаю92
Проголосовали 364 пользователя. Воздержались 165 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вам предложение в текущем виде?
1.61%То что надо5
35.05%Нормально109
26.69%Я думал, намного лучше будет это все83
36.66%Сложно сказать, предложение неконкретное114
Проголосовали 311 пользователей. Воздержались 189 пользователей.