Tudo por causa de um System.exit( 0 )

 
Olá pessoal,
    Creio que todos que começam com java, se deparam primeiramente com a seguinte classe:
    public class HelloWorld{
         public static void main(String[] args) {
                 System.out.println(“Olá mundo”);
         }

    } 

   Recentemente precisei trabalhar com um componente que utiliza uma DLL do windows, quebrando a multiplataforma ;-(, daí que depois de ralar várias horas tentando descobrir como descarregar a dll do classloader, eis que consegui a resposta. Tudo estava em um simples método: System.Exit( 0 ). A grande questão é, afinal, o que é a classe System ? para que serve ?
   Bem, se olharmos a documentação padrão do java, veremos que esta classe é uma abstração a vários recursos muito uteis do Ambiente em que se esta executando a aplicação, como por exemplo:
  – Acesso a variaveis de ambiente
  – Acesso a saida padrão do console
  – Carregamento de bibliotecas nativas ( dll )
   
     Além é claro, de alguns outros recursos interessantes, como, recuperar a data atual do SO ou ainda 
Copiar um Array para outro.

    Vejam os trechos de código abaixo:

     ———Copiando um array pra outro———————————————-

        String[] arrayA = new String[]{“Joao”,”Maria”,”Fulano”};
        String[] arrayB = new String[ arrayA.length ];
        
        System.arraycopy( arrayA, 0, arrayB, 0, arrayA.length );
        
        for (String vlr : arrayB) {
            System.out.println( vlr );
        }

     ———————————————————————————–

     ———-Recuperando o valor de uma variável de ambiente———————–

        String vlr = System.getenv(“JAVA_HOME”);       
        System.out.println( vlr );

     ————————————————————————————

     ———–Recuperar importantes propriedades do ambiente de execução———-

        Properties props = System.getProperties();
       
        Set

> ent = props.entrySet();                 for (Entry entry : ent ) {                         System.out.println( entry.getKey() + ” = ” + entry.getValue() );                     }

  
      Obs: Bastante útil quando se deseja saber  a arquitetura do processador( 32 ou 64  bits ), ou ainda
o sistema operacional do usuário ( Windows, Linux, MacOS )

      ————————————————————————————–
    
      ———–Sugere a VM para chamar a Garbage Colector—————————

          System.gc(); 

          Obs:  Sugerir e bem diferente de mandar viu 😉 SCJP nessa horas faz toda a diferença.
      ————————————————————————————

     ————————-Carregar uma biblioteca nativa——————————
 
         System.loadLibrary(“suadll”);
 
     ————————————————————————————-

     ————Termina a execução da maquina virtual———————————-

          System.exit( 0 );
   
        Obs: Lembre-se disso quando passar por erros de DLL que precisam ser carregadas a cada execução,  principalmente em Applets(  Use no Stop method ), sofri alguns dias por causa desse bendito método.

    ————————————————————————————–

    Um grande abraço.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s