Package org.apache.commons.lang3

## Class SystemUtils

- java.lang.Object
- - org.apache.commons.lang3.SystemUtils

    public class SystemUtils
    extends java.lang.Object

Helpers for `java.lang.System`.

If a system property cannot be read due to security restrictions, the corresponding field in this class will be set to `null` and a message will be written to `System.err`.

#ThreadSafe#

Since:
  1.0

### Field Summary

Fields
`static java.lang.String` `AWT_TOOLKIT` The `awt.toolkit` System Property.
`static java.lang.String` `FILE_ENCODING` The `file.encoding` System Property.
`static java.lang.String` `FILE_SEPARATOR` Deprecated. Use `File.separator`, since it is guaranteed to be a string containing a single character and it does not require a privilege check.
`static boolean` `IS_JAVA_1_1` Is `true` if this is Java version 1.1 (also 1.1.x versions).
`static boolean` `IS_JAVA_1_2` Is `true` if this is Java version 1.2 (also 1.2.x versions).
`static boolean` `IS_JAVA_1_3` Is `true` if this is Java version 1.3 (also 1.3.x versions).
`static boolean` `IS_JAVA_1_4` Is `true` if this is Java version 1.4 (also 1.4.x versions).
`static boolean` `IS_JAVA_1_5` Is `true` if this is Java version 1.5 (also 1.5.x versions).
`static boolean` `IS_JAVA_1_6` Is `true` if this is Java version 1.6 (also 1.6.x versions).
`static boolean` `IS_JAVA_1_7` Is `true` if this is Java version 1.7 (also 1.7.x versions).
`static boolean` `IS_JAVA_1_8` Is `true` if this is Java version 1.8 (also 1.8.x versions).
`static boolean` `IS_JAVA_1_9` Deprecated. As of release 3.5, replaced by `IS_JAVA_9`
`static boolean` `IS_JAVA_10` Is `true` if this is Java version 10 (also 10.x versions).
`static boolean` `IS_JAVA_11` Is `true` if this is Java version 11 (also 11.x versions).
`static boolean` `IS_JAVA_12` Is `true` if this is Java version 12 (also 12.x versions).
`static boolean` `IS_JAVA_13` Is `true` if this is Java version 13 (also 13.x versions).
`static boolean` `IS_JAVA_14` Is `true` if this is Java version 14 (also 14.x versions).
`static boolean` `IS_JAVA_15` Is `true` if this is Java version 15 (also 15.x versions).
`static boolean` `IS_JAVA_9` Is `true` if this is Java version 9 (also 9.x versions).
`static boolean` `IS_OS_400` Is `true` if this is IBM OS/400.
`static boolean` `IS_OS_AIX` Is `true` if this is AIX.
`static boolean` `IS_OS_FREE_BSD` Is `true` if this is FreeBSD.
`static boolean` `IS_OS_HP_UX` Is `true` if this is HP-UX.
`static boolean` `IS_OS_IRIX` Is `true` if this is Irix.
`static boolean` `IS_OS_LINUX` Is `true` if this is Linux.
`static boolean` `IS_OS_MAC` Is `true` if this is Mac.
`static boolean` `IS_OS_MAC_OSX` Is `true` if this is Mac.
`static boolean` `IS_OS_MAC_OSX_CHEETAH` Is `true` if this is Mac OS X Cheetah.
`static boolean` `IS_OS_MAC_OSX_EL_CAPITAN` Is `true` if this is Mac OS X El Capitan.
`static boolean` `IS_OS_MAC_OSX_JAGUAR` Is `true` if this is Mac OS X Jaguar.
`static boolean` `IS_OS_MAC_OSX_LEOPARD` Is `true` if this is Mac OS X Leopard.
`static boolean` `IS_OS_MAC_OSX_LION` Is `true` if this is Mac OS X Lion.
`static boolean` `IS_OS_MAC_OSX_MAVERICKS` Is `true` if this is Mac OS X Mavericks.
`static boolean` `IS_OS_MAC_OSX_MOUNTAIN_LION` Is `true` if this is Mac OS X Mountain Lion.
`static boolean` `IS_OS_MAC_OSX_PANTHER` Is `true` if this is Mac OS X Panther.
`static boolean` `IS_OS_MAC_OSX_PUMA` Is `true` if this is Mac OS X Puma.
`static boolean` `IS_OS_MAC_OSX_SNOW_LEOPARD` Is `true` if this is Mac OS X Snow Leopard.
`static boolean` `IS_OS_MAC_OSX_TIGER` Is `true` if this is Mac OS X Tiger.
`static boolean` `IS_OS_MAC_OSX_YOSEMITE` Is `true` if this is Mac OS X Yosemite.
`static boolean` `IS_OS_NET_BSD` Is `true` if this is NetBSD.
`static boolean` `IS_OS_OPEN_BSD` Is `true` if this is OpenBSD.
`static boolean` `IS_OS_OS2` Is `true` if this is OS/2.
`static boolean` `IS_OS_SOLARIS` Is `true` if this is Solaris.
`static boolean` `IS_OS_SUN_OS` Is `true` if this is SunOS.
`static boolean` `IS_OS_UNIX` Is `true` if this is a UNIX like system, as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
`static boolean` `IS_OS_WINDOWS` Is `true` if this is Windows.
`static boolean` `IS_OS_WINDOWS_10` Is `true` if this is Windows 10.
`static boolean` `IS_OS_WINDOWS_2000` Is `true` if this is Windows 2000.
`static boolean` `IS_OS_WINDOWS_2003` Is `true` if this is Windows 2003.
`static boolean` `IS_OS_WINDOWS_2008` Is `true` if this is Windows Server 2008.
`static boolean` `IS_OS_WINDOWS_2012` Is `true` if this is Windows Server 2012.
`static boolean` `IS_OS_WINDOWS_7` Is `true` if this is Windows 7.
`static boolean` `IS_OS_WINDOWS_8` Is `true` if this is Windows 8.
`static boolean` `IS_OS_WINDOWS_95` Is `true` if this is Windows 95.
`static boolean` `IS_OS_WINDOWS_98` Is `true` if this is Windows 98.
`static boolean` `IS_OS_WINDOWS_ME` Is `true` if this is Windows ME.
`static boolean` `IS_OS_WINDOWS_NT` Is `true` if this is Windows NT.
`static boolean` `IS_OS_WINDOWS_VISTA` Is `true` if this is Windows Vista.
`static boolean` `IS_OS_WINDOWS_XP` Is `true` if this is Windows XP.
`static boolean` `IS_OS_ZOS` Is `true` if this is z/OS.
`static java.lang.String` `JAVA_AWT_FONTS` The `java.awt.fonts` System Property.
`static java.lang.String` `JAVA_AWT_GRAPHICSENV` The `java.awt.graphicsenv` System Property.
`static java.lang.String` `JAVA_AWT_HEADLESS` The `java.awt.headless` System Property.
`static java.lang.String` `JAVA_AWT_PRINTERJOB` The `java.awt.printerjob` System Property.
`static java.lang.String` `JAVA_CLASS_PATH` The `java.class.path` System Property.
`static java.lang.String` `JAVA_CLASS_VERSION` The `java.class.version` System Property.
`static java.lang.String` `JAVA_COMPILER` The `java.compiler` System Property.
`static java.lang.String` `JAVA_ENDORSED_DIRS` The `java.endorsed.dirs` System Property.
`static java.lang.String` `JAVA_EXT_DIRS` The `java.ext.dirs` System Property.
`static java.lang.String` `JAVA_HOME` The `java.home` System Property.
`static java.lang.String` `JAVA_IO_TMPDIR` The `java.io.tmpdir` System Property.
`static java.lang.String` `JAVA_LIBRARY_PATH` The `java.library.path` System Property.
`static java.lang.String` `JAVA_RUNTIME_NAME` The `java.runtime.name` System Property.
`static java.lang.String` `JAVA_RUNTIME_VERSION` The `java.runtime.version` System Property.
`static java.lang.String` `JAVA_SPECIFICATION_NAME` The `java.specification.name` System Property.
`static java.lang.String` `JAVA_SPECIFICATION_VENDOR` The `java.specification.vendor` System Property.
`static java.lang.String` `JAVA_SPECIFICATION_VERSION` The `java.specification.version` System Property.
`static java.lang.String` `JAVA_UTIL_PREFS_PREFERENCES_FACTORY` The `java.util.prefs.PreferencesFactory` System Property.
`static java.lang.String` `JAVA_VENDOR` The `java.vendor` System Property.
`static java.lang.String` `JAVA_VENDOR_URL` The `java.vendor.url` System Property.
`static java.lang.String` `JAVA_VERSION` The `java.version` System Property.
`static java.lang.String` `JAVA_VM_INFO` The `java.vm.info` System Property.
`static java.lang.String` `JAVA_VM_NAME` The `java.vm.name` System Property.
`static java.lang.String` `JAVA_VM_SPECIFICATION_NAME` The `java.vm.specification.name` System Property.
`static java.lang.String` `JAVA_VM_SPECIFICATION_VENDOR` The `java.vm.specification.vendor` System Property.
`static java.lang.String` `JAVA_VM_SPECIFICATION_VERSION` The `java.vm.specification.version` System Property.
`static java.lang.String` `JAVA_VM_VENDOR` The `java.vm.vendor` System Property.
`static java.lang.String` `JAVA_VM_VERSION` The `java.vm.version` System Property.
`static java.lang.String` `LINE_SEPARATOR` Deprecated. Use `System.lineSeparator()` instead, since it does not require a privilege check.
`static java.lang.String` `OS_ARCH` The `os.arch` System Property.
`static java.lang.String` `OS_NAME` The `os.name` System Property.
`static java.lang.String` `OS_VERSION` The `os.version` System Property.
`static java.lang.String` `PATH_SEPARATOR` Deprecated. Use `File.pathSeparator`, since it is guaranteed to be a string containing a single character and it does not require a privilege check.
`static java.lang.String` `USER_COUNTRY` The `user.country` or `user.region` System Property.
`static java.lang.String` `USER_DIR` The `user.dir` System Property.
`static java.lang.String` `USER_HOME` The `user.home` System Property.
`static java.lang.String` `USER_LANGUAGE` The `user.language` System Property.
`static java.lang.String` `USER_NAME` The `user.name` System Property.
`static java.lang.String` `USER_TIMEZONE` The `user.timezone` System Property.

### Constructor Summary

Constructors
`SystemUtils()` SystemUtils instances should NOT be constructed in standard programming.

### Method Summary

All Methods Static Methods Concrete Methods
`static java.lang.String` `getEnvironmentVariable​(java.lang.String name, java.lang.String defaultValue)` Gets an environment variable, defaulting to `defaultValue` if the variable cannot be read.
`static java.lang.String` `getHostName()` Gets the host name from an environment variable (COMPUTERNAME on Windows, HOSTNAME elsewhere).
`static java.io.File` `getJavaHome()` Gets the Java home directory as a `File`.
`static java.io.File` `getJavaIoTmpDir()` Gets the Java IO temporary directory as a `File`.
`static java.io.File` `getUserDir()` Gets the user directory as a `File`.
`static java.io.File` `getUserHome()` Gets the user home directory as a `File`.
`static java.lang.String` `getUserName()` Gets the user name.
`static java.lang.String` `getUserName​(java.lang.String defaultValue)` Gets the user name.
`static boolean` `isJavaAwtHeadless()` Returns whether the `JAVA_AWT_HEADLESS` value is `true`.
`static boolean` `isJavaVersionAtLeast​(JavaVersion requiredVersion)` Is the Java version at least the requested version.
`static boolean` `isJavaVersionAtMost​(JavaVersion requiredVersion)` Is the Java version at most the requested version.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### AWT_TOOLKIT

    public static final java.lang.String AWT_TOOLKIT

The `awt.toolkit` System Property.

Holds a class name, on Windows XP this is `sun.awt.windows.WToolkit`.

On platforms without a GUI, this value is `null`.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1

#### FILE_ENCODING

    public static final java.lang.String FILE_ENCODING

The `file.encoding` System Property.

File encoding, such as `Cp1252`.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.2

#### FILE_SEPARATOR

    @Deprecated
    public static final java.lang.String FILE_SEPARATOR

Deprecated.
Use `File.separator`, since it is guaranteed to be a string containing a single character and it does not require a privilege check.

The `file.separator` System Property. The file separator is:

- `"/"` on UNIX
- `"\"` on Windows.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_AWT_FONTS

    public static final java.lang.String JAVA_AWT_FONTS

The `java.awt.fonts` System Property.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1

#### JAVA_AWT_GRAPHICSENV

    public static final java.lang.String JAVA_AWT_GRAPHICSENV

The `java.awt.graphicsenv` System Property.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1

#### JAVA_AWT_HEADLESS

    public static final java.lang.String JAVA_AWT_HEADLESS

The `java.awt.headless` System Property. The value of this property is the String `"true"` or `"false"`.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1, Java 1.4
See Also:
  `isJavaAwtHeadless()`

#### JAVA_AWT_PRINTERJOB

    public static final java.lang.String JAVA_AWT_PRINTERJOB

The `java.awt.printerjob` System Property.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1

#### JAVA_CLASS_PATH

    public static final java.lang.String JAVA_CLASS_PATH

The `java.class.path` System Property. Java class path.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_CLASS_VERSION

    public static final java.lang.String JAVA_CLASS_VERSION

The `java.class.version` System Property. Java class format version number.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_COMPILER

    public static final java.lang.String JAVA_COMPILER

The `java.compiler` System Property. Name of JIT compiler to use. First in JDK version 1.2. Not used in Sun JDKs after 1.2.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2. Not used in Sun versions after 1.2.

#### JAVA_ENDORSED_DIRS

    public static final java.lang.String JAVA_ENDORSED_DIRS

The `java.endorsed.dirs` System Property. Path of endorsed directory or directories.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.4

#### JAVA_EXT_DIRS

    public static final java.lang.String JAVA_EXT_DIRS

The `java.ext.dirs` System Property. Path of extension directory or directories.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.3

#### JAVA_HOME

    public static final java.lang.String JAVA_HOME

The `java.home` System Property. Java installation directory.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_IO_TMPDIR

    public static final java.lang.String JAVA_IO_TMPDIR

The `java.io.tmpdir` System Property. Default temp file path.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_LIBRARY_PATH

    public static final java.lang.String JAVA_LIBRARY_PATH

The `java.library.path` System Property. List of paths to search when loading libraries.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_RUNTIME_NAME

    public static final java.lang.String JAVA_RUNTIME_NAME

The `java.runtime.name` System Property. Java Runtime Environment name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.3

#### JAVA_RUNTIME_VERSION

    public static final java.lang.String JAVA_RUNTIME_VERSION

The `java.runtime.version` System Property. Java Runtime Environment version.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.3

#### JAVA_SPECIFICATION_NAME

    public static final java.lang.String JAVA_SPECIFICATION_NAME

The `java.specification.name` System Property. Java Runtime Environment specification name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_SPECIFICATION_VENDOR

    public static final java.lang.String JAVA_SPECIFICATION_VENDOR

The `java.specification.vendor` System Property. Java Runtime Environment specification vendor.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_SPECIFICATION_VERSION

    public static final java.lang.String JAVA_SPECIFICATION_VERSION

The `java.specification.version` System Property. Java Runtime Environment specification version.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.3

#### JAVA_UTIL_PREFS_PREFERENCES_FACTORY

    public static final java.lang.String JAVA_UTIL_PREFS_PREFERENCES_FACTORY

The `java.util.prefs.PreferencesFactory` System Property. A class name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1, Java 1.4

#### JAVA_VENDOR

    public static final java.lang.String JAVA_VENDOR

The `java.vendor` System Property. Java vendor-specific string.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_VENDOR_URL

    public static final java.lang.String JAVA_VENDOR_URL

The `java.vendor.url` System Property. Java vendor URL.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_VERSION

    public static final java.lang.String JAVA_VERSION

The `java.version` System Property. Java version number.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### JAVA_VM_INFO

    public static final java.lang.String JAVA_VM_INFO

The `java.vm.info` System Property. Java Virtual Machine implementation info.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.2

#### JAVA_VM_NAME

    public static final java.lang.String JAVA_VM_NAME

The `java.vm.name` System Property. Java Virtual Machine implementation name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_VM_SPECIFICATION_NAME

    public static final java.lang.String JAVA_VM_SPECIFICATION_NAME

The `java.vm.specification.name` System Property. Java Virtual Machine specification name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_VM_SPECIFICATION_VENDOR

    public static final java.lang.String JAVA_VM_SPECIFICATION_VENDOR

The `java.vm.specification.vendor` System Property. Java Virtual Machine specification vendor.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_VM_SPECIFICATION_VERSION

    public static final java.lang.String JAVA_VM_SPECIFICATION_VERSION

The `java.vm.specification.version` System Property. Java Virtual Machine specification version.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_VM_VENDOR

    public static final java.lang.String JAVA_VM_VENDOR

The `java.vm.vendor` System Property. Java Virtual Machine implementation vendor.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### JAVA_VM_VERSION

    public static final java.lang.String JAVA_VM_VERSION

The `java.vm.version` System Property. Java Virtual Machine implementation version.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.2

#### LINE_SEPARATOR

    @Deprecated
    public static final java.lang.String LINE_SEPARATOR

Deprecated.
Use `System.lineSeparator()` instead, since it does not require a privilege check.

The `line.separator` System Property. Line separator (`&quot;\n&quot;` on UNIX).

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### OS_ARCH

    public static final java.lang.String OS_ARCH

The `os.arch` System Property. Operating system architecture.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### OS_NAME

    public static final java.lang.String OS_NAME

The `os.name` System Property. Operating system name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### OS_VERSION

    public static final java.lang.String OS_VERSION

The `os.version` System Property. Operating system version.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### PATH_SEPARATOR

    @Deprecated
    public static final java.lang.String PATH_SEPARATOR

Deprecated.
Use `File.pathSeparator`, since it is guaranteed to be a string containing a single character and it does not require a privilege check.

The `path.separator` System Property. Path separator (`&quot;:&quot;` on UNIX).

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### USER_COUNTRY

    public static final java.lang.String USER_COUNTRY

The `user.country` or `user.region` System Property. User's country code, such as `GB`. First in Java version 1.2 as `user.region`. Renamed to `user.country` in 1.4

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.2

#### USER_DIR

    public static final java.lang.String USER_DIR

The `user.dir` System Property. User's current working directory.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### USER_HOME

    public static final java.lang.String USER_HOME

The `user.home` System Property. User's home directory.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### USER_LANGUAGE

    public static final java.lang.String USER_LANGUAGE

The `user.language` System Property. User's language code, such as `"en"`.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.0, Java 1.2

#### USER_NAME

    public static final java.lang.String USER_NAME

The `user.name` System Property. User's account name.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  Java 1.1

#### USER_TIMEZONE

    public static final java.lang.String USER_TIMEZONE

The `user.timezone` System Property. For example: `"America/Los_Angeles"`.

Defaults to `null` if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If `System.setProperty(String,String)` or `System.setProperties(java.util.Properties)` is called after this class is loaded, the value will be out of sync with that System property.

Since:
  2.1

#### IS_JAVA_1_1

    public static final boolean IS_JAVA_1_1

Is `true` if this is Java version 1.1 (also 1.1.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_2

    public static final boolean IS_JAVA_1_2

Is `true` if this is Java version 1.2 (also 1.2.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_3

    public static final boolean IS_JAVA_1_3

Is `true` if this is Java version 1.3 (also 1.3.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_4

    public static final boolean IS_JAVA_1_4

Is `true` if this is Java version 1.4 (also 1.4.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_5

    public static final boolean IS_JAVA_1_5

Is `true` if this is Java version 1.5 (also 1.5.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_6

    public static final boolean IS_JAVA_1_6

Is `true` if this is Java version 1.6 (also 1.6.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

#### IS_JAVA_1_7

    public static final boolean IS_JAVA_1_7

Is `true` if this is Java version 1.7 (also 1.7.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.0

#### IS_JAVA_1_8

    public static final boolean IS_JAVA_1_8

Is `true` if this is Java version 1.8 (also 1.8.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.3.2

#### IS_JAVA_1_9

    @Deprecated
    public static final boolean IS_JAVA_1_9

Deprecated.
As of release 3.5, replaced by `IS_JAVA_9`

Is `true` if this is Java version 1.9 (also 1.9.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.4

#### IS_JAVA_9

    public static final boolean IS_JAVA_9

Is `true` if this is Java version 9 (also 9.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.5

#### IS_JAVA_10

    public static final boolean IS_JAVA_10

Is `true` if this is Java version 10 (also 10.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.7

#### IS_JAVA_11

    public static final boolean IS_JAVA_11

Is `true` if this is Java version 11 (also 11.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.8

#### IS_JAVA_12

    public static final boolean IS_JAVA_12

Is `true` if this is Java version 12 (also 12.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.9

#### IS_JAVA_13

    public static final boolean IS_JAVA_13

Is `true` if this is Java version 13 (also 13.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.9

#### IS_JAVA_14

    public static final boolean IS_JAVA_14

Is `true` if this is Java version 14 (also 14.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.10

#### IS_JAVA_15

    public static final boolean IS_JAVA_15

Is `true` if this is Java version 15 (also 15.x versions).

The field will return `false` if `JAVA_VERSION` is `null`.

Since:
  3.10

#### IS_OS_AIX

    public static final boolean IS_OS_AIX

Is `true` if this is AIX.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_HP_UX

    public static final boolean IS_OS_HP_UX

Is `true` if this is HP-UX.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_400

    public static final boolean IS_OS_400

Is `true` if this is IBM OS/400.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.3

#### IS_OS_IRIX

    public static final boolean IS_OS_IRIX

Is `true` if this is Irix.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_LINUX

    public static final boolean IS_OS_LINUX

Is `true` if this is Linux.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_MAC

    public static final boolean IS_OS_MAC

Is `true` if this is Mac.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_MAC_OSX

    public static final boolean IS_OS_MAC_OSX

Is `true` if this is Mac.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_MAC_OSX_CHEETAH

    public static final boolean IS_OS_MAC_OSX_CHEETAH

Is `true` if this is Mac OS X Cheetah.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_PUMA

    public static final boolean IS_OS_MAC_OSX_PUMA

Is `true` if this is Mac OS X Puma.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_JAGUAR

    public static final boolean IS_OS_MAC_OSX_JAGUAR

Is `true` if this is Mac OS X Jaguar.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_PANTHER

    public static final boolean IS_OS_MAC_OSX_PANTHER

Is `true` if this is Mac OS X Panther.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_TIGER

    public static final boolean IS_OS_MAC_OSX_TIGER

Is `true` if this is Mac OS X Tiger.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_LEOPARD

    public static final boolean IS_OS_MAC_OSX_LEOPARD

Is `true` if this is Mac OS X Leopard.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_SNOW_LEOPARD

    public static final boolean IS_OS_MAC_OSX_SNOW_LEOPARD

Is `true` if this is Mac OS X Snow Leopard.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_LION

    public static final boolean IS_OS_MAC_OSX_LION

Is `true` if this is Mac OS X Lion.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_MOUNTAIN_LION

    public static final boolean IS_OS_MAC_OSX_MOUNTAIN_LION

Is `true` if this is Mac OS X Mountain Lion.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_MAVERICKS

    public static final boolean IS_OS_MAC_OSX_MAVERICKS

Is `true` if this is Mac OS X Mavericks.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_YOSEMITE

    public static final boolean IS_OS_MAC_OSX_YOSEMITE

Is `true` if this is Mac OS X Yosemite.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_MAC_OSX_EL_CAPITAN

    public static final boolean IS_OS_MAC_OSX_EL_CAPITAN

Is `true` if this is Mac OS X El Capitan.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.5

#### IS_OS_FREE_BSD

    public static final boolean IS_OS_FREE_BSD

Is `true` if this is FreeBSD.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.1

#### IS_OS_OPEN_BSD

    public static final boolean IS_OS_OPEN_BSD

Is `true` if this is OpenBSD.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.1

#### IS_OS_NET_BSD

    public static final boolean IS_OS_NET_BSD

Is `true` if this is NetBSD.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.1

#### IS_OS_OS2

    public static final boolean IS_OS_OS2

Is `true` if this is OS/2.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_SOLARIS

    public static final boolean IS_OS_SOLARIS

Is `true` if this is Solaris.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_SUN_OS

    public static final boolean IS_OS_SUN_OS

Is `true` if this is SunOS.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_UNIX

    public static final boolean IS_OS_UNIX

Is `true` if this is a UNIX like system, as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.1

#### IS_OS_WINDOWS

    public static final boolean IS_OS_WINDOWS

Is `true` if this is Windows.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_2000

    public static final boolean IS_OS_WINDOWS_2000

Is `true` if this is Windows 2000.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_2003

    public static final boolean IS_OS_WINDOWS_2003

Is `true` if this is Windows 2003.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.1

#### IS_OS_WINDOWS_2008

    public static final boolean IS_OS_WINDOWS_2008

Is `true` if this is Windows Server 2008.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.1

#### IS_OS_WINDOWS_2012

    public static final boolean IS_OS_WINDOWS_2012

Is `true` if this is Windows Server 2012.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.4

#### IS_OS_WINDOWS_95

    public static final boolean IS_OS_WINDOWS_95

Is `true` if this is Windows 95.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_98

    public static final boolean IS_OS_WINDOWS_98

Is `true` if this is Windows 98.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_ME

    public static final boolean IS_OS_WINDOWS_ME

Is `true` if this is Windows ME.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_NT

    public static final boolean IS_OS_WINDOWS_NT

Is `true` if this is Windows NT.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_XP

    public static final boolean IS_OS_WINDOWS_XP

Is `true` if this is Windows XP.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.0

#### IS_OS_WINDOWS_VISTA

    public static final boolean IS_OS_WINDOWS_VISTA

Is `true` if this is Windows Vista.

The field will return `false` if `OS_NAME` is `null`.

Since:
  2.4

#### IS_OS_WINDOWS_7

    public static final boolean IS_OS_WINDOWS_7

Is `true` if this is Windows 7.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.0

#### IS_OS_WINDOWS_8

    public static final boolean IS_OS_WINDOWS_8

Is `true` if this is Windows 8.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.2

#### IS_OS_WINDOWS_10

    public static final boolean IS_OS_WINDOWS_10

Is `true` if this is Windows 10.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.5

#### IS_OS_ZOS

    public static final boolean IS_OS_ZOS

Is `true` if this is z/OS.

The field will return `false` if `OS_NAME` is `null`.

Since:
  3.5

### Constructor Detail

#### SystemUtils

    public SystemUtils()

SystemUtils instances should NOT be constructed in standard programming. Instead, the class should be used as `SystemUtils.FILE_SEPARATOR`.

This constructor is public to permit tools that require a JavaBean instance to operate.

### Method Detail

#### getJavaHome

    public static java.io.File getJavaHome()

Gets the Java home directory as a `File`.

Returns:
  a directory
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  2.1
See Also:
  `System.getProperty(String)`

#### getHostName

    public static java.lang.String getHostName()

Gets the host name from an environment variable (COMPUTERNAME on Windows, HOSTNAME elsewhere).

If you want to know what the network stack says is the host name, you should use `InetAddress.getLocalHost().getHostName()`.

Returns:
  the host name. Will be `null` if the environment variable is not defined.
Since:
  3.6

#### getJavaIoTmpDir

    public static java.io.File getJavaIoTmpDir()

Gets the Java IO temporary directory as a `File`.

Returns:
  a directory
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  2.1
See Also:
  `System.getProperty(String)`

#### getEnvironmentVariable

    public static java.lang.String getEnvironmentVariable​(java.lang.String name,
                                                          java.lang.String defaultValue)

Gets an environment variable, defaulting to `defaultValue` if the variable cannot be read.

If a `SecurityException` is caught, the return value is `defaultValue` and a message is written to `System.err`.

Parameters:
  `name` - the environment variable name
  `defaultValue` - the default value
Returns:
  the environment variable value or `defaultValue` if a security problem occurs
Since:
  3.8

#### getUserDir

    public static java.io.File getUserDir()

Gets the user directory as a `File`.

Returns:
  a directory
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  2.1
See Also:
  `System.getProperty(String)`

#### getUserHome

    public static java.io.File getUserHome()

Gets the user home directory as a `File`.

Returns:
  a directory
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  2.1
See Also:
  `System.getProperty(String)`

#### getUserName

    public static java.lang.String getUserName()

Gets the user name.

Returns:
  a name
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  3.10
See Also:
  `System.getProperty(String)`

#### getUserName

    public static java.lang.String getUserName​(java.lang.String defaultValue)

Gets the user name.

Parameters:
  `defaultValue` - A default value.
Returns:
  a name
Throws:
  `java.lang.SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
Since:
  3.10
See Also:
  `System.getProperty(String)`

#### isJavaAwtHeadless

    public static boolean isJavaAwtHeadless()

Returns whether the `JAVA_AWT_HEADLESS` value is `true`.

Returns:
  `true` if `JAVA_AWT_HEADLESS` is `"true"`, `false` otherwise.
Since:
  2.1, Java 1.4
See Also:
  `JAVA_AWT_HEADLESS`

#### isJavaVersionAtLeast

    public static boolean isJavaVersionAtLeast​(JavaVersion requiredVersion)

Is the Java version at least the requested version.

Parameters:
  `requiredVersion` - the required version, for example 1.31f
Returns:
  `true` if the actual version is equal or greater than the required version

#### isJavaVersionAtMost

    public static boolean isJavaVersionAtMost​(JavaVersion requiredVersion)

Is the Java version at most the requested version.

Example input:

Parameters:
  `requiredVersion` - the required version, for example 1.31f
Returns:
  `true` if the actual version is equal or greater than the required version
Since:
  3.9