В чем разница между JAVA_HOME и альтернативами обновления?

13

Я пытался выяснить, как лучше всего запустить OpenJDK Java Runtime в качестве Java по умолчанию для моего блока Fedora и использовать Oracle JDK 6 для разработки под Android, а именно для запуска Android SDK Manager, Android Studio и Eclipse из Android Bundle.

Я установил OpenJDK Java Runtime из репозитория Fedora, который имеет следующие варианты установки.

[donnie@fedora ~]$ alternatives --list | grep java
jre_openjdk             auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
jre_1.7.0               auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
java                    auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java
libjavaplugin.so.x86_64 auto    /usr/lib64/IcedTeaPlugin.so

Я установил Oracle JDK 6, используя rpm, предоставленный Oracle.

Я мог бы сделать так, чтобы Android Bundle и Studio использовали JAVA_HOME для работы под Oracle JDK, вставив следующую строку .bashrc.

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH

Я заметил, что Chrome все еще использует OpenJDK (поскольку мне все еще нужно связать плагин).

В чем разница между JAVA_HOME и использованием альтернатив?

Судхир Хангер
источник

Ответы:

11

альтернативы

Альтернативы - это инструмент, который будет управлять расположением установленного программного обеспечения, используя ссылки под управлением alternativesинструмента.

Эти ссылки в конечном счете управляются /etc/alternativesс помощью промежуточных ссылок $PATH, обычно создаваемых в каталоге /usr/bin.

пример

$ ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Feb 24 17:36 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Feb 24 17:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.0.fc19.x86_64/jre/bin/java

$ JAVA_HOME

$JAVA_HOMEгде программное обеспечение может быть сказано для просмотра использования переменной среды. Добавление его $PATHпросто добавляет исполняемые файлы, имеющиеся в $JAVA_HOME/binвашем $PATH. Это иногда необходимо для определенных приложений.

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

Что я делаю

Обычно я использую его $JAVA_HOMEдля некоторых приложений с графическим интерфейсом, но в целом я использую его только для серверных установок, которые используют, например, Jetty, Tomcat или JBOSS.

Для этих установок я все еще буду использовать alternativesдля управления установками Java до установки $JAVA_HOME. Мне нравится делать это таким образом, когда мне может потребоваться несколько установок Java.

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

Ссылки

SLM
источник
Недостатком является то, что с альтернативами я могу использовать различные компоненты Java. Например, альтернативы можно установить javaи javacиз различных JDKs с другой стороны , JAVA_HOME=JAVALOCATIONбудет указывать java, javacи javawsчтобы java, javacи javawsв JAVALOCATION, соответственно.
Судхир Хангер
Причина, по которой я задал этот вопрос, заключалась в том, как я могу использовать OpenJDK в качестве Java Runtime по умолчанию и заставить Android Studio, Eclipse и SDK Manager использовать Oracle JDK. Я могу запустить эти три программы в Oracle JDK, отредактировав их сценарии запуска, которые могут быть повреждены при обновлении. Я искал что-то более общее, например STUDIO_JDK, которое я могу добавить к ~/.profileили ~/.bashrc, которое используется Android Studio для получения JDK, но я думаю, что Android Bundle (Eclipse и SDK Manager) не выполнит это.
Судхир Хангер
@donniezazen - да, STUDIO_JDKэто обычная вещь. Я хотел бы использовать альтернативы для этих инструментов и установить JAVA_HOMEпуть, по /usr/binкоторому управляется alternatives. Когда обновление выполнено, изменение alternatives- все, что требуется.
СЛМ
Я не уверен, что вы предлагаете. Точка , как alternativesи JAVA_HOMEсказать /usr/bin/java. Также это похоже на JAVA_HOMEпереопределения alternatives.
Судхир Хангер
@donniezazen - да, используйте альтернативы для управления установками JAVA, а затем используйте JAVA_HOME, указывая на это /usr/bin. Вы правы, JAVA_HOMEможете действовать независимо от alternatives.
SLM