Что является хорошим подходом для сохранения состояния Java-апплета?
Для доверенного апплета существует множество вариантов.
Я могу разобратьсяс сериализацией / десериализацией объекта в / из файла, но не знаю, где он должен быть размещен ..
Поместите информацию в подкаталог user.home
.
user.home
будет местом для записи. - Подкаталог (например, основанный на имени пакета класса апплета), чтобы избежать столкновения с настройкамифайлы других приложений.
.. или, если есть какой-то «реестр», где я могу просто сохранить пару настроек пользователя.
Я слышалчто класс Preferences
может использоваться для этого ..
Эти данные постоянно хранятся в зависимом от реализации резервном хранилище.Типичные реализации включают в себя плоские файлы, специфичные для ОС реестры, серверы каталогов и базы данных SQL.Пользователю этого класса не нужно беспокоиться о деталях бэк-магазина.
Звучит здорово, не так ли?Единственная проблема в том, что мне никогда не удавалось привести пример, когда значения сохраняются между запусками!
Сериализация объекта сопровождается огромным предупреждением, что он может прерваться в любой момент.
Я бы выбрал расположение файла вашей собственной спецификации (например, в user.home
) и либо использовал бы файл Properties
(для простых пар имя / значение) XMLEncoder
/ XMLDecoder
(для более сложных Java-бинов).
Для первого см. Этот небольшой пример .Последний описан в коротком примере в верхней части JavaDocs.
Конечно, если этот апплет развернут в JRE архитектуры Plug-In 2 и имеет доступ к JNLP API, он можетиспользуйте PersistenceService
.Вот демоверсия .PersistenceService
.
Даже апплет в песочнице может использовать PersistenceService
- он похож на концепцию Cookies в том, что он предназначен для небольших объемов данных.