Qual é a diferença entre as propriedades do sistema System.getProperties () e as variáveis de ambiente System.getenv () em uma JVM?
Qual é a diferença entre as propriedades do sistema System.getProperties () e as variáveis de ambiente System.getenv () em uma JVM?
Respostas:
Eu acho que a diferença entre os dois se resume ao acesso. As variáveis de ambiente do sistema são acessíveis por qualquer processo e as propriedades do sistema Java são acessíveis apenas pelo processo ao qual foram incluídas.
Também como Bohemian afirmou, as variáveis env são definidas no sistema operacional (no entanto, elas 'podem' ser definidas através de Java) e as propriedades do sistema são passadas como opções de linha de comando ou definidas via setProperty()
.
As propriedades do sistema são configuradas na linha de comandos Java usando a-Dpropertyname=value
sintaxe. Eles também podem ser adicionados em tempo de execução usandoSystem.setProperty(String key, String value)
ou através dos vários
System.getProperties().load()
métodos.
Para obter uma propriedade específica do sistema, você pode usarSystem.getProperty(String key)
ouSystem.getProperty(String key, String def)
.
As variáveis de ambiente são definidas no sistema operacional, por exemplo, no Linuxexport HOME=/Users/myusername
ou no WindowsSET WINDIR=C:\Windows
, etc. e, diferentemente das propriedades, podem não ser definidas no tempo de execução.
Para obter uma variável de ambiente específica , você pode usarSystem.getenv(String name)
.
System.grtProperties()
lista todas as propriedades, e as definidas na linha de comando estarão lá, mas não há como distinguir aquelas das outras propriedades adicionadas pelo sistema, se é isso que você está perguntando.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
é, não lê dinamicamente o valor do sistema no momento da chamada.