ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Доступ к пользовательским системным переменным в Java

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Доступ к системным свойствам можно получить при помощи метода System.getProperty("property_name"). Если речь идёт о переменных окружения, следует использовать System.getenv("variable_name"). Ниже приведен пример:

Java
Скопировать код
String javaVersion = System.getProperty("java.version");
System.out.println("Версия Java: " + javaVersion); // Версия Java выводится на экран

Для вывода всех свойств или всех переменных окружения можно использовать System.getProperties() и System.getenv() соответственно. Однако важно точно знать имена переменных для обеспечения корректной работы программы. Заметьте, что System.getProperty() и System.getenv() дадут доступ к системным свойствам Java и переменным окружения соответственно.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Свойства системы и переменные окружения Шрёдингера

В Java предусмотрены два инструмента для работы с конфигурацией: системные свойства и переменные окружения. Системные свойства можно устанавливать при запуске JVM при помощи аргументов -D<name>=<value> или программными средствами через System.setProperty(), как бы намекая JVM на некоторые секреты.

Переменные окружения доступны через метод System.getenv() и устанавливаются на уровне операционной системы. Их можно проверить при помощи команд echo $VARIABLE (для Unix-подобных систем) или echo %VARIABLE% (для Windows).

Для того чтобы предотвратить ошибки при работе с переменными, которые могут быть неопределёнными (null), в Java 8 был добавлен класс Optional:

Java
Скопировать код
String dbEnvVar = Optional.ofNullable(System.getenv("DBE"))
                          .orElseThrow(() -> new IllegalStateException("Переменная окружения DBE не задана. Забыли указать?"));

Эта конструкция генерирует исключение в случае, если переменная не найдена. Учтите, что для обновления переменных окружения может потребоваться перезагрузка системы. К сожалению, Java не умеет предугадывать такие изменения.

В поисках надёжности: Безупречные практики программирования

Когда Null – это не то, что вам нужно

Мы должны быть готовы к непредвиденным обстоятельствам в программировании. Предварительная проверка на null значительно снижает вероятность ошибок при работе с переменными, которые могут не существовать:

Java
Скопировать код
String value = System.getenv("UNDEFINED_MAYBE");
if (value != null) {
    // Значение найдено, можно его использовать 🎉
} else {
    // Значение недоступно. К сожалению, операция не может быть выполнена 🙁
}

В этом случае Optional повышает надёжность кода, позволяя предопределить поведение программы в случае отсутствия значения переменной.

Работать с System.getProperty() проще

System.getenv() позволяет получить значения переменных окружения, а System.getProperty() дает доступ к системным свойствам:

Java
Скопировать код
String userHome = System.getProperty("user.home");

Можно устанавливать свойства при запуске JVM и получать их при помощи System.getProperties(). Это похоже на взаимодействие с Java на основе "покажи мне мой набор переменных".

"Феникс" устаревших свойств

Функция System.getenv(String) была устарела в прежних версиях Java, но снова стала актуальной начиная с Java SE 5. Важно всегда следить за последней документацией Java для получения актуальной информации. Это ваш незаменимый источник знаний о мире Java!

Визуализация

Markdown
Скопировать код
System.getenv("VARIABLE_NAME") // Подобно вопросу: "Эй, Система, можешь ты сказать, какие переменные сейчас доступны?"

Ваша навигация:

Markdown
Скопировать код
| Переменная       | Значение       |
| ---------------- | -------------- |
| JAVA_HOME        | ⚓ (/usr/java/) |
| PATH             | ⛵ (C:/bin;)   |
| OS               | ☁️ (Windows)   |

Как звёзды в ночи помогают морякам определять курс, так и системные переменные направляют ваше приложение.

Сигналы тревоги: Устранение проблем и best practices

Проверьте прозрачность: Видимость переменных

Видимость переменной в системе всегда заслуживает внимания. Это подобно проверке: не забыли ли вы ключи на столе.

Разные системы – разные правила

Особенности операционных систем играют важную роль в процессе установки и доступа к переменным окружения.

Секреты должны быть надежно сохранены

При работе с переменными окружения стоит внимательно обращаться с вопросами безопасности, особенно если они содержат конфиденциальную информацию. Грандиозное мастерство программирования должно сопровождаться столь же грандиозной осторожностью.

Полезные материалы

  1. Управление переменными окружения в Java на DZone – эффективное использование переменных окружения.
  2. System (Java SE 11 & JDK 11)официальная документация Oracle на System.getenv.
  3. Подробнее о классе System в Java от DigitalOcean – полное руководство по классу System.
  4. Как получить переменные окружения в Java – Mkyong.com – практические советы по извлечению переменных окружения.
  5. Видеоурок на YouTube: Получение переменных окружения в Javaпошаговый гид по работе с системными переменными окружения в Java.