Todo desenvolvedor que se preze precisa conhecer a fundo o funcionamento e as variações dos comandos javac e java. Assim como faz-se necessário o conhecimento em criar, configurar, editar, gerar e empacotar classes através da linha de comando.

Sendo assim, serão abordadas, neste artigo, algumas dicas e conceitos sobre a utilização e funcionamento das propriedades de sistema e, para quem já finalizou todo o processo de criação e testes, informações sobre arquivos JAR e sua importância na finalização do projeto.

Atenção: Para poder executar os comandos deste artigo, é necessário ter o Java instalado no seu Sistema operacional.

Usando as propriedades de sistema

Existe uma classe em Java chamada java.util.Properties, cuja função é fornecer ao seu usuário informações persistentes do sistema, como versão do compilador Java, da VM, do sistema operacional e etc. Além disto, é possível adicionar e obter novas propriedades para uso futuro. Como por exemplo, no código a seguir:

Listagem 1: Adicionando e visualizando propriedades pelo Eclipse


import java.util.Properties;

public class HelloWorld {

	public static void main(String[] args) {		
		Properties propriedade = System.getProperties();
		propriedade.setProperty("Mouse", "Apple Magic Mouse");
		propriedade.list(System.out);
	}
}

Através do método setProperty da classe Properties, adicionamos uma dupla (Chave,Valor) às propriedades do sistema. Quando solicitamos a lista através do list(PrintStream out), a nossa propriedade adicionada estará lá, no meio das pré-definidas. Veja na imagem a seguir:

Listagem das propriedades do sistema, no console

Figura 1: Listagem das propriedades do sistema, no console

Como podemos confirmar na Figura 1, a propriedade adicionada através do Eclipse foi, de fato, incluída nas propriedades do sistema e listada junto delas.

Porém, como o foco aqui é linha de comando, como poderíamos fazer o mesmo através de comandos? Utilizando o comando -D.

Quando quisermos adicionar uma propriedade através da linha de comando, deve-se utilizar a seguinte sintaxe:

Listagem 2: Sintaxe do comando -D

 java -DKey=Value Classe 

Como você pode ver na sintaxe, o nome da chave está junto do comando -D, não é erro de digitação. Caso você queira adicionar espaço no nome da chave ou no valor, utilize aspas para isto. Por exemplo:

Listagem 3: Exemplo de utilização de -D com espaço na chave da propriedade

 java -DTamanhoTela=”15 polegadas”  Teste 

Antes de visualizarmos o resultado do comando acima, vamos recapitular os comandos para compilar(javac) e executar(java) aplicações java.

Quando você tiver criado a sua classe HelloWorld.java, para compilá-la, você vai utilizar o comando javac para chamar o compilador com as opções -d para indicar o local no qual os arquivos .class irão ficar e -classpath para indicar onde se deve procurar pelas classes para executar a operação. Assumindo que nossa classe esteja no pacote commandLine, teremos o seguinte código:

Listagem 4: Compilando com javac -d [local] -cp [path] Classe.java

javac -d commandLine/bin/ -classpath commandLine/bin/:. commandLine/HelloWorld.java

Após isto, para executar a nossa aplicação, utilizamos o seguinte comando:

Listagem 5: Executando a aplicação com o comando java

java -cp commandLine/bin/:. commandLine/HelloWorld

Isto terá como saída:

Output do Terminal após o comando java

Figura 2: Output do Terminal após o comando java

Como podemos ver, é a mesma saída do console do Eclipse. Para ajudar a visualização, está marcada na figura a propriedade que adicionamos através do IDE.

Tendo revisado isto, vamos agora por em prática o comando da Listagem 3, para adicionar uma nova propriedade através da linha de comando. Isso terá como saída:

Saída do Terminal com a inserção de uma nova propriedade através do comando

Figura 3: Saída do Terminal com a inserção de uma nova propriedade através do comando

Como podemos ver, as duas propriedades foram listadas. Tanto a que é criada através da IDE, ou, se preferir, através de um código pré-definido da classe, e a outra que foi criada através da linha de comando com o comando da Listagem 3.

Arquivos JAR

Quando o desenvolvedor finaliza o sistema, com todas as classes criadas, compiladas e testadas, é hora de compactar todas as classes e arquivos para que fique mais fácil a distribuição e instalação do aplicativo por outras pessoas.

Para isso, Java fornece os arquivos JAR (Java ARchive) que são semelhantes aos arquivos ZIP. Eles servirão para que você reúna todas as suas classes e arquivos importantes em um, ou alguns, arquivos e repasse-os para os clientes.

Com um .JAR em mãos, pode-se acessar todas as classes através do java e javac, sem precisar descompactá-lo.

Para criar um arquivo jar, eis a sintaxe:

Listagem 6: Sintaxe do comando jar

 jar -cf Arquivo.jar diretorio 

Isto criará um arquivo .jar contendo a pasta diretório, todos os seus subdiretórios e seus respectivos arquivos. Aos candidatos da certificação OCJP 5,6,7 não se preocupem, esta sintaxe não cairá no exame.

Encontrando arquivos jar

A única diferença entre encontrar arquivos jar e arquivo de pacote, é que para se utilizar o jar você precisa colocar o nome do arquivo no final do caminho. Ou seja, se precisa compilar uma classe Teste.java que precise de uma outra classe que está dentro do tools.jar, que, por sua vez, está dentro da pasta x1, este seria o comando:

Listagem 7: Sintaxe para enconrrar arquivos jar

 javac -classpath x1/tools.jar Teste.java 

Isto informará ao compilador que busque os arquivos necessários dentro do jar.

Mas, e se tools não fosse um .jar e sim um pacote? Como ficaria?

Listagem 8: Sintaxe para encontrar aquivo de pacote

 javac -classpath x1 Teste.java 

Com arquivos de pacotes não precisamos especificar o nome do arquivo! Lembrando que, ao utilizar o -classpath (ou -cp), o último diretório no caminho deve ser o super-diretório da raiz do pacote. Ou seja, se você tem um pacote x1.com, x1 será o diretório raiz do pacote x1.com e deverá estar no último diretório na declaração do classpath. Fazendo isto, o javac e o java poderão buscar em todos os pacotes contidos em x1, evitando que você precise digitar cada pacote existente.

Utilizando ../jre/lib/ext com arquivos JAR

Ao instalar o Java, dentro da árvore que se forma com todos os arquivos relacionados ao Java existe uma árvore de subdiretórios chamada jre/lib/ext. Você pode colocar seus arquivos .jar dentro desta pasta e o javac e java irão encontrar seus arquivos sem precisar ser declarado no -cp. Isto se deve porque javac e java efetuam a busca em locais padrões antes de pesquisarem nos locais declarados na linha de comando.

Espero que tenham gostado da abordagem feita neste artigo sobre alguns comandos importantes, os quais farão com que o desenvolvedor saiba programar e executar aplicativos Java através da linha de comando.

Forte Abraço!