From 95a0e2b09bc4a3a363e5ab1c853d002fb74ad7af Mon Sep 17 00:00:00 2001
From: Gary Gregory
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * If a {@link SecurityException} is caught, the return value is {@code null}.
+ *
+ * If a {@link SecurityException} is caught, the return value is {@code null}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * Returns {@code null} if the property cannot be read due to a {@link SecurityException}.
+ *
+ * File encoding, such as {@code Cp1252}. + *
+ *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getFileEncoding() + * @since 2.0 + * @since Java 1.2 + */ + public static final String FILE_ENCODING = SystemProperties.getFileEncoding(); + + /** + * The {@code file.separator} System Property. + * The file separator is: + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getFileSeparator() + * @deprecated Use {@link File#separator}, since it is guaranteed to be a + * string containing a single character and it does not require a privilege check. + * @since Java 1.1 + */ + @Deprecated + public static final String FILE_SEPARATOR = SystemProperties.getFileSeparator(); + + /** + * The {@code java.awt.fonts} System Property. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaAwtFonts() + * @since 2.1 + */ + public static final String JAVA_AWT_FONTS = SystemProperties.getJavaAwtFonts(); + + /** + * The {@code java.awt.graphicsenv} System Property. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaAwtGraphicsenv() + * @since 2.1 + */ + public static final String JAVA_AWT_GRAPHICSENV = SystemProperties.getJavaAwtGraphicsenv(); + + /** + * The {@code java.awt.headless} System Property. The value of this property is the String {@code "true"} or + * {@code "false"}. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see #isJavaAwtHeadless() + * @see SystemProperties#getJavaAwtHeadless() + * @since 2.1 + * @since Java 1.4 + */ + public static final String JAVA_AWT_HEADLESS = SystemProperties.getJavaAwtHeadless(); + + /** + * The {@code java.awt.printerjob} System Property. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaAwtPrinterjob() + * @since 2.1 + */ + public static final String JAVA_AWT_PRINTERJOB = SystemProperties.getJavaAwtPrinterjob(); + + /** + * The {@code java.class.path} System Property. Java class path. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaClassPath() + * @since Java 1.1 + */ + public static final String JAVA_CLASS_PATH = SystemProperties.getJavaClassPath(); + + /** + * The {@code java.class.version} System Property. Java class format version number. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaClassVersion() + * @since Java 1.1 + */ + public static final String JAVA_CLASS_VERSION = SystemProperties.getJavaClassVersion(); + + /** + * The {@code java.compiler} System Property. Name of JIT compiler to use. First in JDK version 1.2. Not used in Sun + * JDKs after 1.2. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaCompiler() + * @since Java 1.2. Not used in Sun versions after 1.2. + */ + public static final String JAVA_COMPILER = SystemProperties.getJavaCompiler(); + + /** + * The {@code java.endorsed.dirs} System Property. Path of endorsed directory or directories. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaEndorsedDirs() + * @since Java 1.4 + */ + public static final String JAVA_ENDORSED_DIRS = SystemProperties.getJavaEndorsedDirs(); + + /** + * The {@code java.ext.dirs} System Property. Path of extension directory or directories. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaExtDirs() + * @since Java 1.3 + */ + public static final String JAVA_EXT_DIRS = SystemProperties.getJavaExtDirs(); + + /** + * The {@code java.home} System Property. Java installation directory. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaHome() + * @since Java 1.1 + */ + public static final String JAVA_HOME = SystemProperties.getJavaHome(); + + /** + * The {@code java.io.tmpdir} System Property. Default temp file path. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaIoTmpdir() + * @since Java 1.2 + */ + public static final String JAVA_IO_TMPDIR = SystemProperties.getJavaIoTmpdir(); + + /** + * The {@code java.library.path} System Property. List of paths to search when loading libraries. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaLibraryPath() + * @since Java 1.2 + */ + public static final String JAVA_LIBRARY_PATH = SystemProperties.getJavaLibraryPath(); + + /** + * The {@code java.runtime.name} System Property. Java Runtime Environment name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaRuntimeName() + * @since 2.0 + * @since Java 1.3 + */ + public static final String JAVA_RUNTIME_NAME = SystemProperties.getJavaRuntimeName(); + + /** + * The {@code java.runtime.version} System Property. Java Runtime Environment version. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaRuntimeVersion() + * @since 2.0 + * @since Java 1.3 + */ + public static final String JAVA_RUNTIME_VERSION = SystemProperties.getJavaRuntimeVersion(); + + /** + * The {@code java.specification.name} System Property. Java Runtime Environment specification name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaSpecificationName() + * @since Java 1.2 + */ + public static final String JAVA_SPECIFICATION_NAME = SystemProperties.getJavaSpecificationName(); + + /** + * The {@code java.specification.vendor} System Property. Java Runtime Environment specification vendor. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaSpecificationVendor() + * @since Java 1.2 + */ + public static final String JAVA_SPECIFICATION_VENDOR = SystemProperties.getJavaSpecificationVendor(); + + /** + * The {@code java.specification.version} System Property. Java Runtime Environment specification version. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaSpecificationVersion() + * @since Java 1.3 + */ + public static final String JAVA_SPECIFICATION_VERSION = SystemProperties.getJavaSpecificationVersion(); + + private static final JavaVersion JAVA_SPECIFICATION_VERSION_AS_ENUM = JavaVersion.get(JAVA_SPECIFICATION_VERSION); + + /** + * The {@code java.util.prefs.PreferencesFactory} System Property. A class name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaUtilPrefsPreferencesFactory() + * @since 2.1 + * @since Java 1.4 + */ + public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = SystemProperties.getJavaUtilPrefsPreferencesFactory(); + + /** + * The {@code java.vendor} System Property. Java vendor-specific string. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVersion() + * @since Java 1.1 + */ + public static final String JAVA_VENDOR = SystemProperties.getJavaVersion(); + + /** + * The {@code java.vendor.url} System Property. Java vendor URL. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVendorUrl() + * @since Java 1.1 + */ + public static final String JAVA_VENDOR_URL = SystemProperties.getJavaVendorUrl(); + + /** + * The {@code java.version} System Property. Java version number. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVersion() + * @since Java 1.1 + */ + public static final String JAVA_VERSION = SystemProperties.getJavaVersion(); + + /** + * The {@code java.vm.info} System Property. Java Virtual Machine implementation info. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmInfo() + * @since 2.0 + * @since Java 1.2 + */ + public static final String JAVA_VM_INFO = SystemProperties.getJavaVmInfo(); + + /** + * The {@code java.vm.name} System Property. Java Virtual Machine implementation name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmName() + * @since Java 1.2 + */ + public static final String JAVA_VM_NAME = SystemProperties.getJavaVmName(); + + /** + * The {@code java.vm.specification.name} System Property. Java Virtual Machine specification name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmSpecificationName() + * @since Java 1.2 + */ + public static final String JAVA_VM_SPECIFICATION_NAME = SystemProperties.getJavaVmSpecificationName(); + + /** + * The {@code java.vm.specification.vendor} System Property. Java Virtual Machine specification vendor. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmSpecificationVendor() + * @since Java 1.2 + */ + public static final String JAVA_VM_SPECIFICATION_VENDOR = SystemProperties.getJavaVmSpecificationVendor(); + + /** + * The {@code java.vm.specification.version} System Property. Java Virtual Machine specification version. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmSpecificationVersion() + * @since Java 1.2 + */ + public static final String JAVA_VM_SPECIFICATION_VERSION = SystemProperties.getJavaVmSpecificationVersion(); + + /** + * The {@code java.vm.vendor} System Property. Java Virtual Machine implementation vendor. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmVendor() + * @since Java 1.2 + */ + public static final String JAVA_VM_VENDOR = SystemProperties.getJavaVmVendor(); + + /** + * The {@code java.vm.version} System Property. Java Virtual Machine implementation version. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getJavaVmVersion() + * @since Java 1.2 + */ + public static final String JAVA_VM_VERSION = SystemProperties.getJavaVmVersion(); + + /** + * The {@code line.separator} System Property. Line separator ({@code "\n"} on UNIX). + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getLineSeparator() + * @deprecated Use {@link System#lineSeparator()} instead, since it does not require a privilege check. + * @since Java 1.1 + */ + @Deprecated + public static final String LINE_SEPARATOR = SystemProperties.getLineSeparator(); + + /** + * The {@code os.arch} System Property. Operating system architecture. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getOsArch() + * @since Java 1.1 + */ + public static final String OS_ARCH = SystemProperties.getOsArch(); + + /** + * The {@code os.name} System Property. Operating system name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getOsName() + * @since Java 1.1 + */ + public static final String OS_NAME = SystemProperties.getOsName(); + + /** + * The {@code os.version} System Property. Operating system version. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getOsVersion() + * @since Java 1.1 + */ + public static final String OS_VERSION = SystemProperties.getOsVersion(); + + /** + * The {@code path.separator} System Property. Path separator ({@code ":"} on UNIX). + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getPathSeparator() + * @deprecated Use {@link File#pathSeparator}, since it is guaranteed to be a + * string containing a single character and it does not require a privilege check. + * @since Java 1.1 + */ + @Deprecated + public static final String PATH_SEPARATOR = SystemProperties.getPathSeparator(); + + /** + * The {@code user.country} or {@code user.region} System Property. User's country code, such as {@code "GB"}. First + * in Java version 1.2 as {@code user.region}. Renamed to {@code user.country} in 1.4 + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link 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 + * @since Java 1.2 + */ + public static final String USER_COUNTRY = SystemProperties.getProperty(SystemProperties.USER_COUNTRY, + () -> SystemProperties.getProperty(SystemProperties.USER_REGION)); + + /** + * The {@code user.dir} System Property. User's current working directory. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getUserDir() + * @since Java 1.1 + */ + public static final String USER_DIR = SystemProperties.getUserDir(); + + /** + * The {@code user.home} System Property. User's home directory. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getUserHome() + * @since Java 1.1 + */ + public static final String USER_HOME = SystemProperties.getUserHome(); + + /** + * The {@code user.language} System Property. User's language code, such as {@code "en"}. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getUserLanguage() + * @since 2.0 + * @since Java 1.2 + */ + public static final String USER_LANGUAGE = SystemProperties.getUserLanguage(); + + /** + * The {@code user.name} System Property. User's account name. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getUserName() + * @since Java 1.1 + */ + public static final String USER_NAME = SystemProperties.getUserName(); + + /** + * The {@code user.timezone} System Property. For example: {@code "America/Los_Angeles"}. + * + *+ * Defaults to {@code 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 {@link System#setProperty(String,String)} or + * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of + * sync with that System property. + *
+ * + * @see SystemProperties#getUserTimezone() + * @since 2.1 + */ + public static final String USER_TIMEZONE = SystemProperties.getUserTimezone(); + + // Java version checks + // ----------------------------------------------------------------------- + // These MUST be declared after those above as they depend on the + // values being set up + + /** + * Is {@code true} if this is Java version 1.1 (also 1.1.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1"); + + /** + * Is {@code true} if this is Java version 1.2 (also 1.2.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2"); + + /** + * Is {@code true} if this is Java version 1.3 (also 1.3.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3"); + + /** + * Is {@code true} if this is Java version 1.4 (also 1.4.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4"); + + /** + * Is {@code true} if this is Java version 1.5 (also 1.5.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5"); + + /** + * Is {@code true} if this is Java version 1.6 (also 1.6.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ */ + public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6"); + + /** + * Is {@code true} if this is Java version 1.7 (also 1.7.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.0 + */ + public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7"); + + /** + * Is {@code true} if this is Java version 1.8 (also 1.8.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.3.2 + */ + public static final boolean IS_JAVA_1_8 = getJavaVersionMatches("1.8"); + + /** + * Is {@code true} if this is Java version 1.9 (also 1.9.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + * + * @deprecated As of release 3.5, replaced by {@link #IS_JAVA_9} + */ + @Deprecated + public static final boolean IS_JAVA_1_9 = getJavaVersionMatches("9"); + + /** + * Is {@code true} if this is Java version 9 (also 9.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.5 + */ + public static final boolean IS_JAVA_9 = getJavaVersionMatches("9"); + + /** + * Is {@code true} if this is Java version 10 (also 10.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.7 + */ + public static final boolean IS_JAVA_10 = getJavaVersionMatches("10"); + + /** + * Is {@code true} if this is Java version 11 (also 11.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.8 + */ + public static final boolean IS_JAVA_11 = getJavaVersionMatches("11"); + + /** + * Is {@code true} if this is Java version 12 (also 12.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.9 + */ + public static final boolean IS_JAVA_12 = getJavaVersionMatches("12"); + + /** + * Is {@code true} if this is Java version 13 (also 13.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.9 + */ + public static final boolean IS_JAVA_13 = getJavaVersionMatches("13"); + + /** + * Is {@code true} if this is Java version 14 (also 14.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.10 + */ + public static final boolean IS_JAVA_14 = getJavaVersionMatches("14"); + + /** + * Is {@code true} if this is Java version 15 (also 15.x versions). + * + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.10 + */ + public static final boolean IS_JAVA_15 = getJavaVersionMatches("15"); + + /** + * Is {@code true} if this is Java version 16 (also 16.x versions). + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.13.0 + */ + public static final boolean IS_JAVA_16 = getJavaVersionMatches("16"); + + /** + * Is {@code true} if this is Java version 17 (also 17.x versions). + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.13.0 + */ + public static final boolean IS_JAVA_17 = getJavaVersionMatches("17"); + + /** + * Is {@code true} if this is Java version 18 (also 18.x versions). + *+ * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.13.0 + */ + public static final boolean IS_JAVA_18 = getJavaVersionMatches("18"); + + // Operating system checks + // ----------------------------------------------------------------------- + // These MUST be declared after those above as they depend on the + // values being set up + // Please advise dev@commons.apache.org if you want another added + // or a mistake corrected + + /** + * Is {@code true} if this is AIX. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_AIX = getOsMatchesName("AIX"); + + /** + * Is {@code true} if this is HP-UX. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_HP_UX = getOsMatchesName("HP-UX"); + + /** + * Is {@code true} if this is IBM OS/400. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.3 + */ + public static final boolean IS_OS_400 = getOsMatchesName("OS/400"); + + /** + * Is {@code true} if this is Irix. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_IRIX = getOsMatchesName("Irix"); + + /** + * Is {@code true} if this is Linux. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_LINUX = getOsMatchesName("Linux") || getOsMatchesName("LINUX"); + + /** + * Is {@code true} if this is Mac. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_MAC = getOsMatchesName("Mac"); + + /** + * Is {@code true} if this is Mac. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_MAC_OSX = getOsMatchesName("Mac OS X"); + + /** + * Is {@code true} if this is Mac OS X Cheetah. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_CHEETAH = getOsMatches("Mac OS X", "10.0"); + + /** + * Is {@code true} if this is Mac OS X Puma. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_PUMA = getOsMatches("Mac OS X", "10.1"); + + /** + * Is {@code true} if this is Mac OS X Jaguar. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_JAGUAR = getOsMatches("Mac OS X", "10.2"); + + /** + * Is {@code true} if this is Mac OS X Panther. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_PANTHER = getOsMatches("Mac OS X", "10.3"); + + /** + * Is {@code true} if this is Mac OS X Tiger. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_TIGER = getOsMatches("Mac OS X", "10.4"); + + /** + * Is {@code true} if this is Mac OS X Leopard. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_LEOPARD = getOsMatches("Mac OS X", "10.5"); + + /** + * Is {@code true} if this is Mac OS X Snow Leopard. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_SNOW_LEOPARD = getOsMatches("Mac OS X", "10.6"); + + /** + * Is {@code true} if this is Mac OS X Lion. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_LION = getOsMatches("Mac OS X", "10.7"); + + /** + * Is {@code true} if this is Mac OS X Mountain Lion. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_MOUNTAIN_LION = getOsMatches("Mac OS X", "10.8"); + + /** + * Is {@code true} if this is Mac OS X Mavericks. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_MAVERICKS = getOsMatches("Mac OS X", "10.9"); + + /** + * Is {@code true} if this is Mac OS X Yosemite. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_MAC_OSX_YOSEMITE = getOsMatches("Mac OS X", "10.10"); + + /** + * Is {@code true} if this is Mac OS X El Capitan. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.5 + */ + public static final boolean IS_OS_MAC_OSX_EL_CAPITAN = getOsMatches("Mac OS X", "10.11"); + + /** + * Is {@code true} if this is Mac OS X Sierra. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.12.0 + */ + public static final boolean IS_OS_MAC_OSX_SIERRA = getOsMatches("Mac OS X", "10.12"); + + /** + * Is {@code true} if this is Mac OS X High Sierra. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.12.0 + */ + public static final boolean IS_OS_MAC_OSX_HIGH_SIERRA = getOsMatches("Mac OS X", "10.13"); + + /** + * Is {@code true} if this is Mac OS X Mojave. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.12.0 + */ + public static final boolean IS_OS_MAC_OSX_MOJAVE = getOsMatches("Mac OS X", "10.14"); + + /** + * Is {@code true} if this is Mac OS X Catalina. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.12.0 + */ + public static final boolean IS_OS_MAC_OSX_CATALINA = getOsMatches("Mac OS X", "10.15"); + + /** + * Is {@code true} if this is Mac OS X Big Sur. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.12.0 + */ + public static final boolean IS_OS_MAC_OSX_BIG_SUR = getOsMatches("Mac OS X", "10.16"); + + /** + * Is {@code true} if this is FreeBSD. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.1 + */ + public static final boolean IS_OS_FREE_BSD = getOsMatchesName("FreeBSD"); + + /** + * Is {@code true} if this is OpenBSD. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.1 + */ + public static final boolean IS_OS_OPEN_BSD = getOsMatchesName("OpenBSD"); + + /** + * Is {@code true} if this is NetBSD. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.1 + */ + public static final boolean IS_OS_NET_BSD = getOsMatchesName("NetBSD"); + + /** + * Is {@code true} if this is OS/2. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_OS2 = getOsMatchesName("OS/2"); + + /** + * Is {@code true} if this is Solaris. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_SOLARIS = getOsMatchesName("Solaris"); + + /** + * Is {@code true} if this is SunOS. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_SUN_OS = getOsMatchesName("SunOS"); + + /** + * Is {@code 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 {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.1 + */ + public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX + || IS_OS_SOLARIS || IS_OS_SUN_OS || IS_OS_FREE_BSD || IS_OS_OPEN_BSD || IS_OS_NET_BSD; + + /** + * Is {@code true} if this is Windows. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS = getOsMatchesName(OS_NAME_WINDOWS_PREFIX); + + /** + * Is {@code true} if this is Windows 2000. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_2000 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2000"); + + /** + * Is {@code true} if this is Windows 2003. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.1 + */ + public static final boolean IS_OS_WINDOWS_2003 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2003"); + + /** + * Is {@code true} if this is Windows Server 2008. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.1 + */ + public static final boolean IS_OS_WINDOWS_2008 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2008"); + + /** + * Is {@code true} if this is Windows Server 2012. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.4 + */ + public static final boolean IS_OS_WINDOWS_2012 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2012"); + + /** + * Is {@code true} if this is Windows 95. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_95 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 95"); + + /** + * Is {@code true} if this is Windows 98. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_98 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 98"); + + /** + * Is {@code true} if this is Windows ME. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_ME = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Me"); + + /** + * Is {@code true} if this is Windows NT. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_NT = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " NT"); + + /** + * Is {@code true} if this is Windows XP. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.0 + */ + public static final boolean IS_OS_WINDOWS_XP = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " XP"); + + /** + * Is {@code true} if this is Windows Vista. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 2.4 + */ + public static final boolean IS_OS_WINDOWS_VISTA = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Vista"); + + /** + * Is {@code true} if this is Windows 7. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.0 + */ + public static final boolean IS_OS_WINDOWS_7 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 7"); + + /** + * Is {@code true} if this is Windows 8. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.2 + */ + public static final boolean IS_OS_WINDOWS_8 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 8"); + + /** + * Is {@code true} if this is Windows 10. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.5 + */ + public static final boolean IS_OS_WINDOWS_10 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 10"); + + /** + * Is {@code true} if this is Windows 11. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * OpenJDK fixed the return value for {@code os.name} on Windows 11 to versions 8, 11, and 17: + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.13.0 + */ + public static final boolean IS_OS_WINDOWS_11 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 11"); + + /** + * Is {@code true} if this is z/OS. + * + *+ * The field will return {@code false} if {@code OS_NAME} is {@code null}. + *
+ *+ * This value is initialized when the class is loaded. + *
+ * + * @since 3.5 + */ + // Values on a z/OS system I tested (Gary Gregory - 2016-03-12) + // os.arch = s390x + // os.encoding = ISO8859_1 + // os.name = z/OS + // os.version = 02.02.00 + public static final boolean IS_OS_ZOS = getOsMatchesName("z/OS"); + /** * The System property key for the user home directory. */ - private static final String USER_HOME_KEY = "user.home"; + public static final String USER_HOME_KEY = "user.home"; /** * The System property key for the user name. + * + * @deprecated Use {@link SystemProperties#USER_NAME}. */ - private static final String USER_NAME_KEY = "user.name"; + @Deprecated + public static final String USER_NAME_KEY = "user.name"; /** * The System property key for the user directory. + * + * @deprecated Use {@link SystemProperties#USER_DIR}. */ - private static final String USER_DIR_KEY = "user.dir"; + @Deprecated + public static final String USER_DIR_KEY = "user.dir"; /** * The System property key for the Java IO temporary directory. + * + * @deprecated Use {@link SystemProperties#JAVA_IO_TMPDIR}. */ - private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir"; + @Deprecated + public static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir"; /** * The System property key for the Java home directory. + * + * @deprecated Use {@link SystemProperties#JAVA_HOME}. */ - private static final String JAVA_HOME_KEY = "java.home"; + @Deprecated + public static final String JAVA_HOME_KEY = "java.home"; /** * The {@code awt.toolkit} System Property. @@ -87,1476 +1806,9 @@ public class SystemUtils { * * * @since 2.1 + * @see SystemProperties#getAwtToolkit() */ - public static final String AWT_TOOLKIT = getSystemProperty("awt.toolkit"); - - /** - * The {@code file.encoding} System Property. - * - *- * File encoding, such as {@code Cp1252}. - *
- *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.2 - */ - public static final String FILE_ENCODING = getSystemProperty("file.encoding"); - - /** - * The {@code file.separator} System Property. - * The file separator is: - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of - * sync with that System property. - *
- * - * @deprecated Use {@link File#separator}, since it is guaranteed to be a - * string containing a single character and it does not require a privilege check. - * @since Java 1.1 - */ - @Deprecated - public static final String FILE_SEPARATOR = getSystemProperty("file.separator"); - - /** - * The {@code java.awt.fonts} System Property. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_AWT_FONTS = getSystemProperty("java.awt.fonts"); - - /** - * The {@code java.awt.graphicsenv} System Property. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_AWT_GRAPHICSENV = getSystemProperty("java.awt.graphicsenv"); - - /** - * The {@code java.awt.headless} System Property. The value of this property is the String {@code "true"} or - * {@code "false"}. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of - * sync with that System property. - *
- * - * @see #isJavaAwtHeadless() - * @since 2.1 - * @since Java 1.4 - */ - public static final String JAVA_AWT_HEADLESS = getSystemProperty("java.awt.headless"); - - /** - * The {@code java.awt.printerjob} System Property. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_AWT_PRINTERJOB = getSystemProperty("java.awt.printerjob"); - - /** - * The {@code java.class.path} System Property. Java class path. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_CLASS_PATH = getSystemProperty("java.class.path"); - - /** - * The {@code java.class.version} System Property. Java class format version number. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_CLASS_VERSION = getSystemProperty("java.class.version"); - - /** - * The {@code java.compiler} System Property. Name of JIT compiler to use. First in JDK version 1.2. Not used in Sun - * JDKs after 1.2. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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. - */ - public static final String JAVA_COMPILER = getSystemProperty("java.compiler"); - - /** - * The {@code java.endorsed.dirs} System Property. Path of endorsed directory or directories. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_ENDORSED_DIRS = getSystemProperty("java.endorsed.dirs"); - - /** - * The {@code java.ext.dirs} System Property. Path of extension directory or directories. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_EXT_DIRS = getSystemProperty("java.ext.dirs"); - - /** - * The {@code java.home} System Property. Java installation directory. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_HOME = getSystemProperty(JAVA_HOME_KEY); - - /** - * The {@code java.io.tmpdir} System Property. Default temp file path. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_IO_TMPDIR = getSystemProperty(JAVA_IO_TMPDIR_KEY); - - /** - * The {@code java.library.path} System Property. List of paths to search when loading libraries. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_LIBRARY_PATH = getSystemProperty("java.library.path"); - - /** - * The {@code java.runtime.name} System Property. Java Runtime Environment name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.3 - */ - public static final String JAVA_RUNTIME_NAME = getSystemProperty("java.runtime.name"); - - /** - * The {@code java.runtime.version} System Property. Java Runtime Environment version. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.3 - */ - public static final String JAVA_RUNTIME_VERSION = getSystemProperty("java.runtime.version"); - - /** - * The {@code java.specification.name} System Property. Java Runtime Environment specification name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_SPECIFICATION_NAME = getSystemProperty("java.specification.name"); - - /** - * The {@code java.specification.vendor} System Property. Java Runtime Environment specification vendor. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_SPECIFICATION_VENDOR = getSystemProperty("java.specification.vendor"); - - /** - * The {@code java.specification.version} System Property. Java Runtime Environment specification version. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_SPECIFICATION_VERSION = getSystemProperty("java.specification.version"); - private static final JavaVersion JAVA_SPECIFICATION_VERSION_AS_ENUM = JavaVersion.get(JAVA_SPECIFICATION_VERSION); - - /** - * The {@code java.util.prefs.PreferencesFactory} System Property. A class name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.4 - */ - public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = - getSystemProperty("java.util.prefs.PreferencesFactory"); - - /** - * The {@code java.vendor} System Property. Java vendor-specific string. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VENDOR = getSystemProperty("java.vendor"); - - /** - * The {@code java.vendor.url} System Property. Java vendor URL. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VENDOR_URL = getSystemProperty("java.vendor.url"); - - /** - * The {@code java.version} System Property. Java version number. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VERSION = getSystemProperty("java.version"); - - /** - * The {@code java.vm.info} System Property. Java Virtual Machine implementation info. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.2 - */ - public static final String JAVA_VM_INFO = getSystemProperty("java.vm.info"); - - /** - * The {@code java.vm.name} System Property. Java Virtual Machine implementation name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_NAME = getSystemProperty("java.vm.name"); - - /** - * The {@code java.vm.specification.name} System Property. Java Virtual Machine specification name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_SPECIFICATION_NAME = getSystemProperty("java.vm.specification.name"); - - /** - * The {@code java.vm.specification.vendor} System Property. Java Virtual Machine specification vendor. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_SPECIFICATION_VENDOR = getSystemProperty("java.vm.specification.vendor"); - - /** - * The {@code java.vm.specification.version} System Property. Java Virtual Machine specification version. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_SPECIFICATION_VERSION = getSystemProperty("java.vm.specification.version"); - - /** - * The {@code java.vm.vendor} System Property. Java Virtual Machine implementation vendor. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_VENDOR = getSystemProperty("java.vm.vendor"); - - /** - * The {@code java.vm.version} System Property. Java Virtual Machine implementation version. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String JAVA_VM_VERSION = getSystemProperty("java.vm.version"); - - /** - * The {@code line.separator} System Property. Line separator ({@code "\n"} on UNIX). - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of - * sync with that System property. - *
- * - * @deprecated Use {@link System#lineSeparator()} instead, since it does not require a privilege check. - * @since Java 1.1 - */ - @Deprecated - public static final String LINE_SEPARATOR = getSystemProperty("line.separator"); - - /** - * The {@code os.arch} System Property. Operating system architecture. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String OS_ARCH = getSystemProperty("os.arch"); - - /** - * The {@code os.name} System Property. Operating system name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String OS_NAME = getSystemProperty("os.name"); - - /** - * The {@code os.version} System Property. Operating system version. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String OS_VERSION = getSystemProperty("os.version"); - - /** - * The {@code path.separator} System Property. Path separator ({@code ":"} on UNIX). - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of - * sync with that System property. - *
- * - * @deprecated Use {@link File#pathSeparator}, since it is guaranteed to be a - * string containing a single character and it does not require a privilege check. - * @since Java 1.1 - */ - @Deprecated - public static final String PATH_SEPARATOR = getSystemProperty("path.separator"); - - /** - * The {@code user.country} or {@code user.region} System Property. User's country code, such as {@code "GB"}. First - * in Java version 1.2 as {@code user.region}. Renamed to {@code user.country} in 1.4 - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.2 - */ - public static final String USER_COUNTRY = getSystemProperty("user.country") == null ? - getSystemProperty("user.region") : getSystemProperty("user.country"); - - /** - * The {@code user.dir} System Property. User's current working directory. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String USER_DIR = getSystemProperty(USER_DIR_KEY); - - /** - * The {@code user.home} System Property. User's home directory. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String USER_HOME = getSystemProperty(USER_HOME_KEY); - - /** - * The {@code user.language} System Property. User's language code, such as {@code "en"}. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - * @since Java 1.2 - */ - public static final String USER_LANGUAGE = getSystemProperty("user.language"); - - /** - * The {@code user.name} System Property. User's account name. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String USER_NAME = getSystemProperty(USER_NAME_KEY); - - /** - * The {@code user.timezone} System Property. For example: {@code "America/Los_Angeles"}. - * - *- * Defaults to {@code 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 {@link System#setProperty(String,String)} or - * {@link 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 - */ - public static final String USER_TIMEZONE = getSystemProperty("user.timezone"); - - // Java version checks - // ----------------------------------------------------------------------- - // These MUST be declared after those above as they depend on the - // values being set up - - /** - * Is {@code true} if this is Java version 1.1 (also 1.1.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1"); - - /** - * Is {@code true} if this is Java version 1.2 (also 1.2.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2"); - - /** - * Is {@code true} if this is Java version 1.3 (also 1.3.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3"); - - /** - * Is {@code true} if this is Java version 1.4 (also 1.4.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4"); - - /** - * Is {@code true} if this is Java version 1.5 (also 1.5.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5"); - - /** - * Is {@code true} if this is Java version 1.6 (also 1.6.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- */ - public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6"); - - /** - * Is {@code true} if this is Java version 1.7 (also 1.7.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.0 - */ - public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7"); - - /** - * Is {@code true} if this is Java version 1.8 (also 1.8.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.3.2 - */ - public static final boolean IS_JAVA_1_8 = getJavaVersionMatches("1.8"); - - /** - * Is {@code true} if this is Java version 1.9 (also 1.9.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.4 - * - * @deprecated As of release 3.5, replaced by {@link #IS_JAVA_9} - */ - @Deprecated - public static final boolean IS_JAVA_1_9 = getJavaVersionMatches("9"); - - /** - * Is {@code true} if this is Java version 9 (also 9.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.5 - */ - public static final boolean IS_JAVA_9 = getJavaVersionMatches("9"); - - /** - * Is {@code true} if this is Java version 10 (also 10.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.7 - */ - public static final boolean IS_JAVA_10 = getJavaVersionMatches("10"); - - /** - * Is {@code true} if this is Java version 11 (also 11.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.8 - */ - public static final boolean IS_JAVA_11 = getJavaVersionMatches("11"); - - /** - * Is {@code true} if this is Java version 12 (also 12.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.9 - */ - public static final boolean IS_JAVA_12 = getJavaVersionMatches("12"); - - /** - * Is {@code true} if this is Java version 13 (also 13.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.9 - */ - public static final boolean IS_JAVA_13 = getJavaVersionMatches("13"); - - /** - * Is {@code true} if this is Java version 14 (also 14.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.10 - */ - public static final boolean IS_JAVA_14 = getJavaVersionMatches("14"); - - /** - * Is {@code true} if this is Java version 15 (also 15.x versions). - * - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.10 - */ - public static final boolean IS_JAVA_15 = getJavaVersionMatches("15"); - - /** - * Is {@code true} if this is Java version 16 (also 16.x versions). - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.13.0 - */ - public static final boolean IS_JAVA_16 = getJavaVersionMatches("16"); - - /** - * Is {@code true} if this is Java version 17 (also 17.x versions). - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.13.0 - */ - public static final boolean IS_JAVA_17 = getJavaVersionMatches("17"); - - /** - * Is {@code true} if this is Java version 18 (also 18.x versions). - *- * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. - *
- * - * @since 3.13.0 - */ - public static final boolean IS_JAVA_18 = getJavaVersionMatches("18"); - - // Operating system checks - // ----------------------------------------------------------------------- - // These MUST be declared after those above as they depend on the - // values being set up - // Please advise dev@commons.apache.org if you want another added - // or a mistake corrected - - /** - * Is {@code true} if this is AIX. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_AIX = getOsMatchesName("AIX"); - - /** - * Is {@code true} if this is HP-UX. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_HP_UX = getOsMatchesName("HP-UX"); - - /** - * Is {@code true} if this is IBM OS/400. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.3 - */ - public static final boolean IS_OS_400 = getOsMatchesName("OS/400"); - - /** - * Is {@code true} if this is Irix. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_IRIX = getOsMatchesName("Irix"); - - /** - * Is {@code true} if this is Linux. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_LINUX = getOsMatchesName("Linux") || getOsMatchesName("LINUX"); - - /** - * Is {@code true} if this is Mac. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_MAC = getOsMatchesName("Mac"); - - /** - * Is {@code true} if this is Mac. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_MAC_OSX = getOsMatchesName("Mac OS X"); - - /** - * Is {@code true} if this is Mac OS X Cheetah. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_CHEETAH = getOsMatches("Mac OS X", "10.0"); - - /** - * Is {@code true} if this is Mac OS X Puma. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_PUMA = getOsMatches("Mac OS X", "10.1"); - - /** - * Is {@code true} if this is Mac OS X Jaguar. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_JAGUAR = getOsMatches("Mac OS X", "10.2"); - - /** - * Is {@code true} if this is Mac OS X Panther. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_PANTHER = getOsMatches("Mac OS X", "10.3"); - - /** - * Is {@code true} if this is Mac OS X Tiger. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_TIGER = getOsMatches("Mac OS X", "10.4"); - - /** - * Is {@code true} if this is Mac OS X Leopard. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_LEOPARD = getOsMatches("Mac OS X", "10.5"); - - /** - * Is {@code true} if this is Mac OS X Snow Leopard. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_SNOW_LEOPARD = getOsMatches("Mac OS X", "10.6"); - - /** - * Is {@code true} if this is Mac OS X Lion. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_LION = getOsMatches("Mac OS X", "10.7"); - - /** - * Is {@code true} if this is Mac OS X Mountain Lion. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_MOUNTAIN_LION = getOsMatches("Mac OS X", "10.8"); - - /** - * Is {@code true} if this is Mac OS X Mavericks. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_MAVERICKS = getOsMatches("Mac OS X", "10.9"); - - /** - * Is {@code true} if this is Mac OS X Yosemite. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_MAC_OSX_YOSEMITE = getOsMatches("Mac OS X", "10.10"); - - /** - * Is {@code true} if this is Mac OS X El Capitan. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.5 - */ - public static final boolean IS_OS_MAC_OSX_EL_CAPITAN = getOsMatches("Mac OS X", "10.11"); - - /** - * Is {@code true} if this is Mac OS X Sierra. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.12.0 - */ - public static final boolean IS_OS_MAC_OSX_SIERRA = getOsMatches("Mac OS X", "10.12"); - - /** - * Is {@code true} if this is Mac OS X High Sierra. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.12.0 - */ - public static final boolean IS_OS_MAC_OSX_HIGH_SIERRA = getOsMatches("Mac OS X", "10.13"); - - /** - * Is {@code true} if this is Mac OS X Mojave. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.12.0 - */ - public static final boolean IS_OS_MAC_OSX_MOJAVE = getOsMatches("Mac OS X", "10.14"); - - /** - * Is {@code true} if this is Mac OS X Catalina. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.12.0 - */ - public static final boolean IS_OS_MAC_OSX_CATALINA = getOsMatches("Mac OS X", "10.15"); - - /** - * Is {@code true} if this is Mac OS X Big Sur. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.12.0 - */ - public static final boolean IS_OS_MAC_OSX_BIG_SUR = getOsMatches("Mac OS X", "10.16"); - - /** - * Is {@code true} if this is FreeBSD. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.1 - */ - public static final boolean IS_OS_FREE_BSD = getOsMatchesName("FreeBSD"); - - /** - * Is {@code true} if this is OpenBSD. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.1 - */ - public static final boolean IS_OS_OPEN_BSD = getOsMatchesName("OpenBSD"); - - /** - * Is {@code true} if this is NetBSD. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.1 - */ - public static final boolean IS_OS_NET_BSD = getOsMatchesName("NetBSD"); - - /** - * Is {@code true} if this is OS/2. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_OS2 = getOsMatchesName("OS/2"); - - /** - * Is {@code true} if this is Solaris. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_SOLARIS = getOsMatchesName("Solaris"); - - /** - * Is {@code true} if this is SunOS. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_SUN_OS = getOsMatchesName("SunOS"); - - /** - * Is {@code 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 {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.1 - */ - public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX - || IS_OS_SOLARIS || IS_OS_SUN_OS || IS_OS_FREE_BSD || IS_OS_OPEN_BSD || IS_OS_NET_BSD; - - /** - * Is {@code true} if this is Windows. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS = getOsMatchesName(OS_NAME_WINDOWS_PREFIX); - - /** - * Is {@code true} if this is Windows 2000. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_2000 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2000"); - - /** - * Is {@code true} if this is Windows 2003. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.1 - */ - public static final boolean IS_OS_WINDOWS_2003 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2003"); - - /** - * Is {@code true} if this is Windows Server 2008. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.1 - */ - public static final boolean IS_OS_WINDOWS_2008 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2008"); - - /** - * Is {@code true} if this is Windows Server 2012. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.4 - */ - public static final boolean IS_OS_WINDOWS_2012 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2012"); - - /** - * Is {@code true} if this is Windows 95. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_95 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 95"); - - /** - * Is {@code true} if this is Windows 98. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_98 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 98"); - - /** - * Is {@code true} if this is Windows ME. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_ME = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Me"); - - /** - * Is {@code true} if this is Windows NT. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_NT = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " NT"); - - /** - * Is {@code true} if this is Windows XP. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.0 - */ - public static final boolean IS_OS_WINDOWS_XP = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " XP"); - - /** - * Is {@code true} if this is Windows Vista. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 2.4 - */ - public static final boolean IS_OS_WINDOWS_VISTA = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Vista"); - - /** - * Is {@code true} if this is Windows 7. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.0 - */ - public static final boolean IS_OS_WINDOWS_7 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 7"); - - /** - * Is {@code true} if this is Windows 8. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.2 - */ - public static final boolean IS_OS_WINDOWS_8 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 8"); - - /** - * Is {@code true} if this is Windows 10. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.5 - */ - public static final boolean IS_OS_WINDOWS_10 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 10"); - - /** - * Is {@code true} if this is Windows 11. - * - *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- *- * OpenJDK fixed the return value for {@code os.name} on Windows 11 to versions 8, 11, and 17: - *
- *- * The field will return {@code false} if {@code OS_NAME} is {@code null}. - *
- * - * @since 3.5 - */ - // Values on a z/OS system I tested (Gary Gregory - 2016-03-12) - // os.arch = s390x - // os.encoding = ISO8859_1 - // os.name = z/OS - // os.version = 02.02.00 - public static final boolean IS_OS_ZOS = getOsMatchesName("z/OS"); + public static final String AWT_TOOLKIT = SystemProperties.getAwtToolkit(); /** * Gets an environment variable, defaulting to {@code defaultValue} if the variable cannot be read. @@ -1600,29 +1852,29 @@ public class SystemUtils { } /** - * Gets the Java home directory as a {@link File}. + * Gets the current Java home directory as a {@link File}. * * @return a directory * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getJavaHome() * @since 2.1 */ public static File getJavaHome() { - return new File(System.getProperty(JAVA_HOME_KEY)); + return new File(SystemProperties.getJavaHome()); } /** - * Gets the Java IO temporary directory as a {@link File}. + * Gets the current Java IO temporary directory as a {@link File}. * * @return a directory * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getJavaIoTmpdir() * @since 2.1 */ public static File getJavaIoTmpDir() { - return new File(System.getProperty(JAVA_IO_TMPDIR_KEY)); + return new File(SystemProperties.getJavaIoTmpdir()); } /** @@ -1657,64 +1909,44 @@ public class SystemUtils { } /** - * Gets a System property, defaulting to {@code null} if the property cannot be read. - * - *- * If a {@link SecurityException} is caught, the return value is {@code null} and a message is written to - * {@code System.err}. - *
- * - * @param property the system property name - * @return the system property value or {@code null} if a security problem occurs - */ - private static String getSystemProperty(final String property) { - try { - return System.getProperty(property); - } catch (final SecurityException ex) { - // we are not allowed to look at this property - // System.err.println("Caught a SecurityException reading the system property '" + property - // + "'; the SystemUtils property value will default to null."); - return null; - } - } - - /** - * Gets the user directory as a {@link File}. + * Gets the current user directory as a {@link File}. * * @return a directory * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getUserDir() * @since 2.1 */ public static File getUserDir() { - return new File(System.getProperty(USER_DIR_KEY)); + return new File(SystemProperties.getUserDir()); } /** - * Gets the user home directory as a {@link File}. + * Gets the current user home directory as a {@link File}. * * @return a directory * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getUserHome() * @since 2.1 */ public static File getUserHome() { - return new File(System.getProperty(USER_HOME_KEY)); + return new File(SystemProperties.getUserHome()); } /** - * Gets the user name. + * Gets the current user name. * * @return a name * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getUserName() * @since 3.10 + * @deprecated Use {@link SystemProperties#getUserName()}. */ + @Deprecated public static String getUserName() { - return System.getProperty(USER_NAME_KEY); + return SystemProperties.getUserName(); } /** @@ -1724,11 +1956,11 @@ public class SystemUtils { * @return a name * @throws SecurityException if a security manager exists and its {@code checkPropertyAccess} method doesn't allow * access to the specified system property. - * @see System#getProperty(String) + * @see SystemProperties#getUserName() * @since 3.10 */ public static String getUserName(final String defaultValue) { - return System.getProperty(USER_NAME_KEY, defaultValue); + return System.getProperty(SystemProperties.USER_NAME, defaultValue); } /** diff --git a/src/main/java/org/apache/commons/lang3/text/StrLookup.java b/src/main/java/org/apache/commons/lang3/text/StrLookup.java index 11410a715..52ef035e1 100644 --- a/src/main/java/org/apache/commons/lang3/text/StrLookup.java +++ b/src/main/java/org/apache/commons/lang3/text/StrLookup.java @@ -18,6 +18,8 @@ package org.apache.commons.lang3.text; import java.util.Map; +import org.apache.commons.lang3.SystemProperties; + /** * Lookup a String key to a String value. *
@@ -179,14 +181,7 @@ public abstract class StrLookup