Почему в 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?
  • Не считается достаточно важным, то есть другие вещи были приоритетными?