PATH - это специальная переменная, которая указывает на папку, где windows может найти исполняемый файл (не обязательно java, но java в данном случае). Поэтому, если у вас есть, скажем, java 10 в пути, откройте cmd
и введите java -version
- вы увидите java 10. Если у вас много папок с "java .exe" - тот, который появляется первым, будет запущен.
JAVA_HOME , напротив, не имеет ничего общего с Windows - это «соглашение» - многие другие программы (например, IDE) могут предполагать что если у вас есть переменная окружения с именем JAVA_HOME
- она должна указывать на установку JDK, вот и все.
Так что, если на одном компьютере установлено несколько JVM - вам придется явно указывать на bin / java .exe из jdk/jre
на ваш выбор. Это можно сделать с помощью JAVA_HOME или без.
В моей личной системе windows (и я использую много установок Java) я обычно определяю следующее (я предполагаю, что все jdk-ы установлены в папке "Java", это могут быть Program Files или что угодно):
JAVA_8_HOME = C: \ Java \ jdk8
JAVA_9_HOME = C: \ Java \ jdk9
...
JAVA_HOME =% JAVA_14_HOME%
PATH = ...% JAVA_HOME% \ bin
По умолчанию я хотел бы использовать, например, java 14, но я смогу для переключения по умолчанию в будущем. Для этого я отредактирую определение JAVA_HOME и укажу на другое JAVA
Теперь я хочу запустить что-то со значением по умолчанию java (что в большинстве случаев должно быть в порядке) - Я вообще об этом не думаю - просто запустите java -jar Myjar.jar
Если я хочу указать что-то конкретное c java (например java 8) - я могу сделать %JAVA_8_HOME%\bin\java -jar Myjar.jar