Какая разница между системными свойствами System.getProperties() и переменными окружения System.getenv() в JVM?
Свойства системы Java и переменные среды
Ответ 1
Я думаю, что разница между ними сводится к доступу. Переменные системной среды доступны для любого процесса, а свойства системы Java доступны только для процесса, к которому они добавлены.
Также, как указано в Bohemian, переменные env задаются в ОС (однако они могут быть установлены через Java), а свойства системы передаются как параметры командной строки или устанавливаются через setProperty()
.
Ответ 2
-
Свойства системы установлены в командной строке Java с использованием синтаксиса
-Dpropertyname=value
. Они также могут быть добавлены во время выполнения используяSystem.setProperty(String key, String value)
или через различныеSystem.getProperties().load()
.
Чтобы получить конкретное системное свойство, вы можете использоватьSystem.getProperty(String key)
илиSystem.getProperty(String key, String def)
. -
Переменные окружения устанавливаются в ОС, например. в Linux
export HOME=/Users/myusername
или на WindowsSET WINDIR=C:\Windows
и т.д. и, в отличие от свойств, не могут быть установлены во время выполнения.
Чтобы получить определенную переменную среды, вы можете использоватьSystem.getenv(String name)
.