Package org.apache.commons.lang

## Class SystemUtils

- java.lang.Object
- - org.apache.commons.lang.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
  Version:
    $Id: SystemUtils.java 1056988 2011-01-09 17:58:53Z niallp $

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `AWT_TOOLKIT` | The `awt.toolkit` System Property.
    `static String` | `FILE_ENCODING` | The `file.encoding` System Property.
    `static String` | `FILE_SEPARATOR` | The `file.separator` System Property.
    `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_OS_AIX` | Is `true` if this is AIX.
    `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_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_2000` | Is `true` if this is Windows 2000.
    `static boolean` | `IS_OS_WINDOWS_7` | Is `true` if this is Windows 7.
    `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 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 float` | `JAVA_VERSION_FLOAT` | Gets the Java version as a `float`.
    `static int` | `JAVA_VERSION_INT` | Gets the Java version as an `int`.
    `static String` | `JAVA_VERSION_TRIMMED` | Gets the Java version as a `String` trimming leading letters.
    `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` | The `line.separator` System Property.
    `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` | The `path.separator` System Property.
    `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 | Description
    --- | ---
    `SystemUtils()` | SystemUtils instances should NOT be constructed in standard programming.

  - ### Method Summary

    All Methods Static Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static File` | `getJavaHome()` | Gets the Java home directory as a `File`.
    `static File` | `getJavaIoTmpDir()` | Gets the Java IO temporary directory as a `File`.
    `static float` | `getJavaVersion()` | Deprecated. Use `JAVA_VERSION_FLOAT` instead.
    `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​(float requiredVersion)` | Is the Java version at least the requested version.
    `static boolean` | `isJavaVersionAtLeast​(int 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

          public static final String FILE_SEPARATOR

      The `file.separator` System Property. File 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

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

          public static final String LINE_SEPARATOR

      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

          public static final String PATH_SEPARATOR

      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

    - #### JAVA_VERSION_TRIMMED

          public static final String JAVA_VERSION_TRIMMED

      Gets the Java version as a `String` trimming leading letters.

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

      Since:
        2.1

    - #### JAVA_VERSION_FLOAT

          public static final float JAVA_VERSION_FLOAT

      Gets the Java version as a `float`.

      Example return values:

      - `1.2f` for Java 1.2
      - `1.31f` for Java 1.3.1

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

      Since:
        2.0

    - #### JAVA_VERSION_INT

          public static final int JAVA_VERSION_INT

      Gets the Java version as an `int`.

      Example return values:

      - `120` for Java 1.2
      - `131` for Java 1.3.1

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

      Since:
        2.0

    - #### 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:
        2.5

    - #### 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_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_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_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:
        2.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)`

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

    - #### getJavaVersion

          public static float getJavaVersion()

      Deprecated.
      Use `JAVA_VERSION_FLOAT` instead. Method will be removed in Commons Lang 3.0.

      Gets the Java version number as a `float`.

      Example return values:

      - `1.2f` for JDK 1.2
      - `1.31f` for JDK 1.3.1
      Returns:
        the version, for example 1.31f for JDK 1.3.1

    - #### 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​(float 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

    - #### isJavaVersionAtLeast

          public static boolean isJavaVersionAtLeast​(int requiredVersion)

      Is the Java version at least the requested version.

      Example input:

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