К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Java-приложение, где хранить конфиги.

Гость
0 - 22.12.2016 - 21:40
Возник такой вопрос.
Допустим, я пишу настольное java-приложение.
Если я запускаю его в винде - конфиг, скорее всего, лежит примерно в той же папке, что и бинарник, а в linux - в /etc или аналогах.
Вот в случае традиционных компилируемых языков, при сборке под каждую конкретную платформу я укажу, где лежат конфиги, где бинарники, где библиотеки - и т.д. И инсталлятор будет для каждой конкретной платформы свой (строго говоря, для линукса редко используется инсталлятор, скорее - собирается пакет).
А как в случае java-приложения? Куда класть конфиги? Как сделать, чтобы инсталлятор был всеплатформенный?
Переменные окружения трогать не хочется. По крайней мере - это будет крайней мерой.
Понятно, что можно по сборке для каждой платформы, но как-то это криво.



Гость
1 - 22.12.2016 - 23:49
Предлагаю не страдать и положить все в папку приложения. А то весь запал на приложение уйдет на конфигурацию, может стать камнем преткновения.
Гость
2 - 22.12.2016 - 23:59
Цитата:
Сообщение от 40KHYTbIU Посмотреть сообщение
А то весь запал на приложение уйдет на конфигурацию, может стать камнем преткновения.
Да, есть такая опасность.
Гость
3 - 23.12.2016 - 09:15
но вопрос все-таки о бест практисах. Не я же один столкнулся с такой проблемой. Хотя, смотря, как это реализовано в том же eclipse - похоже, все решили так же.
Гость
4 - 23.12.2016 - 10:19
Есть что скрывать? Операционок(целевых) не так много, для каждой своя сборка.
Гость
5 - 23.12.2016 - 10:41
Да нет, нечего скрывать. Пытаюсь не изобрести велосипед.

Но разве не рекламировалась широко возможность запуска программ под различные платформы? А тут оказывается, можно - но криво.

Кстати, как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или рукожопие?
Гость
6 - 23.12.2016 - 11:01
Такой вопрос лучше задать на скл.ру(надеюсь не сочтут за рекламу) в разделе java.
Гость
7 - 23.12.2016 - 12:59
кстати, а где сейчас основная тусовка java-погромистов?
Гость
8 - 23.12.2016 - 13:42
хз где тусовка (может тут http://javatalks.ru/ ), а для хранения настроек есть http://docs.oracle.com/javase/8/docs...eferences.html (которые в реестра у винды и в ~/.java/.userPrefs у линукса)

такжо можно просто использовать properties, но если они для редактирования юзером, то хранить рядом с бинарником даже в win не стоит
Гость
9 - 23.12.2016 - 13:46
Цитата:
Сообщение от Добрых дел мастер Посмотреть сообщение
Кстати, как сейчас принято хранить конфиги? Создать класс конфиг и потом серилизовать\десирилизовать его в json - это нормально, или рукожопие?
Да не рукожопие, но обычный жисон не поддерживает коментарии (но парсер jackson можно настроить), также надо сделать так чтобы он игнорировал (или писал в лог) неизвестные поля (иначе если в новой версии ПО поле удалить то все конфиги отвалятся и юзер пойдет ставить свечку заупокой души программиста)

у хипстеров модно хранить конфиги в yaml, у интерпрайза и олдскула в properties (в java есть класс с таким именем смотри его)
Гость
10 - 23.12.2016 - 14:28
о, спасибо. Наверное, это действительно самый правильный путь.
Гость
11 - 23.12.2016 - 16:13
ну яб не сказал что совсем уж правильный т.к. в linux есть https://standards.freedesktop.org/ba...ec-latest.html

который предлагает хранить настройки в:

>$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.

Но емнип это можно подшаманить, а вот формат их хранения (и максимальный размер значения в байтах- MAX_VALUE_LENGTH
Maximum length of string allowed as a value (8192 characters).) весьма печален 8), но если руками не лазить в файлы и что-то жирное не хранить то подойдет
Гость
12 - 25.12.2016 - 20:30
В ~/..


К списку вопросов






Copyright ©, Все права защищены