Propriétés du système Java et variables d'environnement

Réponses:

148

Je pense que la différence entre les deux se résume à l'accès. Les variables d'environnement système sont accessibles par n'importe quel processus et les propriétés du système Java ne sont accessibles que par le processus auquel elles sont ajoutées.

De même, comme l'a indiqué Bohème, les variables env sont définies dans le système d'exploitation (mais elles «peuvent» être définies via Java) et les propriétés du système sont transmises sous forme d'options de ligne de commande ou définies via setProperty().

Jake Dempsey
la source
5
Enfin, c'est la façon dont les variables sont ajoutées et la portée des variables.
Praveen Sripati
Gardez à l'esprit que d'autres processus peuvent trouver la cmd utilisée pour lancer un processus, d'où les propriétés du système java également.
Christian
359
Bohème
la source
42
Absolument correct, bohème. Les variables d'environnement sont une «chose OS» et les propriétés sont une «chose Java». En l'occurrence, Java a choisi d'exposer les variables du système d'exploitation en tant que propriétés (tout comme Java expose le répertoire actuel et "d'autres éléments" en tant que propriétés), mais ce sont en fait des choses différentes.
paulsm4
@MarekSebera que voulez-vous dire?
Bohème
8
System.grtProperties()répertorie toutes les propriétés, et celles définies à partir de la ligne de commande seront là, mais il n'y a aucun moyen de les distinguer des autres propriétés ajoutées par le système, si c'est ce que vous demandez.
Bohème
11
Notez que vous pouvez également définir les propriétés système avec la variable d'environnement JAVA_TOOL_OPTIONS.
flacs
6
@KanagaveluSugumar Oui, vous devez redémarrer: les paramètres des variables d'environnement sont lus à partir de l'environnement au démarrage. ie System.getenv(String name)ne lit pas dynamiquement la valeur du système au moment de l'appel.
Bohème