Свойства системы Java и переменные среды

Какая разница между системными свойствами System.getProperties() и переменными окружения System.getenv() в JVM?

Ответ 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 или на Windows SET WINDIR=C:\Windows и т.д. и, в отличие от свойств, не могут быть установлены во время выполнения.
    Чтобы получить определенную переменную среды, вы можете использовать System.getenv(String name).