Являются ли свойства Java эффективно устаревшими? - PullRequest
23 голосов
/ 01 марта 2010

Java Свойства объект не сильно изменился со времен до Java 5, и у него нет поддержки Generics или очень полезных вспомогательных методов (определенный шаблон для подключения классов для обработки свойств или помощи в загрузить все файлы свойств в каталог, например).

Остановлено ли развитие свойств? Если да, то какова текущая лучшая практика для такого типа сохранения / загрузки свойств?

Или я что-то полностью пропустил?

Ответы [ 5 ]

11 голосов
/ 01 марта 2010

Многие понятия о свойствах определенно древние и сомнительные. Он имеет очень слабую интернационализацию, он добавляет методы, которые сегодня будут реализованы через универсальный тип, он расширяет Hashtable, который сам по себе обычно не используется, поскольку его синхронизация имеет ограниченную ценность, и у него есть методы, которые не согласуются с Классы коллекций, представленные в 1.2, и многие методы, добавленные в класс Properties, по существу обеспечивают тип безопасности типов, который заменяется на Generics.

В случае реализации сегодня это, вероятно, будет специальная реализация Map<String, String> и, безусловно, будет поддерживать лучшую кодировку в файле свойств.

Как говорится, на самом деле нет замены, которая не добавляет сложности. Конечно, API java.util.prefs.Preferences является «новым и улучшенным», но он добавляет уровень сложности, который намного превышает уровень, необходимый для многих случаев использования. Простое использование XML также является опцией (которая, по крайней мере, устраняет проблемы интернационализации), но объект свойств часто полностью соответствует потребностям, и в этот момент его используют.

7 голосов
/ 01 марта 2010

Это все еще жизнеспособное решение для простых требований к конфигурации.Им не требуется поддержка универсальных шаблонов, поскольку ключи и значения свойств по своей природе являются строками, то есть хранятся в плоских ascii-файлах.Если вам нужно удалить / маршалировать / сериализовать объекты, свойства не подходят.Теперь предпочтительным методом является java.util.prefs.Preferences для всего, что выходит за рамки даже умеренно сложной конфигурации.

3 голосов
/ 01 марта 2010

"нет поддержки Generics" зачем нужна поддержка дженериков; это имеет дело со строковым ключом и строковыми значениями Я бы не стал считать свойства Java устаревшими. Это зрелая библиотека - вот и все

3 голосов
/ 01 марта 2010

Он делает то, что должен делать. Не так сложно написать поддержку для чтения во всех файлах свойств в каталоге. Я бы сказал, что это не обычный вариант использования, поэтому я не вижу в этом чего-то такого, что должно быть в JDK.

Кроме того, он немного изменился со времен до Java 5, так как Javadoc говорит, что расширяет Hashtable<Object, Object> и реализует Map<Object, Object>.

1 голос
/ 01 марта 2010

Структура словаря является одной из старейших наиболее часто используемых структур в большинстве языков программирования http://en.wikipedia.org/wiki/Associative_array, Я сомневаюсь, что она устарела бы.

Даже если бы они были удалены, скоро появятся новые реализации вне ядра.

Уже есть внешние расширения, Apache Commons - это большие ресурсы, которые, я думаю, помогли сформировать Java на протяжении многих лет, см. http://commons.apache.org/configuration/howto_properties.html.

...