Вы можете установить столько версий Java, сколько пожелаете.
Для установки было бы опасно изменить локальную переменную среды, например JAVA_HOME
, поскольку она может ссылаться на существующую установку Java.
Это не имеет ничего общего с предполагаемой "зависимой от платформы проблемой". ;)
Поскольку сценарии могут зависеть от JAVA_HOME
при запуске самих себя, опять же, для новой установки Java будет иметь катастрофические последствия для изменения JAVA_HOME
: все эти сценарии внезапно придется запускать с новой потенциально несовместимой JVM.
Кроме того, установив $JAVA_HOME/bin
или %JAVA_HOME%/bin
на своем пути, вы можете динамически изменить JAVA_HOME
на любую версию Java, которую вы хотите использовать, не слишком сильно используя переменную PATH.
Майкл Боргвардт задал в комментариях интересный вопрос для продолжения
Тем не менее, это не объясняет, почему установщик не устанавливает JAVA_HOME, если он вообще не был установлен ранее.
Ответ прост:
Настройка не может знать, зависит ли сценарий от JAVA_HOME
или нет .
Значение: некоторые сценарии могут проверять значение JAVA_HOME
, и если оно не установлено, ссылаться на другую JVM, установленную в другом месте (и не забывать, что под словом "установка" можно ссылаться только на "скопированный": JDK / JRE не всегда устанавливается при установке)
Если вы установите JAVA_HOME
, это может нарушить поведение по умолчанию некоторых ваших сценариев.
Не желая мешать гипотетическим сценариям, которые зависят от того, что env var не звучит для меня бессмысленно параноидально - если сценарий делает это, то он явно ХОЧЕТ использовать другую JVM, когда она установлена, - нет причин избегать этого.
Ммм ... Сладкий. Я могу заверить вас, что для решения огромных проблем развертывания ежедневно (для внутреннего применения в моем магазине) это очень вменяемый "параноик"
угощение, чтобы иметь.
При развертывании (очень) большого набора пользователей вы не хотите делать какие-либо предположения об их платформе и конфигурации. «ЯВНО ХОЧУ» - это предположение, которое я бы не осмелился сделать (или я перенаправляю свой телефон на ваш;), и вы обрабатываете злые звонки).
Например, у нас есть много сценариев, которые запускаются с JVM 1.4.2 от sun (JAVA_HOME не задан на платформе разработки, путь по умолчанию задан непосредственно в сценарии) или с 1.4.2 из JRockit (установлено JAVA_HOME
, так как это намеченная цель для платформ интеграции, предпроизводства и производства).
Но мы регулярно устанавливаем новый JDK1.6.x, поскольку мы используем его для запуска затмения.
Предположим, что эти сценарии хотят установить JAVA_HOME
... и больше ничего не работает.
... На что Роберт Грант делает этого критика на месте:
Вы описываете сценарии, для которых требуется одна конкретная версия, но все же смотрите на глобальный JAVA_HOME. Это просто плохо продуманные сценарии.
Хотя это может или не может быть правдой, это также иллюстрирует мою точку зрения:
«Вы не хотите делать какие-либо предположения»: никаких предположений об их платформе / настройках и никаких предположений об их «лучших методах».
Первое может показаться параноидальным, последнее - здравый смысл: думать, что ваш продукт (здесь настройка JDK) ничего не нарушит в среде пользователя, потому что пользователь «правильно» продумал свои сценарии ... было бы безумием.
GvS предлагает:
Или это может быть просто опция, отключенная по умолчанию
Это означало бы еще одну опцию для включения в экраны настройки, опцию, которая должна быть тщательно рассмотрена пользователем и которая может иметь непредвиденные последствия, даже если пользователь выбирает ее, думая, что знает, что делает ...
Это просто не стоит.