Этот пост — вольно-краткий перевод документа 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 пользователей.