org.apache.commons.lang3

## Class SystemUtils

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

-     public class SystemUtils
      extends 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
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `AWT_TOOLKIT` The `awt.toolkit` System Property.
    `static String` | `FILE_ENCODING` The `file.encoding` System Property.
    `static 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 String` | `JAVA_AWT_FONTS` The `java.awt.fonts` System Property.
    `static String` | `JAVA_AWT_GRAPHICSENV` The `java.awt.graphicsenv` System Property.
    `static String` | `JAVA_AWT_HEADLESS` The `java.awt.headless` System Property.
    `static String` | `JAVA_AWT_PRINTERJOB` The `java.awt.printerjob` System Property.
    `static String` | `JAVA_CLASS_PATH` The `java.class.path` System Property.
    `static String` | `JAVA_CLASS_VERSION` The `java.class.version` System Property.
    `static String` | `JAVA_COMPILER` The `java.compiler` System Property.
    `static String` | `JAVA_ENDORSED_DIRS` The `java.endorsed.dirs` System Property.
    `static String` | `JAVA_EXT_DIRS` The `java.ext.dirs` System Property.
    `static String` | `JAVA_HOME` The `java.home` System Property.
    `static String` | `JAVA_IO_TMPDIR` The `java.io.tmpdir` System Property.
    `static String` | `JAVA_LIBRARY_PATH` The `java.library.path` System Property.
    `static String` | `JAVA_RUNTIME_NAME` The `java.runtime.name` System Property.
    `static String` | `JAVA_RUNTIME_VERSION` The `java.runtime.version` System Property.
    `static String` | `JAVA_SPECIFICATION_NAME` The `java.specification.name` System Property.
    `static String` | `JAVA_SPECIFICATION_VENDOR` The `java.specification.vendor` System Property.
    `static String` | `JAVA_SPECIFICATION_VERSION` The `java.specification.version` System Property.
    `static String` | `JAVA_UTIL_PREFS_PREFERENCES_FACTORY` The `java.util.prefs.PreferencesFactory` System Property.
    `static String` | `JAVA_VENDOR` The `java.vendor` System Property.
    `static String` | `JAVA_VENDOR_URL` The `java.vendor.url` System Property.
    `static String` | `JAVA_VERSION` The `java.version` System Property.
    `static String` | `JAVA_VM_INFO` The `java.vm.info` System Property.
    `static String` | `JAVA_VM_NAME` The `java.vm.name` System Property.
    `static String` | `JAVA_VM_SPECIFICATION_NAME` The `java.vm.specification.name` System Property.
    `static String` | `JAVA_VM_SPECIFICATION_VENDOR` The `java.vm.specification.vendor` System Property.
    `static String` | `JAVA_VM_SPECIFICATION_VERSION` The `java.vm.specification.version` System Property.
    `static String` | `JAVA_VM_VENDOR` The `java.vm.vendor` System Property.
    `static String` | `JAVA_VM_VERSION` The `java.vm.version` System Property.
    `static String` | `LINE_SEPARATOR` Deprecated. Use `System.lineSeparator()` instead, since it does not require a privilege check.
    `static String` | `OS_ARCH` The `os.arch` System Property.
    `static String` | `OS_NAME` The `os.name` System Property.
    `static String` | `OS_VERSION` The `os.version` System Property.
    `static 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 String` | `USER_COUNTRY` The `user.country` or `user.region` System Property.
    `static String` | `USER_DIR` The `user.dir` System Property.
    `static String` | `USER_HOME` The `user.home` System Property.
    `static String` | `USER_LANGUAGE` The `user.language` System Property.
    `static String` | `USER_NAME` The `user.name` System Property.
    `static String` | `USER_TIMEZONE` The `user.timezone` System Property.

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static String` | `getEnvironmentVariable(String name, String defaultValue)` Gets an environment variable, defaulting to `defaultValue` if the variable cannot be read.
    `static String` | `getHostName()` Gets the host name from an environment variable (COMPUTERNAME on Windows, HOSTNAME elsewhere).
    `static File` | `getJavaHome()` Gets the Java home directory as a `File`.
    `static File` | `getJavaIoTmpDir()` Gets the Java IO temporary directory as a `File`.
    `static File` | `getUserDir()` Gets the user directory as a `File`.
    `static File` | `getUserHome()` Gets the user home directory as a `File`.
    `static String` | `getUserName()` Gets the user name.
    `static String` | `getUserName(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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 File getJavaHome()

      Gets the Java home directory as a `File`.

      Returns:
        a directory
      Throws:
        `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 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 File getJavaIoTmpDir()

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

      Returns:
        a directory
      Throws:
        `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 String getEnvironmentVariable(String name,
                                                      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 File getUserDir()

      Gets the user directory as a `File`.

      Returns:
        a directory
      Throws:
        `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 File getUserHome()

      Gets the user home directory as a `File`.

      Returns:
        a directory
      Throws:
        `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 String getUserName()

      Gets the user name.

      Returns:
        a name
      Throws:
        `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 String getUserName(String defaultValue)

      Gets the user name.

      Parameters:
        `defaultValue` - A default value.
      Returns:
        a name
      Throws:
        `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

Copyright © 2001–2020 The Apache Software Foundation. All rights reserved.