Artigos de Tecnologia e Negócios

Para que serve o String[] args em Java?

Alex Felipe
Alex Felipe

Acabei de terminar mais uma funcionalidade da minha aplicação e preciso testá-la. Porém a minha aplicação possui o ambiente de desenvolvimento, teste e produção:


public class Main {

public static void main(String\[\] args) {

String ambiente = ""; if(ambiente.equals("DEVELOPMENT")){ System.out.println("executando codigo de desenvolvimento"); } else if (ambiente.equals("TEST")){ System.out.println("executando codigo de teste"); } else if (ambiente.equals("PRODUCTION")){ System.out.println("executando codigo de producao"); } }

}

Agora vou usar a classe Scanner e fazer a leitura pelo teclado para testar o meu código:


Scanner sc = new Scanner(System.in); System.out.println("Informe o ambiente"); String ambiente = sc.nextLine();

Resultado:


Informe o ambiente DEVELOPMENT executando codigo de devesenvolvimento

Poxa vida... Agora todas as vezes que eu precisar testar a minha aplicação eu terei que executar meu programa e informar o ambiente manualmente?

Além de cansativo, existe a possibilidade de eu errar a opção e executar um ambiente por engano ou até mesmo não executar nenhum. Como eu posso fazer com que, ao executar o meu programa, ele já saiba que ambiente rodar? Pelo parâmetro args do método main!


public static void main(String\[\] args) { String ambiente = args\[0\]; //código }

Ué, aquela variável que não serve pra nada?

O parâmetro args é um array que recebe dados da command line (linha de comando), ou seja, no momento que executamos a nossa aplicação podemos enviar uma informação por meio dele.

Enviando o parâmetro args na execução

Vamos então fazer teste enviando o valor DEVELOPMENT durante a execução da classe Main:

cap-3

Ótimo! Agora não vou precisar ficar digitando o ambiente todas as vezes, mas... Ainda tenho que ficar escrevendo no command line...

Posso acabar errando o parâmetro em algum momento e fazer uma caca... Para resolver esse problema, basta criar arquivos .bat para cada um dos ambiente!

DEVELOPMENT.bat:

java Main DEVELOPMENT

PRODUCTION.bat:

java Main PRODUCTION

TEST.bat:

java Main TEST

Testando os ambientes:

cap-prod-bat

cap-dev-bat

cap-test-bat

Excelente! Agora eu posso testar a minha aplicação em vários ambientes sem nenhuma preocupação! E se eu precisar saber, por exemplo, saber qual versão do java está sendo executada em cada ambiente?

Podemos utilizar as Properties da classe System e pegar uma propriedade do ambiente por meio do método getProperty():


//código

if(ambiente.equals("DEVELOPMENT")){ System.out.println("Versao do Java: " + System.getProperty("java.version")); System.out.println("executando codigo de desenvolvimento"); }

//código

Testando o ambiente de desenvolvimento:

cap-dev-version-bat

Excelente! Agora consigo verificar se o meu ambiente está sendo executado em uma versão esperada! Poderíamos coletar outras informações por meio do getProperty(), como por exemplo usuário (user.name) ou o sistema operacional (os.name).

E aí, já passou por alguma situação em que precisava testar ambientes diferentes? O que achou dessa alternativa utilizando o String[] args e as Properties da classe System? Compartilhe sua solução conosco nos comentários!

Aproveite também e assine a nossa newsletter para receber conteúdos como este ;)

Artigos de Tecnologia e Negócios