Aproveite o mês das
carreiras
na Alura

44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Para que serve o String[] args em Java?

String[] args em Java

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...

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.

Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

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?

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Veja outros artigos sobre Programação