Есть ли разумная причина, почему собственные свойства не будут частью Java 7?
Почему в Java 7 не будет встроенных свойств?
Ответ 1
Выполнение свойств "право" на Java не будет легким. Работа Rémi Forax особенно ценна для выяснения того, что это может выглядеть, и раскрытия многих "ошибок", которые придется решать.
Между тем, Java 7 уже заняла слишком много времени. Дискуссия о закрытии была огромным, противоречивым отвлечением, которое потратило много сил ума, которые могли быть использованы для разработки функций (таких как свойства), которые имеют широкий консенсус в отношении поддержки. В конце концов, было принято решение ограничить серьезные изменения в модуляции (Project Jigsaw). Для языка (в рамках Project Coin) рассматривается только "небольшое изменение".
JavaFX имеет прекрасную поддержку свойств, поэтому Sun четко понимает ценность свойств и знает, как их реализовать. Но, будучи испорченным свойствами JavaFX, разработчики с меньшей вероятностью согласятся на реализацию полузасушливой реализации на Java. Если они того стоят, они должны делать правильно.
Ответ 2
Конечно, есть некоторые причины высокого уровня, связанные с графиком и ресурсами. Реализация свойств и понимание всех ветвей и пересечений с другими языковыми функциями - большая задача, подобная размеру различных языковых изменений Java 5.
Но я думаю, что настоящая причина, по которой Sun не толкает свойства, такая же, как и закрытия:
1) Нет консенсуса относительно того, как должно выглядеть осуществление. Вернее, существует множество конкурирующих альтернатив, и люди, которые увлечены свойствами, не согласны с важными частями реализации.
2) Возможно, что более важно, существует существенный недостаток консенсуса относительно того, нужна ли функция вообще. В то время как многие люди хотят собственности, есть также много людей, которые не считают это необходимым или полезным (в частности, я думаю, что серверные люди видят свойства, которые менее важны для их повседневной жизни, чем программисты).
История свойств здесь:
Ответ 3
Любая заданная вещь по умолчанию не выполняется, поэтому нет необходимости в какой-либо конкретной причине, чтобы что-то не было сделано. Скорее, необходима какая-то веская причина, чтобы переместить что-то с "не сделано" на "запланированное" или "сделано". Для этой языковой функции еще не возникла достаточно веская причина.
Ответ 4
Есть еще две причины, чтобы избежать свойств на любом языке:
-
Свойства не очень объектно-ориентированные. Сделать их легко писать поощряет шаблон, в котором объект просто выполняет свое внутреннее состояние, а вызывающий управляет им. Объект должен предоставлять более высокоуровневые методы и обеспечивать внутреннюю конфиденциальность. В следующий раз, когда вы утомительно внедряете геттер, подумайте о том, что вызывающий абонент будет делать с данными, и можете ли вы просто предоставить эту функцию напрямую.
-
Свойства поощряют изменчивое состояние (через сеттеры), что делает программу менее параллельной. По мере того как число ядер растет, мы все должны пытаться сделать наши объекты неизменными, чтобы упростить параллельные рассуждения. В следующий раз, когда вы утомительно реализуете сеттер, попробуйте удалить его и сделать объект неизменным.
Ответ 5
- Не хватает времени?
- Пока не определено правильно?
- Трудно добавить к java из-за реализации java?
- Не считается достаточно важным, то есть другие вещи были приоритетными?