Propriedades do sistema Java e variáveis ​​de ambiente

Respostas:

148

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().

Jake Dempsey
fonte
5
Finalmente, é como as variáveis ​​são adicionadas e o escopo das variáveis.
Praveen Sripati
Lembre-se de que outros processos podem encontrar o cmd usado para iniciar um processo, portanto, as propriedades do sistema java também.
Christian
359
Boêmio
fonte
42
Absolutamente correto, boêmio. As variáveis ​​de ambiente são uma "coisa do sistema operacional" e as propriedades são uma "coisa do Java". Ocorre que o Java optou por expor as variáveis ​​do SO como propriedades (assim como o Java expõe o diretório atual e "outras coisas" como propriedades), mas na verdade são coisas diferentes.
paulsm4
@MarekSebera o que você quer dizer com isso?
Bohemian
8
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.
Bohemian
11
Observe que você também pode definir propriedades do sistema com a variável de ambiente JAVA_TOOL_OPTIONS.
Flacs
6
@KanagaveluSugumar Sim, você precisa reiniciar: As configurações de variáveis ​​de ambiente são lidas no ambiente na inicialização. isto System.getenv(String name)é, não lê dinamicamente o valor do sistema no momento da chamada.
Bohemian