Переменные окружения в Java

Введение
Переменная окружения — это переменная ОС, хранящая параметры для конфигурации приложений
В контексте Java переменные окружения используются для хранения путей к ресурсам (исполняемым файлам, библиотекам, классам) и параметров, необходимых JVM и сторонним приложениям. Их использование избавляет программиста от ручной настройки окружения при каждом запуске.
Список переменных окружения
Рассмотрим каждую из переменных.
1
JAVA_HOME
Хранит: путь до корневой директории с установленной JDK
Нужна: сторонним программам (Tomcat, Maven, IDE) для определения места размещения инструментов разработки
Используется: всегда
Пример пути:
C:\Program Files\Java\LibericaJDK-23.01-lite
2
PATH
Хранит: список путей к любым исполняемым файлам
Нужна: позволяет запускать javac/java и другие команды, например, в консоли из любой директории по их имени
Используется: всегда
Пример пути:
%JAVA_HOME%\bin
3
CLASSPATH
Хранит: пути к библиотекам и классам
Нужна: компилятору и JVM для поиска зависимостей, необходимых приложениям
Используется: при отсутствии в проекте инструментов сборки (Maven, Gradle) и наличии сторонних библиотек (или когда классы находятся в разных пакетах)
Пример пути:
C:\libs\myLibrary.jar
В современных проектах для управления зависимостями используют инструменты сборки, поэтому ручная их настройка требуется редко
4
JAVA_TOOL_OPTIONS
Хранит: глобальные параметры для всех запускаемых Java-программ
Нужна: для настройки JVM и инструментов JDK
Используется: для установления общих параметров для всех программ, в том числе, когда командная строка недоступна или ее параметры нельзя изменить
Документация: ссылка
Пример:
// установка min и max значения кучи
-Xms256m -Xmx512m
5
JAVA_OPTS
Хранит: дополнительные локальные опции запуска JVM
Нужна: для настройки памяти, отладки и других параметров JVM, привязанных к конкретному приложению или серверу
Используется: в скриптах или конфигурационных файлах контейнеров приложений
Пример параметра:
// включение сборщика мусора G1
-XX:+UseG1GC
6
JDK_JAVA_OPTIONS
Хранит: дополнительные глобальные параметры командной строки для инструментов JDK
Нужна: для добавления новых параметров к параметрам командной строки, указанным при запуске/компиляции
Используется: вместо _JAVA_OPTIONS, начиная с JDK 9
Документация: ссылка
Пример параметра:
// установка кодировки UTF-8 для всех Java-программ
-Dfile.encoding=UTF-8
7
_JAVA_OPTIONS (устарела)
Хранит: глобальные параметры для всех запускаемых Java-программ
Нужна: для настройки JVM
Используется: в версиях Java 8 и ниже
Пример параметра:
// установка max размера кучи
-Xmx512M
Использовать осторожно, так как переменная не является документированной! Начиная с JDK 9+, предпочтительней использовать JDK_JAVA_OPTIONS
8
JRE_HOME (устарела)
Хранит: путь до директории с установленной JRE
Нужна: исключительно для запуска приложений
Используется: в Java 8 и ниже для запуска готовых приложений, не требующих разработки
Пример пути:
%JAVA_HOME%\jre1.8.0_291
Начиная с Java 9 JRE включён в состав JDK и больше не выпускается как отдельный компонент
Заключение
Системные переменные используются в разработке повсеместно. Вам необходимо уметь ориентироваться в них и применять в своих приложениях. В данной статье сделан обзор всех имеющихся переменных окружения, используемых в Java.
Автор: Чимаев Максим
Оцените статью, если она вам понравилась!