Boa noite a todos.
Só para esclarecimentos, os arquivos “*.jar” não são executáveis e não é o Netbeans que compila, ele apenas usa o compilador javac da linguagem java para compilar e o interpretador java da mesma linguagem para interpretar.
Como assim :?:
Na verdade, quando disseram que esse assunto já foi discutido aqui, no que é verdade, porque também já tive oportunidade de falar sobre isto.
Os arquivos “.jar" nada mais são do que um arquivo compactado com todas as pastas de seu projeto, armazenando uma estrutura de todo os packages do projeto, onde ficam os arquivos compilados em bytecodes ".class”.
Mas porque quando eu clico nele, eles executam :?:
Simples, a partir da versão 6 do JDK (Java Developer Kit) que contém a instalação dos compiladores Java e o JVM, este cria uma chave de registro no Windows, que associa todos os arquivos com a extensão “.jar” ao interpretador do JVM chamado Java, interpretando imediatamente todo o arquivos “*.class” que estão compatados dentro do Jar.
Isto seria a mesma coisa que o sistema operacional Windows (Meu Deus, ainda insisto em chamar o windows de sistema operacional), fazendo uma associação dos arquivos com extensão “.doc” ao Word.exe, “.xls” ao excel e assim também com os arquivos “.jar” ao java, criando assim uma falsa impressão de que os arquivos .jar sejam executáveis.
Procure entender o conceito Linguagem Interpretada Versus Linguagem Compilada, onde a linguagem Java por ser híbrida, executa muito bem as duas tarefas, com apenas uma diferença, toda linguagem compilada faz compilação e linkedição das bibliotecas do sistema operacional onde foi desenvolvido, tornando o arquivo executável com extensão “.exe”. Já o Java apenas compila em bytecodes, um código binário independente de código de máquina, onde será interpretado em um JVM (Java Virtual Machine) específico em sistema operacional qualquer, criando uma camada de abstração por debaixo deste, e é isto que faz com que o Java se torne multiplataforma.
Versões anteriores ao JDK 6, só executa os arquivos “.jar” através da linha de comando do prompt do DOS (Este sim é sistema operacional) com seguinte linha de comando
// Pra compilar
javac -cp pathdoprojeto/nomedoprojeto
// Pra executar
java -jar pathdoarquivojar/nomedoarquivo.jar
Um abraço