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.