Package org.apache.commons.lang3

# Class SystemUtils

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

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SystemUtils()`
  SystemUtils instances shouldn't 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 Path`
  `getJavaHomePath()`
  Gets the current Java home directory as a `File`.
  `static File`
  `getJavaIoTmpDir()`
  Gets the current Java IO temporary directory as a `File`.
  `static Path`
  `getJavaIoTmpDirPath()`
  Gets the current Java IO temporary directory as a `Path`.
  `static File`
  `getUserDir()`
  Gets the current user directory as a `File`.
  `static Path`
  `getUserDirPath()`
  Gets the current user directory as a `Path`.
  `static File`
  `getUserHome()`
  Gets the current user home directory as a `File`.
  `static Path`
  `getUserHomePath()`
  Gets the current user home directory as a `Path`.
  `static String`
  `getUserName()`
  Deprecated.
  Use `SystemProperties.getUserName()`.
  `static String`
  `getUserName(String defaultValue)`
  Deprecated.
  Use `SystemProperties.getUserName(String)`.
  `static boolean`
  `isJavaAwtHeadless()`
  Tests whether the `JAVA_AWT_HEADLESS` value is `true`.
  `static boolean`
  `isJavaVersionAtLeast(JavaVersion requiredVersion)`
  Tests whether the Java version at least the requested version.
  `static boolean`
  `isJavaVersionAtMost(JavaVersion requiredVersion)`
  Tests whether 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
    A constant for the System Property `file.encoding`.

    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.
    A constant for the System Property `file.separator`.

    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
    A constant for the System Property `java.awt.fonts`.

    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
    A constant for the System Property `java.awt.graphicsenv`.

    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
    A constant for the System Property `java.awt.headless`. 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
    A constant for the System Property `java.awt.printerjob`.

    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
    A constant for the System Property `java.class.path`. 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
    A constant for the System Property `java.class.version`. 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
    A constant for the System Property `java.compiler`. 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
    A constant for the System Property `java.endorsed.dirs`. 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
    A constant for the System Property `java.ext.dirs`. 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
    A constant for the System Property `java.home`. 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
    A constant for the System Property `java.io.tmpdir`. 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
    A constant for the System Property `java.library.path`. 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
    A constant for the System Property `java.runtime.name`. 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
    A constant for the System Property `java.runtime.version`. 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
    A constant for the System Property `java.specification.name`. 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
    A constant for the System Property `java.specification.vendor`. 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
    A constant for the System Property `java.specification.version`. 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
    A constant for the System Property `java.util.prefs.PreferencesFactory`. 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
    A constant for the System Property `java.vendor`. 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
    A constant for the System Property `java.vendor.url`. 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
    A constant for the System Property `java.version`. 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
    A constant for the System Property `java.vm.info`. 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
    A constant for the System Property `java.vm.name`. 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
    A constant for the System Property `java.vm.specification.name`. 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
    A constant for the System Property `java.vm.specification.vendor`. 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
    A constant for the System Property `java.vm.specification.version`. 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
    A constant for the System Property `java.vm.vendor`. 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
    A constant for the System Property `java.vm.version`. 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.
    A constant for the System Property `line.separator`. 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
    A constant for the System Property `os.arch`. 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
    A constant for the System Property `os.name`. 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
    A constant for the System Property `os.version`. 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.
    A constant for the System Property `path.separator`. 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
    A constant for the System Property `user.country` or `user.region`. 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
    A constant for the System Property `user.dir`. 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
    A constant for the System Property `user.home`. 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
    A constant for the System Property `user.language`. 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
    A constant for the System Property `user.name`. 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
    A constant for the System Property `user.timezone`. 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
    The constant `true` if this is Java version 1.1 (also 1.1.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_2

    public static final boolean IS_JAVA_1_2
    The constant `true` if this is Java version 1.2 (also 1.2.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_3

    public static final boolean IS_JAVA_1_3
    The constant `true` if this is Java version 1.3 (also 1.3.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_4

    public static final boolean IS_JAVA_1_4
    The constant `true` if this is Java version 1.4 (also 1.4.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_5

    public static final boolean IS_JAVA_1_5
    The constant `true` if this is Java version 1.5 (also 1.5.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_6

    public static final boolean IS_JAVA_1_6
    The constant `true` if this is Java version 1.6 (also 1.6.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

  - ### IS_JAVA_1_7

    public static final boolean IS_JAVA_1_7
    The constant `true` if this is Java version 1.7 (also 1.7.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 1.8 (also 1.8.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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`
    The constant `true` if this is Java version 1.9 (also 1.9.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 9 (also 9.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 10 (also 10.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 11 (also 11.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 12 (also 12.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 13 (also 13.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 14 (also 14.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 15 (also 15.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 16 (also 16.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 17 (also 17.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 18 (also 18.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 19 (also 19.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 20 (also 20.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

    The field will return `false` if `JAVA_SPECIFICATION_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
    The constant `true` if this is Java version 21 (also 21.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_JAVA_22

    public static final boolean IS_JAVA_22
    The constant `true` if this is Java version 22 (also 22.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

    Since:
      3.15.0

  - ### IS_JAVA_23

    public static final boolean IS_JAVA_23
    The constant `true` if this is Java version 23 (also 23.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

    Since:
      3.18.0

  - ### IS_JAVA_24

    public static final boolean IS_JAVA_24
    The constant `true` if this is Java version 24 (also 24.x versions).

    The result depends on the value of the `JAVA_SPECIFICATION_VERSION` constant.

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

    This value is initialized when the class is loaded.

    Since:
      3.18.0

  - ### IS_OS_AIX

    public static final boolean IS_OS_AIX
    The constant `true` if this is AIX.

    The result depends on the value of the `OS_NAME` constant.

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

    This value is initialized when the class is loaded.

    Since:
      2.0

  - ### IS_OS_ANDROID

    public static final boolean IS_OS_ANDROID
    The constant `true` if this is Android.

    See https://developer.android.com/reference/java/lang/System#getProperties().

    This value is initialized when the class is loaded.

    Since:
      3.15.0

  - ### IS_OS_HP_UX

    public static final boolean IS_OS_HP_UX
    The constant `true` if this is HP-UX.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is IBM OS/400.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Irix.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Linux.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Mac.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Mac.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is macOS X Cheetah.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Puma.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Jaguar.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Panther.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Tiger.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Leopard.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Snow Leopard.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Lion.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Mountain Lion.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Mavericks.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Yosemite.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X El Capitan.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Sierra.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X High Sierra.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Mojave.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS 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
    The constant `true` if this is macOS X Big Sur.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Monterey.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` 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
    The constant `true` if this is macOS X Ventura.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` is `null`.

    This value is initialized when the class is loaded.

    Since:
      3.13.0

  - ### IS_OS_MAC_OSX_SONOMA

    public static final boolean IS_OS_MAC_OSX_SONOMA
    The constant `true` if this is macOS X Sonoma.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` is `null`.

    This value is initialized when the class is loaded.

    Since:
      3.15.0

  - ### IS_OS_MAC_OSX_SEQUOIA

    public static final boolean IS_OS_MAC_OSX_SEQUOIA
    The constant `true` if this is macOS X Sequoia.

    The value depends on the value of the `OS_NAME` and `OS_VERSION` constants.

    The value is `false` if `OS_NAME` or `OS_VERSION` is `null`.

    This value is initialized when the class is loaded.

    Since:
      3.18.0

  - ### IS_OS_FREE_BSD

    public static final boolean IS_OS_FREE_BSD
    The constant `true` if this is FreeBSD.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is OpenBSD.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is NetBSD.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is OS/2.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Solaris.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is SunOS.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `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
    The constant `true` if this is Windows.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 2000.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 2003.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows Server 2008.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows Server 2012.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 95.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 98.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows ME.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows NT.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows XP.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows Vista.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 7.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 8.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 10.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is Windows 11.

    The result depends on the value of the `OS_NAME` constant.

    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
    The constant `true` if this is z/OS.

    The result depends on the value of the `OS_NAME` constant.

    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
    A constant for the System Property `awt.toolkit`.

    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 shouldn't be constructed in standard programming. Instead, elements should be accessed directly, for example `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()`

  - ### getJavaHomePath

    public static Path getJavaHomePath()
    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:
      3.18.0
    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()`

  - ### getJavaIoTmpDirPath

    public static Path getJavaIoTmpDirPath()
    Gets the current Java IO temporary directory as a `Path`.
    Returns:
      a directory.
    Throws:
      `SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
    Since:
      3.18.0
    See Also:
      - `SystemProperties.getJavaIoTmpdir()`

  - ### getUserDir

    public static File getUserDir()
    Gets the current user directory as a `File`.

    The result is based on the system property "user.dir".

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

  - ### getUserDirPath

    public static Path getUserDirPath()
    Gets the current user directory as a `Path`.

    The result is based on the system property "user.dir".

    Returns:
      a directory.
    Throws:
      `SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
    Since:
      3.18.0
    See Also:
      - `SystemProperties.getUserDir()`

  - ### getUserHome

    public static File getUserHome()
    Gets the current user home directory as a `File`.

    The result is based on the system property "user.home".

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

  - ### getUserHomePath

    public static Path getUserHomePath()
    Gets the current user home directory as a `Path`.

    The result is based on the system property "user.home".

    Returns:
      a directory.
    Throws:
      `SecurityException` - if a security manager exists and its `checkPropertyAccess` method doesn't allow access to the specified system property.
    Since:
      3.18.0
    See Also:
      - `SystemProperties.getUserHome()`

  - ### getUserName

    @Deprecated public static String getUserName()
    Deprecated.
    Use `SystemProperties.getUserName()`.
    Gets the current user name.

    The result is based on the system property "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

    @Deprecated public static String getUserName(String defaultValue)
    Deprecated.
    Use `SystemProperties.getUserName(String)`.
    Gets the user name.

    The result is based on the system property "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()
    Tests whether the `JAVA_AWT_HEADLESS` value is `true`.

    The result is based on the system property "java.awt.headless".

    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)
    Tests whether the Java version at least the requested version.

    The result is based on the system property saved in `JAVA_SPECIFICATION_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)
    Tests whether the Java version at most the requested version.

    The result is based on the system property saved in `JAVA_SPECIFICATION_VERSION`.

    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