2010-06-03 3 views
4

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

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

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

ответ

5

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

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

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

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

+0

+1 для JAXB. Это вежливо позволить вашим пользователям взломать файлы программы - попробуйте сделать *, что * с помощью Блокнота и сериализованного объекта blob :) – gustafc

+0

DOM кажется ОЧЕНЬ медленным в java. Практически не замечать серьезного использования. Я не могу себе представить, почему. –

+0

@Frederik Wordenskjold: Есть много сторонних реализаций. –

5

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

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

+0

Похоже на очевидный способ хранения небольших файлов данных, таких как пользовательские настройки и т. Д. –

+0

А! Я знал, что пропущу что-то очевидное! Upvote! Хотя для сложных структур файлы .properties могут оказаться непригодными, существует множество ситуаций, когда они довольно удобны. – alex

2

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

1

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

http://sqljet.com/

1

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

String userHome = System.getProperty("user.home"); // "/home/myusername" 
2

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

  1. Если вы хотите быстро реализовать с реляционными базами данных, использовать встроенный DB л ike SQLite. Это используется многими настольными приложениями, такими как Firefox.

  2. Если производительность является предметом озабоченности, используйте для использования key-value pairs вид решения для хранения.

+0

+1 для SQLite. Это мое предпочтение. Хорошая производительность и технический хакерский интерфейс, а также обновленная командная строка. – blissapp

+0

SQLite в Java? – alex

+0

Есть много оберток, как, например, sqljet, указанная @ZZ Coder выше. – zengr

 Смежные вопросы

  • Нет связанных вопросов^_^