Class 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 Detail

      • 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
      • 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
    • Constructor Detail

      • SystemUtils

        public SystemUtils()
        SystemUtils instances should NOT be constructed in standard programming. Instead, the class should be used as SystemUtils.FILE_SEPARATOR.

        This constructor is public to permit tools that require a JavaBean instance to operate.

    • Method Detail

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