tecnologias significado programador lenguajes full front end diferencia conocimientos java windows registry preferences

significado - ¿Hay alguna forma de usar java.util.Preferences en Windows sin usar el Registro como back-end?



programador backend (2)

Deseo utilizar la API java.util.Preferences, pero no quiero que mi programa intente leer o escribir en el registro de Windows. ¿Cómo voy a hacer esto?


Siempre es posible extender java.util.prefs.AbstractPreferences.

Una alternativa podría ser utilizar El paquete de configuración de Apache Commons le permite leer y escribir datos de configuración desde / hacia diferentes fuentes.


Confío en que ha leído el registro de lectura / escritura en Windows usando Java y luego desea tener otro back-end que el registro cuando usa la API java.util.Preferences

Puede ampliar la API de Preference , como hicieron Bernhard o Croft , como se describe en este artículo :

Debido a que la API de Preferencias es neutral para servicios de fondo, no es necesario que se preocupe si los datos se almacenan en archivos, tablas de bases de datos o en un almacenamiento específico de la plataforma, como el Registro de Windows.

Ejemplos de extensiones a través de nuevas Preferences se pueden ver aquí .

Eso es mejor, IMO, que usar otra API.

Por ejemplo, buscando clases que java.util.prefs.AbstractPreferences :

  • Puede usar un almacén de preferencias respaldado por un archivo XML:

de.unika.ipd.grgen.util.MyPreferences

import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.prefs.AbstractPreferences; import java.util.prefs.BackingStoreException; /** * Own implementation of the Java preferences API, that does not use * a "OS backing store" but relies on importing and exporting the * preferences via xml files. * Also, If a preference is got, but was not in the tree, it is entered. */ public class MyPreferences extends AbstractPreferences { private Map<String, String> prefs = new HashMap<String, String>(); private Map<String, AbstractPreferences> children = new HashMap<String, AbstractPreferences>(); public MyPreferences(MyPreferences parent, String name) { super(parent, name); } /** * @see java.util.prefs.AbstractPreferences#putSpi(java.lang.String, java.lang.String) */ protected void putSpi(String key, String value) { prefs.put(key, value); }

  • O puede almacenar esas preferencias en un LDAP:

de.tarent.ldap.prefs.LDAPSystemPreferences

import java.util.prefs.AbstractPreferences; import java.util.prefs.BackingStoreException; import javax.naming.NamingException; import javax.naming.directory.Attributes; import de.tarent.ldap.LDAPException; import de.tarent.ldap.LDAPManager; /** * @author kirchner * * Preferences im LDAP */ public class LDAPSystemPreferences extends AbstractPreferences { LDAPManager ldm = null; Properties properties = new Properties(); //Map für key/value der Preferences Map cache = new HashMap(); //Map für timestamp der Preferences Map timestamp = new HashMap(); private Boolean deleted = Boolean.FALSE;

  • O puede usar un archivo de propiedad simple:

com.adito.boot.PropertyPreferences :

import java.util.prefs.AbstractPreferences; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * A simple implementation for the preferences API. That stores preferences * in propery files. We do not have to worry about sharing the preferencese * with other JVM instance so there is no need for any kind of synchronising * or locking. */ public class PropertyPreferences extends AbstractPreferences {