Qual é a diferença entre JAVA_HOME e update-alternatives?

10

Eu tenho tentado descobrir a melhor maneira de executar o OpenJDK Java Runtime como Java padrão para minha caixa Fedora e usar o desenvolvimento do Oracle JDK 6 para Android, especificamente para executar o Android SDK Manager, o Android Studio e o Eclipse do Android Bundle.

Eu instalei o OpenJDK Java Runtime do repositório do Fedora que tem alternativas de configuração como segue.

[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

Eu instalei o Oracle JDK 6 usando o rpm fornecido pela Oracle.

Eu poderia fazer com que o Android Bundle e o Studio façam uso de JAVA_HOME para serem executados no Oracle JDK, seguindo o seguinte em .bashrc .

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

Percebi que o Chrome ainda usa o OpenJDK (pois ainda preciso vincular o plug-in).

Quais são as diferenças entre JAVA_HOME e usando alternativas?

    
por Sudhir Khanger 06.04.2014 / 19:48

1 resposta

8

Alternativas

Alternativas é uma ferramenta que gerencia os locais do software instalado usando links sob o controle da ferramenta alternatives .

Esses links são gerenciados em /etc/alternatives com links intermediários criados em um diretório em $PATH , normalmente /usr/bin .

Exemplo

$ 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 é onde o software pode ser solicitado a procurar pelo uso de uma variável de ambiente. Adicioná-lo ao $PATH simplesmente adiciona os executáveis presentes em $JAVA_HOME/bin ao seu $PATH . Às vezes isso é necessário para certas aplicações.

Os 2 mecanismos estão relacionados, mas podem ser usados juntos ou independentes um do outro, realmente depende da aplicação Java qual mecanismo é preferível.

O que eu faço

Eu geralmente uso $JAVA_HOME para alguns aplicativos de GUI, mas em geral uso apenas para instalações de servidor que usam Jetty, Tomcat ou JBOSS, por exemplo.

Para essas instalações, ainda usarei alternatives para gerenciar as instalações Java antes de definir o $JAVA_HOME . Eu gosto de fazer isso dessa maneira nos casos em que eu possa precisar ter várias instalações de Java.

Alternativas permite que você tenha certas ferramentas usando uma instalação do Java, enquanto outras usam um completamente diferente.

Referências

por 06.04.2014 / 21:27