Detectando o SO através do Java

Olá Pessoal…

Hoje vou mostrar como detectar o Sistema Operacional através de um código simples feito em Java.


Bom pessoal, abaixo utilizo a função System.getProperty , assim, trazendo dados do SO, como arquitetura (x86, 64), a versão e o Sistema que está sendo utilizado.
Mas afinal, para que testar o SO para fazer o programa?.. Por exemplo, no caso você está fazendo um programa gráfico que use alguns recursos da máquina (como arquivos temporários), se for Linux, você irá carregar em um diretório, e se for Windows, será outro diretório, para distinguir, basta usar o comando System.getProperty(“os.name”), dessa forma trazendo o nome do SO, se é Windows, Unix-Like, Macintosh, etc.

//Classe de teste de Sistema Operacional
public class testandoSO {

    //Variável estática que irá conter o nome do SO em minúsculo
    private static String SO = System.getProperty("os.name").toLowerCase();

    //Variável estática que irá conter a versão do SO em minúsculo
    private static String Vr = System.getProperty("os.version").toLowerCase();

    //Variável estática que irá conter a arquitetura do SO em minúsculo
    private static String Ar = System.getProperty("os.arch").toLowerCase();

    //Função principal
    public static void main(String[] args) {
        System.out.printf("\n-----------------------------------------------------------\n");

        //Se for Windows
        if (isWindows()) {
            System.out.printf("\n\tSendo executado em Sistema - Windows\n");
        }

        //Senão, se for Macintosh
        else if (isMac()) {
            System.out.printf("\n\tSendo executado em Sistema - Mac\n");
        }

        //Senão, se for Unix-Like (Unix, Linux, etc)
        else if (isUnix()) {
            System.out.printf("\n\tSendo executado em Sistema - Unix ou Linux\n");
        }

        //Senão, se for Solaris
        else if (isSolaris()) {
            System.out.printf("\n\tSendo executado em Sistema - Solaris\n");
        }

        //Senão, sistema irreconhecido
        else {
            System.out.printf("\n\tSistema nao detectado\n"</span>);
        }

        //Mostrando o SO que está sendo executado</span>
        System.out.printf("\n-----------------------------------------------------------\n");
        System.out.printf("\n\t--> Sistema:     "+SO+" <--\n");
        System.out.printf("\n\t--> Versao:      "+Vr+" <--\n");
        System.out.printf("\n\t--> Arquitetura: "+Ar+" <--\n");
        System.out.printf("\n-----------------------------------------------------------\n");
    }

    //Função que verifica se é windows
    public static boolean isWindows() {
        return (SO.indexOf("win") >= 0);
    }

    //Função que verifica se é Macintosh
    public static boolean isMac() {
        return (SO.indexOf("mac") >= 0);
    }

    //Função que verifica se é Unix-Like
    public static boolean isUnix() {
        return (SO.indexOf("nix") >= 0 || SO.indexOf("nux") >= 0 || SO.indexOf("aix") > 0 );
    }

    //Função que verifica se é Solaris
    public static boolean isSolaris() {
        return (SO.indexOf("sunos") >= 0);
    }

}

 

Abaixo o exemplo do programa rodando em ambiente Windows:

Detectando Windows em Java

Detectando Windows em Java

E abaixo o exemplo do programa rodando em ambiente Linux:

Detectando Linux em Java

Detectando Linux em Java

Como podem perceber, foi criado algumas funções auxiliares que retornam se o SO é Windows, Linux, Mac, etc… através de testes simples.
Referência: What os or arch value can I use?

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação