JavaFx 2 — автономные приложения и их настройки, база данных и т. д.

Скажем, у меня есть кроссплатформенное работающее приложение.

Это приложение создает, а затем читает/записывает некоторые данные и настройки во внешние файлы.

Иерархия пакетов выглядит следующим образом:

ApplicationFolder/application.jar
ApplicationFolder/database.odb
ApplicationFolder/config.xml

Будь то на Mac, Windows или Linux, приложение знает, что все находится рядом с ней (например: /database.odb или /config.xml)


Теперь появилась функция автономного приложения, предоставляемая JavaFx 2.

Приложение встроено в .exe на Windows, .app на Mac, а про Linux пока не знаю...

Как пользователь Mac, я протестировал его на Mac и увидел, что database.odb и config.xml теперь создаются по корневому пути пользователя.

Таким образом, я согласен с тем, что мне следует подумать о кросс-платформенном механизме для сохранения/чтения настроек моего приложения в отношении операционной системы.

Но я не совсем уверен, что делать и как это сделать (также не могу найти никакой помощи в гугле ..)


В Windows .exe устанавливается в папку, поэтому я думаю, что могу сохранить то же поведение.

На Mac .app — это папка, и я должен хранить все внутри (как получить путь .app ?!)

Разве в Java/JavaFx нет встроенного механизма?


Большое спасибо за любой комментарий, совет, документацию или что-то еще, что вы могли бы мне дать.

Бадиси


person Badisi    schedule 10.01.2013    source источник


Ответы (1)


Есть много способов сделать это. Я перечислил некоторые из них здесь в произвольном порядке. Рекомендуемый подход зависит от типа сохраняемых данных.

Java предоставляет несколько механизмов (например, API properties и настройки API) для сохранения настроек приложения .

Если ваше приложение достаточно сложное, чтобы использовать базу данных, вы можете использовать Java EE или Spring, которые имеют свои собственные механизмы настройки.

Для конфигурации только для чтения вы можете связать соответствующие файлы внутри jar-файла вашего приложения.

Чтобы хранить настроенные файлы конфигурации приложения или общие базы данных клиентского приложения относительно JAR-файла приложения, запишите необходимые файлы во время выполнения. См. Как мне получить каталог, в котором находится исполняемый в данный момент файл jar?.

Для конкретной конфигурации пользователя используйте System.getProperty("user.home") для получения домашнего каталога пользователя, затем создайте подкаталог для вашего предпочтительного хранилища (например, "{$user.dir}/.myapp") со скрытыми атрибутами файла, чтобы он не отображался в стандартном списке каталогов файлов.

Если ваше приложение зависит от подключения к Интернету, вы можете хранить часть этой информации на стороне сервера, а не на стороне клиента, и использовать ее с клиента с использованием интернет-протоколов. Преимущество этого подхода заключается в том, что конфигурация пользователя и данные автоматически переносятся между клиентскими машинами.

person jewelsea    schedule 10.01.2013