Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Por que configurar as variáveis de ambiente?

Pessoal, tudo certo? Dúvida básica.

Por que é necessário configurar a variável JAVA_HOME? Essa variável é utilizada de que forma para que seja possível compilar e executar os programas JAVA?

Para ser mais claro a minha dúvida, quando estou executando o comandos:

javac MeuPrograma.java
java MeuPrograma

O que ocorre por trás? Nesse momento como minhas variáveis de ambiente são utilizadas?

Abraço!

5 respostas

Então, o JAVA_HOME é o diretório raiz de instalação do Java, ele serve para quando for necessário executar/compilar um programa pelo prompt de comando por exemplo, não é necessário navegar até a pasta do Java. Em outras palavras, além de ser usado para configurar as variáveis seguintes ,também é continuamente referenciado por aplicativos e frameworks desenvolvidos com Java

Oi Adriano dá uma olhada nessa explicação que faz parte de um curso aqui do Alura, me ajudou bastante!

https://cursos.alura.com.br/course/prompt/section/3/task/2
solução

As variáveis de ambiente JAVA_HOME e CLASSPATH são caminhos utilizados pelo java para que ele possa encontrar o compilador e executar o código que você está escrevendo. Ok, explicação bem sucinta, certo? Então, vamos nos aprofundar. Toda vez que você precisar rodar o programa que está sendo escrito, necessariamente você irá precisar compila-lo para que a sua JVM possa executa-lo. O compilador java ( javac) e o executar java (que “curiosamente” se chama java ) se encontram na pasta bin da JDK (ex: no windows C:\Program Files (x86)\Java\jdk1.7.0_45\bin e no linux ) e você precisa acessa-los para compilar e executar o código. Então como iremos fazer isso? Existem algumas opções e vamos a elas.

1º – Colocar todas as tuas classes no bin do jdk. Isso é extremamente ruim porque iremos ter nossas classes misturadas com os executáveis do java. Se você for como eu pode pensar em colocar em pastas e assim deixar mais organizado, mas apesar de estar organizado, vai continuar em um lugar que não deveriam de estar.

2º – Copiar o javac e java para o local de teu código: Esse ai eu já tentei e vou te dizer, vai dá erro porque tanto o javac como o java precisam de bibliotecas da JDK para funcionar corretamente.

3º – Copiar o bin do JDK para cada local onde iremos ter as nossas classes: Será que preciso dizer que isso não irá funcionar? <-------------------------> Criaremos variáveis de ambientes que apontem para a pasta bin e simulem que o seu código java esteja lá dentro. Simples, certo? Por esse motivo que existem os famosos JAVA_HOME e CLASSPATH. Abaixo uma descrição sobre eles.

JAVA_HOME: JAVA_HOME, como o nome já diz é a LAR_DO_JAVA. (tradução estranha!). É nele que se indica onde que foi instalado o JDK (lar == morada == local em que “MORA” o JDK). Por exemplo: o meu JAVA_HOME é C:\Program Files\Java\jdk1.6.0_17 . Muitas vezes as pessoas pensam que o JAVA_HOME é onde está instalado o JRE. Não é isso! Quando se pensa JAVA_HOME,CLASSPATH e PATH se usa tanto o JDK e quanto o JRE. Usuários usam o JRE e desenvolvedores usam o JDK!

CLASSPATH: Ele significa caminho de classe. É onde se indica os .jars que estão localizados na pasta lib e jre/lib do JDK.

Valeu Hudson, ficou bem explicado... E basicamente era isso mesmo que queria saber, se o java, por default, já procurava o nome dessas variáveis. :)

Bacana, estamos aí, acrescentado conhecimento uns com os outros. E isso é o diferencial. Valeu! :)