Java小程序中的对象持久性

时间:2011-10-31 13:09:49

标签: java serialization applet persistence

保存Java applet状态的好方法是什么?

我可以处理文件中的对象序列化/反序列化,但不知道应该放在哪里,或者是否有一些'注册表',我可以保存一些用户的设置。

这些设置取决于硬件,因此我想将其保存在客户端上。

小程序已获得完全权限。

2 个答案:

答案 0 :(得分:3)

  

保存Java applet状态的好方法是什么?

对于受信任的applet,有很多选择。

  

我可以处理文件中的对象序列化/反序列化,但不知道应该放在哪里..

将信息放在user.home的子目录中。

  • user.home将是一个可写的地方。
  • 子目录(例如,基于applet类的包名称),以避免与其他应用程序的设置文件冲突。
  

..或者如果有一些'注册表',我可以保存一些用户的设置。

我听说可以使用Preferences类......

  

此数据持久存储在依赖于实现的后备存储中。典型的实现包括平面文件,特定于操作系统的注册表,目录服务器和SQL数据库。此类的用户无需关心后备存储的详细信息。

听起来很整洁,不是吗?唯一的麻烦是我从来没有能够在运行之间保持值的示例!


对象序列化带来了一个巨大的警告,它可能随时中断。


我会找到您自己的规范的文件位置(例如在user.home中),并使用Properties / {XMLEncoder文件(对于简单的名称/值对) {3}}(对于更复杂的Java bean)。

对于前者,请参阅此XMLDecoder。后者在JavaDocs顶部的一个简短示例中进行了描述。


当然,如果此applet部署在Plug-In 2体系结构JRE中并且可以访问JNLP API,则可以使用little example。这是PersistenceService

即使是沙盒小程序也可以使用PersistenceService - 它类似于Cookie的概念,因为它适用于少量数据。

答案 1 :(得分:1)

当需要在浏览器会话之间保留数据时, Applet持久性API 似乎是一种很好的方法:http://docs.oracle.com/javase/1.4.2/docs/guide/plugin/developer_guide/persistence.html