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.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s