Java - detect operating system name (Windows, Linux, macOS)
In this short article, we would like to show how to detect used operating system in Java application.
Quick solution:
String osName = System.getProperty("os.name");
// Windows 10
// Linux
// Mac OS X
// etc.
or:
// import org.apache.commons.lang3.SystemUtils;
boolean isWindows = SystemUtils.IS_OS_WINDOWS;
boolean isLinux = SystemUtils.IS_OS_LINUX;
boolean isMac = SystemUtils.IS_OS_MAC;
Where: SystemUtils
should be attached as dependecy (Maven dependency is avaialble here).
Operating system name detection
In this section, you can find information what os.name
property should return on specific operating system.
public class Program {
public static void main(String[] args) {
// e.g. when running on Windows 10
System.out.println(System.getProperty("os.name")); // Windows 10
// e.g. when running on Ubuntu
System.out.println(System.getProperty("os.name")); // Linux
// e.g. when running on MacBook
System.out.println(System.getProperty("os.name")); // Mac OS X
}
}
Operating system type detection
Knowledge about operating system name may be requred when some operating system uses specific configuration or resources. In this section we would like to show different aproaches to detect operating system type.
1. Apache Commons library
Using this approach it is required to attach commons-lang3
library provided by Apache Software Foundation.
Usage example (it was run under Windows 10):
import org.apache.commons.lang3.SystemUtils;
public class Program {
public static void main(String[] args) {
// Most popular usage:
System.out.println(SystemUtils.IS_OS_WINDOWS); // true
System.out.println(SystemUtils.IS_OS_LINUX); // false
System.out.println(SystemUtils.IS_OS_MAC); // false
// Less popular usage:
System.out.println(SystemUtils.IS_OS_SOLARIS); // false
System.out.println(SystemUtils.IS_OS_SUN_OS); // false
}
}
Hint:
Using
commons-lang3
library we are able to detect more precised OS version, e.g.SystemUtils.IS_OS_WINDOWS_8
,SystemUtils.IS_OS_WINDOWS_10
, etc.
Example output:
true
false
false
false
false
Maven dependency:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
Source: https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.12.0
2. Custom solution
In this section, you can find simple custom solution that lets to detect Windows
, Linux
or Mac
operating system. For more precised detection it is recommended to use commons-lang3
library.
Usage example (it was run under Windows 10):
public class Program {
public static void main(String[] args) {
System.out.println("OS code: " + SystemUtils.OS_CODE); // OS code: Windows
System.out.println("OS name: " + SystemUtils.OS_NAME); // OS name: Windows 10
System.out.println("is Windows: " + SystemUtils.IS_OS_WINDOWS); // is Windows: true
System.out.println("is Linux: " + SystemUtils.IS_OS_LINUX); // is Linux: true
System.out.println("is Mac: " + SystemUtils.IS_OS_MAC); // is Mac: true
}
}
Example output:
OS code: Windows
OS name: Windows 10
is Windows: true
is Linux: false
is Mac: false
Example SystemUtils.java
file:
public class SystemUtils {
/** Returns OS name, e.g. Windows 10, Linux, Mac OS X, etc. */
public static final String OS_NAME = getOSName();
private static final String OS_TEXT = OS_NAME.toLowerCase();
public static final boolean IS_OS_WINDOWS = OS_TEXT.startsWith("windows");
public static final boolean IS_OS_LINUX = OS_TEXT.startsWith("linux");
public static final boolean IS_OS_MAC = OS_TEXT.startsWith("mac");
/** Returns OS code, e.g. Windows, Linux, Mac, Unknown */
public static final String OS_CODE = getOSCode();
private SystemUtils() {
// Nothing here ...
}
private static String getOSName() {
return System.getProperty("os.name");
}
private static String getOSCode() {
if (IS_OS_WINDOWS) {
return "Windows";
}
if (IS_OS_LINUX) {
return "Linux";
}
if (IS_OS_MAC) {
return "Mac";
}
return "Unknown";
}
}
References
Alternative titles
- Java - check operating system name (Windows, Linux or Mac OS)
- Java - detect OS name
- Java - check OS name (Windows, Linux or Mac OS)
- Java - get operating system name
- Java - get operating system name (Windows, Linux or Mac OS)
- Java - get OS name
- Java - get OS name (Windows, Linux or Mac OS)
- Java - detect OS type
- Java - get OS type
- Java - check OS type
- Java - determine operating system