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_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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static String` | `getHostName()` Gets the host name from an environment variable.
    `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 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.

    - ### 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 (`"\n"` 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 (`":"` 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_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.

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

      Returns:
        the host name.
      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)`

    - #### 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)`

    - #### 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.

      Example input:

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

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