В чем разница между системными свойствами System.getProperties () и переменными среды System.getenv () в JVM?
В чем разница между системными свойствами System.getProperties () и переменными среды System.getenv () в JVM?
Ответы:
Я думаю, что разница между двумя сводится к доступу. Системные переменные среды доступны любому процессу, а системные свойства Java доступны только процессу, к которому они добавлены.
Также, как сказал Богемский, переменные env устанавливаются в ОС (однако они «могут» быть установлены через Java), а системные свойства передаются как параметры командной строки или устанавливаются через setProperty()
.
Системные свойства устанавливаются в командной строке Java с использованием-Dpropertyname=value
синтаксиса. Они также могут быть добавлены во время выполнения, используяSystem.setProperty(String key, String value)
различные
System.getProperties().load()
методы.
Чтобы получить конкретное системное свойство, вы можете использоватьSystem.getProperty(String key)
илиSystem.getProperty(String key, String def)
.
Переменные среды устанавливаются в ОС, например, в Linuxexport HOME=/Users/myusername
или в Windows иSET WINDIR=C:\Windows
т. Д., И, в отличие от свойств, могут не устанавливаться во время выполнения.
Чтобы получить конкретную переменную среды вы можете использоватьSystem.getenv(String name)
.
System.grtProperties()
перечисляет все свойства, и те, которые установлены из командной строки, будут там, но нет никакого способа отличить те от других свойств, добавленных системой, если это то, что вы спрашиваете.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
не динамически считывает значение из системы во время вызова.