Яка різниця між системними властивостями System.getProperties () та змінними середовища System.getenv () у JVM?
Яка різниця між системними властивостями System.getProperties () та змінними середовища System.getenv () у JVM?
Відповіді:
Я думаю, що різниця між двома зводиться до доступу. Змінні системного середовища доступні будь-яким процесом, а властивості системи Java доступні лише тому процесу, до якого вони додані.
Крім того, як заявив Bohemian, змінні 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
або в WindowsSET WINDIR=C:\Windows
тощо, і, на відміну від властивостей, можуть не встановлюватися під час виконання.
Щоб отримати конкретну змінну середовища, ви можете використовуватиSystem.getenv(String name)
.
System.grtProperties()
перераховує всі властивості, і ті, які встановлені з командного рядка, будуть там, але немає способу відрізнити ці властивості від інших властивостей, доданих системою, якщо ви про це запитуєте.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
не динамічно зчитує значення з системи під час виклику.