Detect OS Name and Version Java

Java is Platform independent and can run everywhere. Knowing this, it can be worth knowing in what operation system the application is running. To detect the current operation system, you can use the OSInfo class below, which retrieves the information from the system properties and returns an OS enum that holds the name and version of the operating system the application is running on.

Detect Operating System

We can get the current operation system name by calling System.getProperty("os.name");. We evaluate this value and appropriately map it to the correct os. Finally we add the version number of the os by calling the System.getProperty("os.version");.

package com.memorynotfound.file;

import java.io.IOException;
import java.util.Locale;

public class OSInfo {

    public enum OS {
        WINDOWS,
        UNIX,
        POSIX_UNIX,
        MAC,
        OTHER;

        private String version;

        public String getVersion() {
            return version;
        }

        public void setVersion(String version) {
            this.version = version;
        }
    }

    private static OS os = OS.OTHER;

    static {
        try {
            String osName = System.getProperty("os.name");
            if (osName == null) {
                throw new IOException("os.name not found");
            }
            osName = osName.toLowerCase(Locale.ENGLISH);
            if (osName.contains("windows")) {
                os = OS.WINDOWS;
            } else if (osName.contains("linux")
                    || osName.contains("mpe/ix")
                    || osName.contains("freebsd")
                    || osName.contains("irix")
                    || osName.contains("digital unix")
                    || osName.contains("unix")) {
                os = OS.UNIX;
            } else if (osName.contains("mac os")) {
                os = OS.MAC;
            } else if (osName.contains("sun os")
                    || osName.contains("sunos")
                    || osName.contains("solaris")) {
                os = OS.POSIX_UNIX;
            } else if (osName.contains("hp-ux") 
                    || osName.contains("aix")) {
                os = OS.POSIX_UNIX;
            } else {
                os = OS.OTHER;
            }

        } catch (Exception ex) {
            os = OS.OTHER;
        } finally {
            os.setVersion(System.getProperty("os.version"));
        }
    }

    public static OS getOs() {
        return os;
    }
}

Detecting the current os the application is running on.

package com.memorynotfound.file;

public class DetectOS {

    public static void main(String... args){
        System.out.println("OS: " + OSInfo.getOs());
        System.out.println("OS version: " + OSInfo.getOs().getVersion());
        System.out.println("Is mac? " + OSInfo.OS.MAC.equals(OSInfo.getOs()));
    }
}

Output

OS: MAC
OS version: 10.10.5
Is mac? true

References

You may also like...