Package 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
See Also:
  - `SystemProperties`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `AWT_TOOLKIT`
  The `awt.toolkit` System Property.
  `static final String`
  `FILE_ENCODING`
  The `file.encoding` System Property.
  `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.
  `static final boolean`
  `IS_JAVA_1_1`
  Is `true` if this is Java version 1.1 (also 1.1.x versions).
  `static final boolean`
  `IS_JAVA_1_2`
  Is `true` if this is Java version 1.2 (also 1.2.x versions).
  `static final boolean`
  `IS_JAVA_1_3`
  Is `true` if this is Java version 1.3 (also 1.3.x versions).
  `static final boolean`
  `IS_JAVA_1_4`
  Is `true` if this is Java version 1.4 (also 1.4.x versions).
  `static final boolean`
  `IS_JAVA_1_5`
  Is `true` if this is Java version 1.5 (also 1.5.x versions).
  `static final boolean`
  `IS_JAVA_1_6`
  Is `true` if this is Java version 1.6 (also 1.6.x versions).
  `static final boolean`
  `IS_JAVA_1_7`
  Is `true` if this is Java version 1.7 (also 1.7.x versions).
  `static final boolean`
  `IS_JAVA_1_8`
  Is `true` if this is Java version 1.8 (also 1.8.x versions).
  `static final boolean`
  `IS_JAVA_1_9`
  Deprecated.
  As of release 3.5, replaced by `IS_JAVA_9`
  `static final boolean`
  `IS_JAVA_10`
  Is `true` if this is Java version 10 (also 10.x versions).
  `static final boolean`
  `IS_JAVA_11`
  Is `true` if this is Java version 11 (also 11.x versions).
  `static final boolean`
  `IS_JAVA_12`
  Is `true` if this is Java version 12 (also 12.x versions).
  `static final boolean`
  `IS_JAVA_13`
  Is `true` if this is Java version 13 (also 13.x versions).
  `static final boolean`
  `IS_JAVA_14`
  Is `true` if this is Java version 14 (also 14.x versions).
  `static final boolean`
  `IS_JAVA_15`
  Is `true` if this is Java version 15 (also 15.x versions).
  `static final boolean`
  `IS_JAVA_16`
  Is `true` if this is Java version 16 (also 16.x versions).
  `static final boolean`
  `IS_JAVA_17`
  Is `true` if this is Java version 17 (also 17.x versions).
  `static final boolean`
  `IS_JAVA_18`
  Is `true` if this is Java version 18 (also 18.x versions).
  `static final boolean`
  `IS_JAVA_19`
  Is `true` if this is Java version 19 (also 19.x versions).
  `static final boolean`
  `IS_JAVA_20`
  Is `true` if this is Java version 20 (also 20.x versions).
  `static final boolean`
  `IS_JAVA_21`
  Is `true` if this is Java version 21 (also 21.x versions).
  `static final boolean`
  `IS_JAVA_9`
  Is `true` if this is Java version 9 (also 9.x versions).
  `static final boolean`
  `IS_OS_400`
  Is `true` if this is IBM OS/400.
  `static final boolean`
  `IS_OS_AIX`
  Is `true` if this is AIX.
  `static final boolean`
  `IS_OS_FREE_BSD`
  Is `true` if this is FreeBSD.
  `static final boolean`
  `IS_OS_HP_UX`
  Is `true` if this is HP-UX.
  `static final boolean`
  `IS_OS_IRIX`
  Is `true` if this is Irix.
  `static final boolean`
  `IS_OS_LINUX`
  Is `true` if this is Linux.
  `static final boolean`
  `IS_OS_MAC`
  Is `true` if this is Mac.
  `static final boolean`
  `IS_OS_MAC_OSX`
  Is `true` if this is Mac.
  `static final boolean`
  `IS_OS_MAC_OSX_BIG_SUR`
  Is `true` if this is Mac OS X Big Sur.
  `static final boolean`
  `IS_OS_MAC_OSX_CATALINA`
  Is `true` if this is Mac OS X Catalina.
  `static final boolean`
  `IS_OS_MAC_OSX_CHEETAH`
  Is `true` if this is Mac OS X Cheetah.
  `static final boolean`
  `IS_OS_MAC_OSX_EL_CAPITAN`
  Is `true` if this is Mac OS X El Capitan.
  `static final boolean`
  `IS_OS_MAC_OSX_HIGH_SIERRA`
  Is `true` if this is Mac OS X High Sierra.
  `static final boolean`
  `IS_OS_MAC_OSX_JAGUAR`
  Is `true` if this is Mac OS X Jaguar.
  `static final boolean`
  `IS_OS_MAC_OSX_LEOPARD`
  Is `true` if this is Mac OS X Leopard.
  `static final boolean`
  `IS_OS_MAC_OSX_LION`
  Is `true` if this is Mac OS X Lion.
  `static final boolean`
  `IS_OS_MAC_OSX_MAVERICKS`
  Is `true` if this is Mac OS X Mavericks.
  `static final boolean`
  `IS_OS_MAC_OSX_MOJAVE`
  Is `true` if this is Mac OS X Mojave.
  `static final boolean`
  `IS_OS_MAC_OSX_MONTEREY`
  Is `true` if this is Mac OS X Monterey.
  `static final boolean`
  `IS_OS_MAC_OSX_MOUNTAIN_LION`
  Is `true` if this is Mac OS X Mountain Lion.
  `static final boolean`
  `IS_OS_MAC_OSX_PANTHER`
  Is `true` if this is Mac OS X Panther.
  `static final boolean`
  `IS_OS_MAC_OSX_PUMA`
  Is `true` if this is Mac OS X Puma.
  `static final boolean`
  `IS_OS_MAC_OSX_SIERRA`
  Is `true` if this is Mac OS X Sierra.
  `static final boolean`
  `IS_OS_MAC_OSX_SNOW_LEOPARD`
  Is `true` if this is Mac OS X Snow Leopard.
  `static final boolean`
  `IS_OS_MAC_OSX_TIGER`
  Is `true` if this is Mac OS X Tiger.
  `static final boolean`
  `IS_OS_MAC_OSX_VENTURA`
  Is `true` if this is Mac OS X Ventura.
  `static final boolean`
  `IS_OS_MAC_OSX_YOSEMITE`
  Is `true` if this is Mac OS X Yosemite.
  `static final boolean`
  `IS_OS_NET_BSD`
  Is `true` if this is NetBSD.
  `static final boolean`
  `IS_OS_OPEN_BSD`
  Is `true` if this is OpenBSD.
  `static final boolean`
  `IS_OS_OS2`
  Is `true` if this is OS/2.
  `static final boolean`
  `IS_OS_SOLARIS`
  Is `true` if this is Solaris.
  `static final boolean`
  `IS_OS_SUN_OS`
  Is `true` if this is SunOS.
  `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.
  `static final boolean`
  `IS_OS_WINDOWS`
  Is `true` if this is Windows.
  `static final boolean`
  `IS_OS_WINDOWS_10`
  Is `true` if this is Windows 10.
  `static final boolean`
  `IS_OS_WINDOWS_11`
  Is `true` if this is Windows 11.
  `static final boolean`
  `IS_OS_WINDOWS_2000`
  Is `true` if this is Windows 2000.
  `static final boolean`
  `IS_OS_WINDOWS_2003`
  Is `true` if this is Windows 2003.
  `static final boolean`
  `IS_OS_WINDOWS_2008`
  Is `true` if this is Windows Server 2008.
  `static final boolean`
  `IS_OS_WINDOWS_2012`
  Is `true` if this is Windows Server 2012.
  `static final boolean`
  `IS_OS_WINDOWS_7`
  Is `true` if this is Windows 7.
  `static final boolean`
  `IS_OS_WINDOWS_8`
  Is `true` if this is Windows 8.
  `static final boolean`
  `IS_OS_WINDOWS_95`
  Is `true` if this is Windows 95.
  `static final boolean`
  `IS_OS_WINDOWS_98`
  Is `true` if this is Windows 98.
  `static final boolean`
  `IS_OS_WINDOWS_ME`
  Is `true` if this is Windows ME.
  `static final boolean`
  `IS_OS_WINDOWS_NT`
  Is `true` if this is Windows NT.
  `static final boolean`
  `IS_OS_WINDOWS_VISTA`
  Is `true` if this is Windows Vista.
  `static final boolean`
  `IS_OS_WINDOWS_XP`
  Is `true` if this is Windows XP.
  `static final boolean`
  `IS_OS_ZOS`
  Is `true` if this is z/OS.
  `static final String`
  `JAVA_AWT_FONTS`
  The `java.awt.fonts` System Property.
  `static final String`
  `JAVA_AWT_GRAPHICSENV`
  The `java.awt.graphicsenv` System Property.
  `static final String`
  `JAVA_AWT_HEADLESS`
  The `java.awt.headless` System Property.
  `static final String`
  `JAVA_AWT_PRINTERJOB`
  The `java.awt.printerjob` System Property.
  `static final String`
  `JAVA_CLASS_PATH`
  The `java.class.path` System Property.
  `static final String`
  `JAVA_CLASS_VERSION`
  The `java.class.version` System Property.
  `static final String`
  `JAVA_COMPILER`
  The `java.compiler` System Property.
  `static final String`
  `JAVA_ENDORSED_DIRS`
  The `java.endorsed.dirs` System Property.
  `static final String`
  `JAVA_EXT_DIRS`
  The `java.ext.dirs` System Property.
  `static final String`
  `JAVA_HOME`
  The `java.home` System Property.
  `static final String`
  `JAVA_HOME_KEY`
  Deprecated.
  Use `SystemProperties.JAVA_HOME`.
  `static final String`
  `JAVA_IO_TMPDIR`
  The `java.io.tmpdir` System Property.
  `static final String`
  `JAVA_IO_TMPDIR_KEY`
  Deprecated.
  Use `SystemProperties.JAVA_IO_TMPDIR`.
  `static final String`
  `JAVA_LIBRARY_PATH`
  The `java.library.path` System Property.
  `static final String`
  `JAVA_RUNTIME_NAME`
  The `java.runtime.name` System Property.
  `static final String`
  `JAVA_RUNTIME_VERSION`
  The `java.runtime.version` System Property.
  `static final String`
  `JAVA_SPECIFICATION_NAME`
  The `java.specification.name` System Property.
  `static final String`
  `JAVA_SPECIFICATION_VENDOR`
  The `java.specification.vendor` System Property.
  `static final String`
  `JAVA_SPECIFICATION_VERSION`
  The `java.specification.version` System Property.
  `static final String`
  `JAVA_UTIL_PREFS_PREFERENCES_FACTORY`
  The `java.util.prefs.PreferencesFactory` System Property.
  `static final String`
  `JAVA_VENDOR`
  The `java.vendor` System Property.
  `static final String`
  `JAVA_VENDOR_URL`
  The `java.vendor.url` System Property.
  `static final String`
  `JAVA_VERSION`
  The `java.version` System Property.
  `static final String`
  `JAVA_VM_INFO`
  The `java.vm.info` System Property.
  `static final String`
  `JAVA_VM_NAME`
  The `java.vm.name` System Property.
  `static final String`
  `JAVA_VM_SPECIFICATION_NAME`
  The `java.vm.specification.name` System Property.
  `static final String`
  `JAVA_VM_SPECIFICATION_VENDOR`
  The `java.vm.specification.vendor` System Property.
  `static final String`
  `JAVA_VM_SPECIFICATION_VERSION`
  The `java.vm.specification.version` System Property.
  `static final String`
  `JAVA_VM_VENDOR`
  The `java.vm.vendor` System Property.
  `static final String`
  `JAVA_VM_VERSION`
  The `java.vm.version` System Property.
  `static final String`
  `LINE_SEPARATOR`
  Deprecated.
  Use `System.lineSeparator()` instead, since it does not require a privilege check.
  `static final String`
  `OS_ARCH`
  The `os.arch` System Property.
  `static final String`
  `OS_NAME`
  The `os.name` System Property.
  `static final String`
  `OS_VERSION`
  The `os.version` System Property.
  `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.
  `static final String`
  `USER_COUNTRY`
  The `user.country` or `user.region` System Property.
  `static final String`
  `USER_DIR`
  The `user.dir` System Property.
  `static final String`
  `USER_DIR_KEY`
  Deprecated.
  Use `SystemProperties.USER_DIR`.
  `static final String`
  `USER_HOME`
  The `user.home` System Property.
  `static final String`
  `USER_HOME_KEY`
  The System property key for the user home directory.
  `static final String`
  `USER_LANGUAGE`
  The `user.language` System Property.
  `static final String`
  `USER_NAME`
  The `user.name` System Property.
  `static final String`
  `USER_NAME_KEY`
  Deprecated.
  Use `SystemProperties.USER_NAME`.
  `static final 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

  Modifier and Type
  Method
  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 current Java home directory as a `File`.
  `static File`
  `getJavaIoTmpDir()`
  Gets the current Java IO temporary directory as a `File`.
  `static File`
  `getUserDir()`
  Gets the current user directory as a `File`.
  `static File`
  `getUserHome()`
  Gets the current user home directory as a `File`.
  `static String`
  `getUserName()`
  Deprecated.
  Use `SystemProperties.getUserName()`.
  `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 Details

  - ### 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
    See Also:
      - `SystemProperties.getFileEncoding()`

  - ### 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
    See Also:
      - `SystemProperties.getFileSeparator()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaAwtFonts()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaAwtGraphicsenv()`

  - ### 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()`
      - `SystemProperties.getJavaAwtHeadless()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaAwtPrinterjob()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaClassPath()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaClassVersion()`

  - ### 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.
    See Also:
      - `SystemProperties.getJavaCompiler()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaEndorsedDirs()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaExtDirs()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaHome()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaIoTmpdir()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaLibraryPath()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaRuntimeName()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaRuntimeVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaSpecificationName()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaSpecificationVendor()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaSpecificationVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaUtilPrefsPreferencesFactory()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVendor()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVendorUrl()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmInfo()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmName()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmSpecificationName()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmSpecificationVendor()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmSpecificationVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmVendor()`

  - ### 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
    See Also:
      - `SystemProperties.getJavaVmVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getLineSeparator()`

  - ### 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
    See Also:
      - `SystemProperties.getOsArch()`

  - ### 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
    See Also:
      - `SystemProperties.getOsName()`

  - ### 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
    See Also:
      - `SystemProperties.getOsVersion()`

  - ### 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
    See Also:
      - `SystemProperties.getPathSeparator()`

  - ### 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
    See Also:
      - `SystemProperties.getUserDir()`

  - ### 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
    See Also:
      - `SystemProperties.getUserHome()`

  - ### 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
    See Also:
      - `SystemProperties.getUserLanguage()`

  - ### 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
    See Also:
      - `SystemProperties.getUserName()`

  - ### 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
    See Also:
      - `SystemProperties.getUserTimezone()`

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

    Since:
      3.10

  - ### IS_JAVA_16

    public static final boolean IS_JAVA_16
    Is `true` if this is Java version 16 (also 16.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_17

    public static final boolean IS_JAVA_17
    Is `true` if this is Java version 17 (also 17.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_18

    public static final boolean IS_JAVA_18
    Is `true` if this is Java version 18 (also 18.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_19

    public static final boolean IS_JAVA_19
    Is `true` if this is Java version 19 (also 19.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_20

    public static final boolean IS_JAVA_20
    Is `true` if this is Java version 20 (also 20.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_21

    public static final boolean IS_JAVA_21
    Is `true` if this is Java version 21 (also 21.x versions).

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

    Since:
      3.5

  - ### IS_OS_MAC_OSX_SIERRA

    public static final boolean IS_OS_MAC_OSX_SIERRA
    Is `true` if this is Mac OS X Sierra.

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

    This value is initialized when the class is loaded.

    Since:
      3.12.0

  - ### IS_OS_MAC_OSX_HIGH_SIERRA

    public static final boolean IS_OS_MAC_OSX_HIGH_SIERRA
    Is `true` if this is Mac OS X High Sierra.

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

    This value is initialized when the class is loaded.

    Since:
      3.12.0

  - ### IS_OS_MAC_OSX_MOJAVE

    public static final boolean IS_OS_MAC_OSX_MOJAVE
    Is `true` if this is Mac OS X Mojave.

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

    This value is initialized when the class is loaded.

    Since:
      3.12.0

  - ### IS_OS_MAC_OSX_CATALINA

    public static final boolean IS_OS_MAC_OSX_CATALINA
    Is `true` if this is Mac OS X Catalina.

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

    This value is initialized when the class is loaded.

    Since:
      3.12.0

  - ### IS_OS_MAC_OSX_BIG_SUR

    public static final boolean IS_OS_MAC_OSX_BIG_SUR
    Is `true` if this is Mac OS X Big Sur.

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

    This value is initialized when the class is loaded.

    Since:
      3.12.0

  - ### IS_OS_MAC_OSX_MONTEREY

    public static final boolean IS_OS_MAC_OSX_MONTEREY
    Is `true` if this is Mac OS X Monterey.

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_OS_MAC_OSX_VENTURA

    public static final boolean IS_OS_MAC_OSX_VENTURA
    Is `true` if this is Mac OS X Ventura.

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

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

    This value is initialized when the class is loaded.

    Since:
      3.5

  - ### IS_OS_WINDOWS_11

    public static final boolean IS_OS_WINDOWS_11
    Is `true` if this is Windows 11.

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

    OpenJDK fixed the return value for `os.name` on Windows 11 to versions 8, 11, and 17:

    - Affects Java versions 7u321, 8u311, 11.0.13-oracle, 17.0.1: https://bugs.openjdk.org/browse/JDK-8274737
    - Fixed in OpenJDK commit https://github.com/openjdk/jdk/commit/97ea9dd2f24f9f1fb9b9345a4202a825ee28e014

    This value is initialized when the class is loaded.

    Since:
      3.13.0

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

    This value is initialized when the class is loaded.

    Since:
      3.5

  - ### USER_HOME_KEY

    public static final String USER_HOME_KEY
    The System property key for the user home directory.
    See Also:
      - Constant Field Values

  - ### USER_NAME_KEY

    @Deprecated public static final String USER_NAME_KEY
    Deprecated.
    Use `SystemProperties.USER_NAME`.
    The System property key for the user name.
    See Also:
      - Constant Field Values

  - ### USER_DIR_KEY

    @Deprecated public static final String USER_DIR_KEY
    Deprecated.
    Use `SystemProperties.USER_DIR`.
    The System property key for the user directory.
    See Also:
      - Constant Field Values

  - ### JAVA_IO_TMPDIR_KEY

    @Deprecated public static final String JAVA_IO_TMPDIR_KEY
    Deprecated.
    Use `SystemProperties.JAVA_IO_TMPDIR`.
    The System property key for the Java IO temporary directory.
    See Also:
      - Constant Field Values

  - ### JAVA_HOME_KEY

    @Deprecated public static final String JAVA_HOME_KEY
    Deprecated.
    Use `SystemProperties.JAVA_HOME`.
    The System property key for the Java home directory.
    See Also:
      - Constant Field Values

  - ### 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
    See Also:
      - `SystemProperties.getAwtToolkit()`

- ## Constructor Details

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

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

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

  - ### getJavaHome

    public static File getJavaHome()
    Gets the current 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:
      - `SystemProperties.getJavaHome()`

  - ### getJavaIoTmpDir

    public static File getJavaIoTmpDir()
    Gets the current 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:
      - `SystemProperties.getJavaIoTmpdir()`

  - ### getUserDir

    public static File getUserDir()
    Gets the current 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:
      - `SystemProperties.getUserDir()`

  - ### getUserHome

    public static File getUserHome()
    Gets the current 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:
      - `SystemProperties.getUserHome()`

  - ### getUserName

    @Deprecated public static String getUserName()
    Deprecated.
    Use `SystemProperties.getUserName()`.
    Gets the current 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:
      - `SystemProperties.getUserName()`

  - ### 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:
      - `SystemProperties.getUserName()`

  - ### 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 less than the required version
    Since:
      3.9