Propiedades del sistema Java y variables de entorno.
¿Cuál es la diferencia entre las propiedades del sistema System.getProperties() y las variables de entorno System.getenv() en una JVM?
Las propiedades del sistema se configuran en la línea de comandos de Java mediante la
-Dpropertyname=value
sintaxis. También se pueden agregar en tiempo de ejecución utilizandoSystem.setProperty(String key, String value)
o mediante variosSystem.getProperties().load()
métodos.
Para obtener una propiedad específica del sistema, puede utilizarSystem.getProperty(String key)
oSystem.getProperty(String key, String def)
.Las variables de entorno se configuran en el sistema operativo, por ejemplo, en Linux
export HOME=/Users/myusername
o WindowsSET WINDIR=C:\Windows
, etc. y, a diferencia de las propiedades, no se pueden configurar en tiempo de ejecución.
Para obtener una variable de entorno específica , puede utilizarSystem.getenv(String name)
.
Creo que la diferencia entre los dos se reduce al acceso. Las variables de entorno son accesibles mediante cualquier proceso y las propiedades del sistema Java solo son accesibles mediante el proceso al que se agregan.
Además, como dijo Bohemian, las variables env se configuran en el sistema operativo (sin embargo, "pueden" configurarse a través de Java) y las propiedades del sistema se pasan como opciones de línea de comando o se configuran mediante setProperty()
.