Detecting OS Type In Java

While working in java we can determine OS by Java system property “os.name”. Here is a simple java class to determining OS type using System.getProperty(“os.name”).

public class OSInfo {
    public enum OS {
        WINDOWS, UNIX, POSIX_UNIX, MAC, OTHER
    }
    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.indexOf("windows") != -1) {
                os = OS.WINDOWS;
            } else if (osName.indexOf("linux") != -1
                    || osName.indexOf("mpe/ix") != -1
                    || osName.indexOf("freebsd") != -1
                    || osName.indexOf("irix") != -1
                    || osName.indexOf("digital unix") != -1
                    || osName.indexOf("unix") != -1) {
                os = OS.UNIX;
            } else if (osName.indexOf("mac os x") != -1) {
                os = OS.MAC;
            } else if (osName.indexOf("sun os") != -1
                    || osName.indexOf("sunos") != -1
                    || osName.indexOf("solaris") != -1) {
                os = OS.POSIX_UNIX;
            } else if (osName.indexOf("hp-ux") != -1
                    || osName.indexOf("aix") != -1) {
                os = OS.POSIX_UNIX;
            } else {
                os = OS.OTHER;
            }

        } catch (Exception ex) {
            os = OS.OTHER;
        }

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

Use this class as given below

OSInfo.OS osType = OSInfo.getOs();