Chamada a Aplicativos e Bibliotecas Externas – Parte 01

Veja neste artigo chamada a aplicativos e bibliotecas externas.

Chamada a Aplicativos e Bibliotecas Externas – Parte 01

por Paulo Campos

Diversas vezes durante a integração de um sistema ou durante o desenvolvimento de alguma aplicação / servlet para um ambiente corporativo, baseado em diversos sistemas e ferramentas diferentes, nos deparamos com a necessidade de interagir com programas de terceiros ou com o próprio sistema operacional.

Temos dois meios de resolver esse pequeno contra-tempo:

1 – Executar ferramentas e/ou aplicações através de um programa Java

    2 – Utilizar métodos nativos em seu programa (Esse será explicado na 2ª parte dessa matéria)


Execução de Ferramentas e/ou Aplicativos através de seu programa Java

Primeiramente, vamos levantar uma questão importante: Utilizando-se de qualquer um dos métodos você perderá portabilidade, pois vamos estar, muitas vezes, executando comandos ou aplicações especificas de um sistema operacional, o que impossibilitaria portar nossa aplicação. Em segundo plano, devemos levar em consideração que a utilização de bibliotecas nativas em Java e bem mais complexo do que a execução de programas. Dados os devidos alertas, vamos começar!

 

Assim como na linguagem C temos a função fork(), em Java temos a classe Runtime[1] e o método exec(), que será o que utilizaremos para realizar nossa tarefa. Devemos levar em consideração que diferente da função fork(), o método exec() não lhe da a possibilidade de controlar diretamente o ambiente de execução, ele simplesmente lhe fornece uma interface para a execução de aplicativos e/ou comandos dependentes da plataforma onde rodam. Tendo em vista um ambiente empresarial onde diferentes aplicações precisam coexistir, usar Runtime.exec() ao custo de portabilidade pode ser uma ótima opção.

 

[1] Classe Runtime – Métodos Mais Utilizados

 

Process exec(String command)


Descrição:

Executa o comando passado através de uma String em um processo separado

Parâmetros:

command – Um comando especifico do sistema.

 

Retorna:

Um objeto Process para poder gerenciar os sub processos

 

  Throws:

SecurityException – se uma gerenciador de segurança (security manager) existir e seu método
 
checkExec não permitir a criação de um sub processo

IOException – se um erro de I/O ocorrer

NullPointerException – se for passado nulo para a String command

IllegalArgumentException – se a String command estiver vazia

 

Exemplo:

Process p = Runtime.getRuntime().exec(“/bin/ls”);

 

Process exec(String[] cmdarray)

 

Descricao:

Executa o comando e seus argumentos passados através de um Array de String em um
processo separado

 

Parametros:

Cmdarray – array contendo o comando a ser executado e seus argumentos

Retorna:

Um objeto Process para poder gerenciar os sub processos

 

Throws:

SecurityException – se uma gerenciador de segurança (security manager) existir e seu método
 
checkExec não permitir a criação de um sub processo

IOException – se um erro de I/O ocorrer

NullPointerException – se for passado nulo para a String command
IndexOutOfBoundsException
- se cmdarray for um array vazio (tem tamanho 0).

 

Exemplo:

String[] cmd = {"/bin/ls ", "-la"};

Process p = Runtime.getRuntime().exec(cmd);

 

 

void exit(int status)

Descrição:

Termina a Java virtual machine (JVM) que está em execução iniciando sua seqüência de
desligamento. Sua forma mais comum de uso é chamando System.exit(int status) .

 

Parâmetros:

status – status do termino da aplicação. Por padrão qualquer status diferente de zero indica
um termino anormal do programa

 

Retorna:
nada

 

Throws:

SecurityException – se uma gerenciador de segurança (security manager) existir e seu método
 
checkExec não permitir o termino do aplicativo com o status desejado

 

  Exemplo:

Runtime.getRuntime().exit(2);

Ou

System.exit(2);

 

 

static Runtime getRuntime()

Descrição:

Retorna o Objeto Runtime associado a aplicação java executada

 

Parâmetros:
nenhum

 

Retorna:
O objeto Runtime associado a aplicação Java executada

 

 

Throws:

nada

 

Exemplo:

Runtime.getRuntime()

 

void halt(int status)

Descrição:

Termina forçadamente a Java virtual machine (JVM) que esta em execução.

Parâmetros:

status – status do termino da aplicação. Por padrão qualquer status diferente de zero indica
um termino anormal do programa. Se o método exit() já tiver sido invocado, então, o 
código de status do método halt() vai sobrepor código de status do método exit();

 

Retorna:
nada

 

Throws:

SecurityException – se uma gerenciador de segurança (security manager) existir e seu método
 
checkExec não permitir o termino do aplicativo com o status desejado

Exemplo:

Runtime.getRuntime().halt(2);

 

 

void traceInstructions(boolean on)

Descrição:

Habilita / Desabilita  o rastreio das instruções.

 

Parâmetros:

on - true habilita o rastreio de instruções; false desabilita o rastreio.

Retorna:
Nada.

 Throws:

Nada.

Exemplo:

Runtime.getRuntime().traceInstructions(true);

 

void traceMethodCalls(boolean on)


Descrição:

Liga / Desliga o rastreio das chamadas a métodos

 

Parâmetros:

on - true habilita o rastreio de chamadas a métodos; false desabilita o rastreio.

Retorna:
Nada

 

Throws:

Nada.

 

Exemplo:

Runtime.getRuntime().traceMethodCalls(true);

 

 

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados