Предпочитаемый формат данных для пользовательских данных в приложениях Java? - PullRequest
4 голосов
/ 04 июня 2010

В настоящее время я разрабатываю настольное приложение на Java, которое хранит пользовательские данные, такие как закладки для ftp-серверов. Принимая решение о том, как сохранить эту информацию, я использовал xml просто потому, что мне нравится, как работает xpath . Я тоже думал о json , который кажется более легким.

Какой способ хранения данных вы предпочитаете в настольных приложениях Java (в целом) и почему? Как насчет java-персистентности, имеет ли это какие-либо преимущества, которые стоит отметить? И насколько важен размер пользовательских данных? Не всегда возможно хранить данные в базе данных (или предпочтительнее), и, по моему опыту, xml плохо масштабируется. Дайте мне знать, что вы думаете!

Никто еще не упомянул json, что меня удивляет. Нет ситуации, когда это подходит?

Ответы [ 6 ]

5 голосов
/ 04 июня 2010

Иногда достаточно просто использовать файлы свойств.

Файл свойств - это текстовый файл, состоящий из пар ключ / значение. Класс java.util.Properties используется для взаимодействия с файлами свойств. Однако, это не очень хорошо для хранения списков вещей, потому что все это пара ключ / значение.

5 голосов
/ 04 июня 2010

Все, что работает, дает хорошую производительность и требует наименьшего количества кода.

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

XML обращается к многоязыковому взаимодействию, может быть прочитано и отредактировано людьми. Если вы используете Java, Jaxb очень, очень легкий и быстрый. Если вам нужно сохранить множество настроек, может потребоваться SAX / StAX. Возможно, вы захотите использовать DOM / JDom в очень странных обстоятельствах.

Если есть много настроек, которые вы хотите сохранить и запросить, опция встроенной базы данных SQL. Я рекомендую H2.

2 голосов
/ 04 июня 2010

Есть два аспекта:

  1. Если вы хотите быстро реализовать его с помощью СУБД, используйте встроенную БД , например SQLite. Это используется многими настольными приложениями, такими как Firefox .

  2. Если производительность вызывает беспокойство, используйте go для встроенные пары ключ-значение тип решения для хранения.

2 голосов
/ 04 июня 2010

Нет способа сказать, что я предпочитаю "в общем". Даже в одном приложении у меня может быть несколько разных способов сериализации пользовательских данных. Возьмите компьютерную игру, например. Я хочу, чтобы мои игровые настройки были сохранены так, чтобы я мог редактировать их с помощью текстового редактора. Я хочу, чтобы мои лицензионные данные хранились так, чтобы они были доступны для всех. Я хочу, чтобы мои рекорды сохранялись так, чтобы никто не мог их эффективно редактировать. Я хочу, чтобы мое сохраненное состояние игры сохранялось таким образом, чтобы чтение и запись выполнялись очень быстро. Эти четыре различных требования могут привести к четырем различным решениям только в одном приложении.

1 голос
/ 04 июня 2010

Какой бы формат не использовался для создания файла, рекомендуется сохранить файл в домашнем каталоге пользователя:

String userHome = System.getProperty("user.home"); // "/home/myusername"
1 голос
/ 04 июня 2010

Мы используем XML, если не возражаем против пользовательских настроек. Для более сложных данных мы используем SQLite. Вы можете найти реализацию Java здесь,

http://sqljet.com/

...