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


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.