Quelle est la différence entre les propriétés système System.getProperties () et les variables d'environnement System.getenv () dans une machine virtuelle Java?
Quelle est la différence entre les propriétés système System.getProperties () et les variables d'environnement System.getenv () dans une machine virtuelle Java?
Réponses:
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()
.
Les propriétés système sont définies sur la ligne de commande Java à l'aide de la-Dpropertyname=value
syntaxe. Ils peuvent également être ajoutés lors de l'exécution en utilisantSystem.setProperty(String key, String value)
ou via les différentes
System.getProperties().load()
méthodes.
Pour obtenir une propriété système spécifique , vous pouvez utiliserSystem.getProperty(String key)
ouSystem.getProperty(String key, String def)
.
Les variables d'environnement sont définies dans le système d'exploitation, par exemple sous Linuxexport HOME=/Users/myusername
ou sous Windows,SET WINDIR=C:\Windows
etc., et, contrairement aux propriétés, ne peuvent pas être définies lors de l'exécution.
Pour obtenir une variable d'environnement spécifique , vous pouvez utiliserSystem.getenv(String name)
.
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.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
ne lit pas dynamiquement la valeur du système au moment de l'appel.