¿Cuál es la diferencia entre las propiedades del sistema System.getProperties () y las variables de entorno System.getenv () en una JVM?
¿Cuál es la diferencia entre las propiedades del sistema System.getProperties () y las variables de entorno System.getenv () en una JVM?
Respuestas:
Creo que la diferencia entre los dos se reduce al acceso. Las variables de entorno del sistema son accesibles por cualquier proceso y las propiedades del sistema Java solo son accesibles por el proceso al que se agregan.
Además, como dijo Bohemian, las variables env se configuran en el sistema operativo (sin embargo, 'se pueden' configurar a través de Java) y las propiedades del sistema se pasan como opciones de línea de comandos o se configuran mediante setProperty()
.
Las propiedades del sistema se establecen en la línea de comandos de Java utilizando la-Dpropertyname=value
sintaxis. También se pueden agregar en tiempo de ejecución utilizandoSystem.setProperty(String key, String value)
o mediante los diversos
System.getProperties().load()
métodos.
Para obtener una propiedad específica del sistema , puede usarSystem.getProperty(String key)
oSystem.getProperty(String key, String def)
.
Las variables de entorno se establecen en el sistema operativo, por ejemplo, en Linuxexport HOME=/Users/myusername
o en WindowsSET WINDIR=C:\Windows
, etc., y, a diferencia de las propiedades, no se pueden establecer en tiempo de ejecución.
Para obtener una variable de entorno específicaque puede usarSystem.getenv(String name)
.
System.grtProperties()
enumera todas las propiedades, y las establecidas desde la línea de comandos estarán allí, pero no hay forma de distinguirlas de las otras propiedades agregadas por el sistema, si eso es lo que está preguntando.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
, no lee dinámicamente el valor del sistema en el momento de la llamada.