O pacote Java JDK disponibiliza diversos utilitários para desenvolvimento, gerenciamento e monitoração de aplicações Java. Muitos são programas de linha de comando, ou seja, não dispõe de uma interface visual gráfica para utilização, e são ótimas opções para criação de scripts de automatização de processos.
O foco deste trabalho serão os utilitários do pacote JDK voltados ao desenvolvimento de softwares, tais como javac, jdeps, java, jdb, javap, javadoc e jar.
Diretório de trabalho
Para demonstrar a utilização dos utilitários de desenvolvimento do Java JDK será necessário criar um diretório de trabalho.
A seguir mostraremos os comandos necessários para a criação do diretório de trabalho no sistema operacional Linux de qualquer distribuição:
- Estando no modo gráfico,
abra um Terminal e vá ao diretório home digitando o comando a seguir:
$ cd ~
- Digite os comandos a seguir para criar e acessar o diretório de trabalho,
respectivamente:
$ mkdir RecursosJdk $ cd RecursosJdk
Para criar o diretório de trabalho no sistema operacional Windows devemos executar os passos a seguir:
- Abra o prompt MS-DOS e digite o comando a
seguir para criar o diretório:
mkdir RecursosJdk
- Entre no diretório de trabalho com o comando a seguir:
cd RecursosJdk
Compilando um programa Java
Compilar um programa é converter o código-fonte em código de máquina. Este processo é realizado com o utilitário javac, que é de linha de comando e possui diversas opções, dentre as quais destacamos as presentes na Tabela 1.
Opção |
Descrição |
-verbose |
Exibe o que esta acontecendo durante o processo de compilação. |
-classpath |
Especifica o local onde procurar por bibliotecas e classes. |
-sourcepath |
Especifica o local onde estão os arquivos fontes. |
-d <diretório> |
Especifica o local onde os arquivos .class serão gerados. |
-s <diretório> |
Especifica o local onde os arquivos fontes serão gerados. |
-version |
Mostra a versão do utilitário javac. |
Tabela 1. Principais opções do utilitário javac.
Para demonstrar a utilização do utilitário javac, primeiramente deve-se criar um arquivo chamado HelloWorld.java no diretório de trabalho contendo o conteúdo da Listagem 1.
Listagem 1. HelloWorld.java
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Para compilar o programa HelloWorld.java abra um Terminal (no Linux) ou o Prompt MS-DOS (no Windows) e execute o comando a seguir:
javac –verbose HelloWorld.java
O comando javac produzirá um arquivo chamado HelloWorld.class. Um arquivo com a extensão .class contém o código de máquina, que no Java é chamado bytecode.
Verificando dependências
Um programa Java, por mais simples que seja, pode utilizar diversas bibliotecas da Linguagem Java e também bibliotecas de terceiros. O utilitário jdeps analisa uma determinada classe e gera um relatório contendo todas as dependências existentes para a classe. Este utilitário de linha de comando possui diversas opções e as principais estão relacionadas na Tabela 2.
Opção |
Descrição |
-dotoutput <dir> |
Especifica o local onde será gerado o arquivo DOT |
-summary |
Mostra apenas o sumário do relatório |
-verbose |
Mostra todos os níveis de dependência |
-classpath <dir> |
Especifica o local onde estão as classes para a análise |
-profile |
Mostra qual profile as dependências dependem |
-version |
Mostra a versão do utilitário jdeps |
Tabela 2. Principais opções do utilitário jdeps
Para analisar as dependências da classe HelloWorld.class abra um Terminal (no Linux) ou o Prompt MS-DOS (no Windows) e execute o comando a seguir:
jdeps HelloWorld.class
O utilitário jdeps produzirá um relatório parecido com o da Figura 1, onde mostra que a única dependência da classe HelloWord.class é o arquivo rt.jar. Este arquivo contém todos os recursos base da Linguagem Java, tais como, tipos de dados e funções e entrada e saída
Figura 1. Resultado do comando jdeps.
Executando um programa Java
Para executar o programa HelloWorld executar os comandos abra um Terminal (no Linux) ou o Prompt MS-DOS (no Windows) e execute o comando:
java HelloWorld
Debugando um programa Java
Debugar um programa é analisar linha a linha a execução do mesmo. Esse processo é muito fácil quando se utiliza uma IDE (Integrated Development Environment). Nas situações onde uma IDE não esta disponível, é possível debugar um programa Java utilizando o utilitário de linha de comando chamado jdb.
Para demonstrar a utilização do utilitário jdb deve-se criar um arquivo chamado DebugSample.java no diretório de trabalho chamado RecursosJdk contendo o conteúdo da Listagem 2.
Listagem 2. DebugSample
public class DebugSample
{
public static void main(String[] args) {
System.out.println("Debug Sample...");
int a = 10;
System.out.println("Value of 'a': " + a);
int b = 20;
System.out.println("Value of 'b': " + b);
int c = a * b;
System.out.println("a x b is....: " + c);
}
}
É necessário que o programa esteja compilado para que possa ser debugado. Para compilar o programa DebugSample execute o comando javac DebugSample.java na linha de comando do Terminal (Linux) ou do Prompt MS-DOS (Windows).
Para iniciar o processo de depuração do programa DebugSample, execute o comando jdb DebugSample. A execução do comando produzirá um resultado semelhante ao da Figura 2.
Figura 2. Resultado do comando jdb.
Antes de iniciar o processo de debug é necessário dizer ao jdb para ele parar no início do programa. Isto é feito digitando o comando stop in DebugSample.main no prompt do jdb.
O comando produzirá uma saída semelhante ao da Figura 3.
Figura 3. Comando stop in.
Para iniciar o processo do debug efetivamente, digite o comando run no prompt do jdb. A Figura 4 ilustra o resultado do comando run.
Figura 4. Resultado do comando run.
A qualquer momento do processo de depuração do programa é possível visualizar um trecho do código fonte referente ao ponto onde o debug se encontra. Para isso basta digitar o comando list no prompt do jdb. A Figura 5 exibe o resultado do comando list.
Figura 5. Resultado do comando list.
A figura mostra que o processo de debug esta parado na linha 5. Isto é sinalizado pelo conjunto de caracteres "=>" logo após o número 5.
Para avançar para a próxima linha de execução basta digitar o comando next no prompt do jdb. A Figura 6 mostra o resultado do comando next.
Figura 6. Resultado do comando next.
Pela Figura 6 pode-se verificar que o processo de debug avançou para a linha 7. É possível definir um novo ponto de parada digitando o comando a seguir:
stop at DebugSample:10
O comando produzirá uma saída semelhando ao da Figura 7.
Figura 7. Resultado do comando stop.
Para avançar até o novo ponto de parada basta digitar o comando cont no prompt do jdb.
Com esta sequencia de comandos é possível debugar todo um programa Java por linha de comando. Para finalizar o processo de debug digite novamente o comando cont no prompt do gdb.
Desmontando um programa Java
Desmontar um programa significa reverter o código de máquina em código fonte e para isto deve-se utilizar o programa javap. Este utilitário de linha de comando possui diversas opções e as principais estão relacionadas na Tabela 3.
Opção |
Descrição |
-version |
Mostra a versão do utilitário javap |
-verbose |
Exibe o que esta acontecendo durante o processo de desmontagem. |
-l |
Mostra o número da linha e o local da tabela de variáveis. |
-pulbic |
Mostra apenas classes e membros públicos. |
-protected |
Mostra apenas classes e membros protegidos e públicos. |
-private |
Mostra todas as classes e membros. |
-c |
Desmonta a classe. |
-s |
Mostra assinaturas de tipos internos. |
-sysinfo |
Mostra informações de sistema (path, tamanho, data, MD5 Hash) |
-constants |
Mostra constantes. |
Tabela 3. Principais opções do comando javap.
Para desmontar a classe HelloWorld.class digite o seguinte comando:
javap -c HelloWorld.class
Observação. O processo de desmontagem nunca conseguirá gerar um resultado idêntico ao código fonte original. O processo serve apenas para resgatar alguma parte do código fonte original e dar uma ideia de como o código foi construído.
Gerando documentação
Todo programa Java deve ter algum tipo de documentação. Uma opção é acrescentar comentários no próprio código fonte do programa. A Linguagem Java dispõe de um conjunto de recursos para adicionar comentários no programa chamado comentários Javadoc.
Os principais recursos para comentários Javadoc estão relacionados na Tabela 4.
Opção |
Descrição |
/** ... */ |
Define o início e o término de um comentário Javadoc. |
@author |
Utilizado apenas para classes e interfaces. Indica o autor. |
@version |
Utilizado apenas para classes e interfaces. Indica a versão. |
@param |
Utilizado apenas para métodos e construtores. Indica os parâmetros recebidos. |
@return |
Utilizado apenas para métodos. Indica o valor retornado. |
@exception |
Utilizado apenas para métodos. Indica o tipo da exceção retornada. |
Tabela 4. Recursos para comentários Javadoc.
A Listagem 3 mostra um programa Java com os comentários Javadoc.
Listagem 3. Programa Java com comentários JavaDoc.
/**
* Programa Java para demonstrar a utilização do utilitário javadoc.
*
* @author Eros Vitor Bornatowski
* @version 1.0.0
*
*/
public class JavadocSample
{
public static void main(String[] args) {
System.out.println("Hello Java Language!!!");
}
/**
* Calcular juros simples.
*
* @params c Capital
* @params i Taxa
* @params n Período
* @returns Juros calculado
*/
private double calcularJurosSimples(double c, float i, int n)
{
return c * (i/100) * n;
}
}
A geração da documentação é feita pelo utilitário de linha de comando chamado javadoc. Este utilitário de linha de comando possui diversas opções, dentre as quais podemos destacar -d <dir>, que especifica o local onde a documentação será gerada.
Para gerar a documentação do programa JavadocSample.java basta executar o comando a seguir num Terminal Linux ou no Prompt MS-DOS:
javadoc –d c:\DocumentacaoJavadoc JavadocSample.java
O comando irá gerar uma série de arquivos HTML referente a documentação do programa JavadocSample.java. O diretório DocumentacaoJavadoc será criado caso ele ainda não exista.
É possível personalizar a documentação gerada pelo utilitário javadoc, mas isto está fora do escopo desse artigo. A Figura 8 mostra a página inicial da documentação HTML gerada pelo comando javadoc.
Figura 8. Página inicial da documentação gerada pelo Javadoc.
Distribuindo o programa Java
Distribuir um programa é o último passo do ciclo básico do desenvolvimento de uma aplicação. Na linhagem Java a distribuição é o processo de reunir todos os arquivos da aplicação num único arquivo. Isto é realizado pelo utilitário jar. Este utilitário de linha de comando possui diversas opções e as principais estão relacionadas na Tabela 5.
Opção |
Descrição |
-c |
Cria um novo arquivo jar |
-t |
Lista o conteúdo do arquivo jar |
-x |
Extrai arquivos do arquivo jar |
-u |
Atualiza arquivos existentes |
-v |
Mostra os procedimentos realizados pelo programa. |
-f |
Especifica o nome do arquivo |
-m |
Inclui informação do manifesto do arquivo de manifesto especificado |
-e |
Especifica o ponto de entrada da aplicação para aplicação stand-alone empacotada num arquivo jar executável. |
-O |
Apenas empacota sem utilizar a compressão |
-M |
Não cria um arquivo de manifesto |
-i |
Gera um índice de informação para os arquivos especificados no jar |
-C |
Mudar para o diretório especificado e inclue o seguinte arquivo. |
Tabela 5. Principais opções do programa jar.
Para empacotar e distribuir o programa HelloWorld, num Terminal Linux ou no Prompt MS-DOS (Windows), execute o comando a seguir:
jar cvfe HW.jar HelloWorld HelloWorld.class
Uma vez gerado o arquivo JAR, este pode ser distribuído e executado em qualquer sistema operacional que tenha o Java Runtime Environment (JRE) instalado.
Para executar o arquivo HW.jar gerado pelo comando anterior, execute o comando java –jar HW.jar na linha de comando do Terminal Linux ou no Prompt MS-DOS.
Os utilitários apresentados neste artigo estão presentes em qualquer versão do pacote Java JDK. A perfeita compreensão e utilização dos utilitários de linha de comando são fundamentais para a criação de processos de automação de tarefas. Muitos utilitários são utilizados por outros programas, tal como o Eclipse, que é uma ferramenta de desenvolvimento Java que integra vários recursos, tais como edição, compilação e depuração de um programa Java.
Links
Oracle, Java SE 6 Documentation, JDK
Tools and Utilities.
http://docs.oracle.com/javase/6/docs/technotes/tools/
Oracle,
Java SE 7 Documentation, JDK Tools and Utilities.
http://docs.oracle.com/javase/7/docs/technotes/tools
Oracle,
Java SE 8 Documentation, JDK Tools and Utilities.
https://docs.oracle.com/javase/8/docs/technotes/tools/