/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.lang3;

import java.io.File;

Helpers for java.lang.System.

If a system property cannot be read due to security restrictions, the corresponding field in this class will be set to null and a message will be written to System.err.

#ThreadSafe#

Since:1.0
/** * <p> * Helpers for {@code java.lang.System}. * </p> * <p> * If a system property cannot be read due to security restrictions, the corresponding field in this class will be set * to {@code null} and a message will be written to {@code System.err}. * </p> * <p> * #ThreadSafe# * </p> * * @since 1.0 */
public class SystemUtils {
The prefix String for all Windows OS.
/** * The prefix String for all Windows OS. */
private static final String OS_NAME_WINDOWS_PREFIX = "Windows"; // System property constants // ----------------------------------------------------------------------- // These MUST be declared first. Other constants depend on this.
The System property key for the user home directory.
/** * The System property key for the user home directory. */
private static final String USER_HOME_KEY = "user.home";
The System property key for the user name.
/** * The System property key for the user name. */
private static final String USER_NAME_KEY = "user.name";
The System property key for the user directory.
/** * The System property key for the user directory. */
private static final String USER_DIR_KEY = "user.dir";
The System property key for the Java IO temporary directory.
/** * The System property key for the Java IO temporary directory. */
private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
The System property key for the Java home directory.
/** * The System property key for the Java home directory. */
private static final String JAVA_HOME_KEY = "java.home";

The awt.toolkit System Property.

Holds a class name, on Windows XP this is sun.awt.windows.WToolkit.

On platforms without a GUI, this value is null.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:2.1
/** * <p> * The {@code awt.toolkit} System Property. * </p> * <p> * Holds a class name, on Windows XP this is {@code sun.awt.windows.WToolkit}. * </p> * <p> * <b>On platforms without a GUI, this value is {@code null}.</b> * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.1 */
public static final String AWT_TOOLKIT = getSystemProperty("awt.toolkit");

The file.encoding System Property.

File encoding, such as Cp1252.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code file.encoding} System Property. * </p> * <p> * File encoding, such as {@code Cp1252}. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.2 */
public static final String FILE_ENCODING = getSystemProperty("file.encoding");

The file.separator System Property. The file separator is:

  • "/" on UNIX
  • "\" on Windows.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Deprecated:Use 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
/** * <p> * The {@code file.separator} System Property. * The file separator is: * </p> * <ul> * <li>{@code "/"} on UNIX</li> * <li>{@code "\"} on Windows.</li> * </ul> * * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @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 java.awt.fonts System Property.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:2.1
/** * <p> * The {@code java.awt.fonts} System Property. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.1 */
public static final String JAVA_AWT_FONTS = getSystemProperty("java.awt.fonts");

The java.awt.graphicsenv System Property.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:2.1
/** * <p> * The {@code java.awt.graphicsenv} System Property. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.1 */
public static final String JAVA_AWT_GRAPHICSENV = getSystemProperty("java.awt.graphicsenv");

The java.awt.headless System Property. The value of this property is the String "true" or "false".

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

See Also:
Since:2.1
Since:Java 1.4
/** * <p> * The {@code java.awt.headless} System Property. The value of this property is the String {@code "true"} or * {@code "false"}. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @see #isJavaAwtHeadless() * @since 2.1 * @since Java 1.4 */
public static final String JAVA_AWT_HEADLESS = getSystemProperty("java.awt.headless");

The java.awt.printerjob System Property.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:2.1
/** * <p> * The {@code java.awt.printerjob} System Property. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.1 */
public static final String JAVA_AWT_PRINTERJOB = getSystemProperty("java.awt.printerjob");

The java.class.path System Property. Java class path.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.class.path} System Property. Java class path. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_CLASS_PATH = getSystemProperty("java.class.path");

The java.class.version System Property. Java class format version number.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.class.version} System Property. Java class format version number. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_CLASS_VERSION = getSystemProperty("java.class.version");

The java.compiler System Property. Name of JIT compiler to use. First in JDK version 1.2. Not used in Sun JDKs after 1.2.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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.
/** * <p> * 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. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2. Not used in Sun versions after 1.2. */
public static final String JAVA_COMPILER = getSystemProperty("java.compiler");

The java.endorsed.dirs System Property. Path of endorsed directory or directories.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.4
/** * <p> * The {@code java.endorsed.dirs} System Property. Path of endorsed directory or directories. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.4 */
public static final String JAVA_ENDORSED_DIRS = getSystemProperty("java.endorsed.dirs");

The java.ext.dirs System Property. Path of extension directory or directories.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.3
/** * <p> * The {@code java.ext.dirs} System Property. Path of extension directory or directories. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.3 */
public static final String JAVA_EXT_DIRS = getSystemProperty("java.ext.dirs");

The java.home System Property. Java installation directory.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.home} System Property. Java installation directory. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_HOME = getSystemProperty(JAVA_HOME_KEY);

The java.io.tmpdir System Property. Default temp file path.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.io.tmpdir} System Property. Default temp file path. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_IO_TMPDIR = getSystemProperty(JAVA_IO_TMPDIR_KEY);

The java.library.path System Property. List of paths to search when loading libraries.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.library.path} System Property. List of paths to search when loading libraries. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_LIBRARY_PATH = getSystemProperty("java.library.path");

The java.runtime.name System Property. Java Runtime Environment name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code java.runtime.name} System Property. Java Runtime Environment name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.3 */
public static final String JAVA_RUNTIME_NAME = getSystemProperty("java.runtime.name");

The java.runtime.version System Property. Java Runtime Environment version.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code java.runtime.version} System Property. Java Runtime Environment version. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.3 */
public static final String JAVA_RUNTIME_VERSION = getSystemProperty("java.runtime.version");

The java.specification.name System Property. Java Runtime Environment specification name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.specification.name} System Property. Java Runtime Environment specification name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_SPECIFICATION_NAME = getSystemProperty("java.specification.name");

The java.specification.vendor System Property. Java Runtime Environment specification vendor.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.specification.vendor} System Property. Java Runtime Environment specification vendor. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_SPECIFICATION_VENDOR = getSystemProperty("java.specification.vendor");

The java.specification.version System Property. Java Runtime Environment specification version.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.3
/** * <p> * The {@code java.specification.version} System Property. Java Runtime Environment specification version. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @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 java.util.prefs.PreferencesFactory System Property. A class name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code java.util.prefs.PreferencesFactory} System Property. A class name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.1 * @since Java 1.4 */
public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = getSystemProperty("java.util.prefs.PreferencesFactory");

The java.vendor System Property. Java vendor-specific string.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.vendor} System Property. Java vendor-specific string. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_VENDOR = getSystemProperty("java.vendor");

The java.vendor.url System Property. Java vendor URL.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.vendor.url} System Property. Java vendor URL. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_VENDOR_URL = getSystemProperty("java.vendor.url");

The java.version System Property. Java version number.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code java.version} System Property. Java version number. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String JAVA_VERSION = getSystemProperty("java.version");

The java.vm.info System Property. Java Virtual Machine implementation info.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code java.vm.info} System Property. Java Virtual Machine implementation info. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.2 */
public static final String JAVA_VM_INFO = getSystemProperty("java.vm.info");

The java.vm.name System Property. Java Virtual Machine implementation name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.name} System Property. Java Virtual Machine implementation name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_NAME = getSystemProperty("java.vm.name");

The java.vm.specification.name System Property. Java Virtual Machine specification name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.specification.name} System Property. Java Virtual Machine specification name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_SPECIFICATION_NAME = getSystemProperty("java.vm.specification.name");

The java.vm.specification.vendor System Property. Java Virtual Machine specification vendor.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.specification.vendor} System Property. Java Virtual Machine specification vendor. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_SPECIFICATION_VENDOR = getSystemProperty("java.vm.specification.vendor");

The java.vm.specification.version System Property. Java Virtual Machine specification version.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.specification.version} System Property. Java Virtual Machine specification version. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_SPECIFICATION_VERSION = getSystemProperty("java.vm.specification.version");

The java.vm.vendor System Property. Java Virtual Machine implementation vendor.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.vendor} System Property. Java Virtual Machine implementation vendor. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_VENDOR = getSystemProperty("java.vm.vendor");

The java.vm.version System Property. Java Virtual Machine implementation version.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.2
/** * <p> * The {@code java.vm.version} System Property. Java Virtual Machine implementation version. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.2 */
public static final String JAVA_VM_VERSION = getSystemProperty("java.vm.version");

The line.separator System Property. Line separator (&quot;\n&quot; on UNIX).

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Deprecated:Use System.lineSeparator() instead, since it does not require a privilege check.
Since:Java 1.1
/** * <p> * The {@code line.separator} System Property. Line separator ({@code &quot;\n&quot;} on UNIX). * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @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 os.arch System Property. Operating system architecture.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code os.arch} System Property. Operating system architecture. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String OS_ARCH = getSystemProperty("os.arch");

The os.name System Property. Operating system name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code os.name} System Property. Operating system name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String OS_NAME = getSystemProperty("os.name");

The os.version System Property. Operating system version.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code os.version} System Property. Operating system version. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String OS_VERSION = getSystemProperty("os.version");

The path.separator System Property. Path separator (&quot;:&quot; on UNIX).

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Deprecated:Use 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
/** * <p> * The {@code path.separator} System Property. Path separator ({@code &quot;:&quot;} on UNIX). * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @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 user.country or user.region System Property. User's country code, such as GB. First in Java version 1.2 as user.region. Renamed to user.country in 1.4

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * 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 * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.2 */
public static final String USER_COUNTRY = getSystemProperty("user.country") == null ? getSystemProperty("user.region") : getSystemProperty("user.country");

The user.dir System Property. User's current working directory.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code user.dir} System Property. User's current working directory. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);

The user.home System Property. User's home directory.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code user.home} System Property. User's home directory. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String USER_HOME = getSystemProperty(USER_HOME_KEY);

The user.language System Property. User's language code, such as "en".

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(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
/** * <p> * The {@code user.language} System Property. User's language code, such as {@code "en"}. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since 2.0 * @since Java 1.2 */
public static final String USER_LANGUAGE = getSystemProperty("user.language");

The user.name System Property. User's account name.

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:Java 1.1
/** * <p> * The {@code user.name} System Property. User's account name. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @since Java 1.1 */
public static final String USER_NAME = getSystemProperty(USER_NAME_KEY);

The user.timezone System Property. For example: "America/Los_Angeles".

Defaults to null if the runtime does not have security access to read this property or the property does not exist.

This value is initialized when the class is loaded. If System.setProperty(String, String) or System.setProperties(Properties) is called after this class is loaded, the value will be out of sync with that System property.

Since:2.1
/** * <p> * The {@code user.timezone} System Property. For example: {@code "America/Los_Angeles"}. * </p> * <p> * Defaults to {@code null} if the runtime does not have security access to read this property or the property does * not exist. * </p> * <p> * 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. * </p> * * @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 true if this is Java version 1.1 (also 1.1.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.1 (also 1.1.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");

Is true if this is Java version 1.2 (also 1.2.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.2 (also 1.2.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");

Is true if this is Java version 1.3 (also 1.3.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.3 (also 1.3.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");

Is true if this is Java version 1.4 (also 1.4.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.4 (also 1.4.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");

Is true if this is Java version 1.5 (also 1.5.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.5 (also 1.5.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");

Is true if this is Java version 1.6 (also 1.6.x versions).

The field will return false if JAVA_VERSION is null.

/** * <p> * Is {@code true} if this is Java version 1.6 (also 1.6.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> */
public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");

Is true if this is Java version 1.7 (also 1.7.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.0
/** * <p> * Is {@code true} if this is Java version 1.7 (also 1.7.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.0 */
public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");

Is true if this is Java version 1.8 (also 1.8.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.3.2
/** * <p> * Is {@code true} if this is Java version 1.8 (also 1.8.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.3.2 */
public static final boolean IS_JAVA_1_8 = getJavaVersionMatches("1.8");

Is true if this is Java version 1.9 (also 1.9.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.4
Deprecated:As of release 3.5, replaced by IS_JAVA_9
/** * <p> * Is {@code true} if this is Java version 1.9 (also 1.9.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @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 true if this is Java version 9 (also 9.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.5
/** * <p> * Is {@code true} if this is Java version 9 (also 9.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.5 */
public static final boolean IS_JAVA_9 = getJavaVersionMatches("9");

Is true if this is Java version 10 (also 10.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.7
/** * <p> * Is {@code true} if this is Java version 10 (also 10.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.7 */
public static final boolean IS_JAVA_10 = getJavaVersionMatches("10");

Is true if this is Java version 11 (also 11.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.8
/** * <p> * Is {@code true} if this is Java version 11 (also 11.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.8 */
public static final boolean IS_JAVA_11 = getJavaVersionMatches("11");

Is true if this is Java version 12 (also 12.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.9
/** * <p> * Is {@code true} if this is Java version 12 (also 12.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.9 */
public static final boolean IS_JAVA_12 = getJavaVersionMatches("12");

Is true if this is Java version 13 (also 13.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.9
/** * <p> * Is {@code true} if this is Java version 13 (also 13.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.9 */
public static final boolean IS_JAVA_13 = getJavaVersionMatches("13");

Is true if this is Java version 14 (also 14.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.10
/** * <p> * Is {@code true} if this is Java version 14 (also 14.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.10 */
public static final boolean IS_JAVA_14 = getJavaVersionMatches("14");

Is true if this is Java version 15 (also 15.x versions).

The field will return false if JAVA_VERSION is null.

Since:3.10
/** * <p> * Is {@code true} if this is Java version 15 (also 15.x versions). * </p> * <p> * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}. * </p> * * @since 3.10 */
public static final boolean IS_JAVA_15 = getJavaVersionMatches("15"); // Operating system checks // ----------------------------------------------------------------------- // These MUST be declared after those above as they depend on the // values being set up // OS names from http://www.vamphq.com/os.html // Selected ones included - please advise dev@commons.apache.org // if you want another added or a mistake corrected

Is true if this is AIX.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is AIX. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_AIX = getOsMatchesName("AIX");

Is true if this is HP-UX.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is HP-UX. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_HP_UX = getOsMatchesName("HP-UX");

Is true if this is IBM OS/400.

The field will return false if OS_NAME is null.

Since:3.3
/** * <p> * Is {@code true} if this is IBM OS/400. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.3 */
public static final boolean IS_OS_400 = getOsMatchesName("OS/400");

Is true if this is Irix.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Irix. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_IRIX = getOsMatchesName("Irix");

Is true if this is Linux.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Linux. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_LINUX = getOsMatchesName("Linux") || getOsMatchesName("LINUX");

Is true if this is Mac.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Mac. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_MAC = getOsMatchesName("Mac");

Is true if this is Mac.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Mac. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_MAC_OSX = getOsMatchesName("Mac OS X");

Is true if this is Mac OS X Cheetah.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Cheetah. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_CHEETAH = getOsMatches("Mac OS X", "10.0");

Is true if this is Mac OS X Puma.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Puma. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_PUMA = getOsMatches("Mac OS X", "10.1");

Is true if this is Mac OS X Jaguar.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Jaguar. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_JAGUAR = getOsMatches("Mac OS X", "10.2");

Is true if this is Mac OS X Panther.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Panther. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_PANTHER = getOsMatches("Mac OS X", "10.3");

Is true if this is Mac OS X Tiger.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Tiger. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_TIGER = getOsMatches("Mac OS X", "10.4");

Is true if this is Mac OS X Leopard.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Leopard. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_LEOPARD = getOsMatches("Mac OS X", "10.5");

Is true if this is Mac OS X Snow Leopard.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Snow Leopard. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_SNOW_LEOPARD = getOsMatches("Mac OS X", "10.6");

Is true if this is Mac OS X Lion.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Lion. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_LION = getOsMatches("Mac OS X", "10.7");

Is true if this is Mac OS X Mountain Lion.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Mountain Lion. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_MOUNTAIN_LION = getOsMatches("Mac OS X", "10.8");

Is true if this is Mac OS X Mavericks.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Mavericks. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_MAVERICKS = getOsMatches("Mac OS X", "10.9");

Is true if this is Mac OS X Yosemite.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Mac OS X Yosemite. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_MAC_OSX_YOSEMITE = getOsMatches("Mac OS X", "10.10");

Is true if this is Mac OS X El Capitan.

The field will return false if OS_NAME is null.

Since:3.5
/** * <p> * Is {@code true} if this is Mac OS X El Capitan. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.5 */
public static final boolean IS_OS_MAC_OSX_EL_CAPITAN = getOsMatches("Mac OS X", "10.11");

Is true if this is FreeBSD.

The field will return false if OS_NAME is null.

Since:3.1
/** * <p> * Is {@code true} if this is FreeBSD. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.1 */
public static final boolean IS_OS_FREE_BSD = getOsMatchesName("FreeBSD");

Is true if this is OpenBSD.

The field will return false if OS_NAME is null.

Since:3.1
/** * <p> * Is {@code true} if this is OpenBSD. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.1 */
public static final boolean IS_OS_OPEN_BSD = getOsMatchesName("OpenBSD");

Is true if this is NetBSD.

The field will return false if OS_NAME is null.

Since:3.1
/** * <p> * Is {@code true} if this is NetBSD. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.1 */
public static final boolean IS_OS_NET_BSD = getOsMatchesName("NetBSD");

Is true if this is OS/2.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is OS/2. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_OS2 = getOsMatchesName("OS/2");

Is true if this is Solaris.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Solaris. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_SOLARIS = getOsMatchesName("Solaris");

Is true if this is SunOS.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is SunOS. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_SUN_OS = getOsMatchesName("SunOS");

Is true if this is a UNIX like system, as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.

The field will return false if OS_NAME is null.

Since:2.1
/** * <p> * Is {@code true} if this is a UNIX like system, as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @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 true if this is Windows.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS = getOsMatchesName(OS_NAME_WINDOWS_PREFIX);

Is true if this is Windows 2000.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows 2000. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_2000 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2000");

Is true if this is Windows 2003.

The field will return false if OS_NAME is null.

Since:3.1
/** * <p> * Is {@code true} if this is Windows 2003. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.1 */
public static final boolean IS_OS_WINDOWS_2003 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 2003");

Is true if this is Windows Server 2008.

The field will return false if OS_NAME is null.

Since:3.1
/** * <p> * Is {@code true} if this is Windows Server 2008. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.1 */
public static final boolean IS_OS_WINDOWS_2008 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2008");

Is true if this is Windows Server 2012.

The field will return false if OS_NAME is null.

Since:3.4
/** * <p> * Is {@code true} if this is Windows Server 2012. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.4 */
public static final boolean IS_OS_WINDOWS_2012 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Server 2012");

Is true if this is Windows 95.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows 95. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_95 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 95");

Is true if this is Windows 98.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows 98. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_98 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 98");

Is true if this is Windows ME.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows ME. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_ME = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Me");

Is true if this is Windows NT.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows NT. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_NT = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " NT");

Is true if this is Windows XP.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is {@code true} if this is Windows XP. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_XP = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " XP"); // -----------------------------------------------------------------------

Is true if this is Windows Vista.

The field will return false if OS_NAME is null.

Since:2.4
/** * <p> * Is {@code true} if this is Windows Vista. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 2.4 */
public static final boolean IS_OS_WINDOWS_VISTA = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " Vista");

Is true if this is Windows 7.

The field will return false if OS_NAME is null.

Since:3.0
/** * <p> * Is {@code true} if this is Windows 7. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.0 */
public static final boolean IS_OS_WINDOWS_7 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 7");

Is true if this is Windows 8.

The field will return false if OS_NAME is null.

Since:3.2
/** * <p> * Is {@code true} if this is Windows 8. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.2 */
public static final boolean IS_OS_WINDOWS_8 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 8");

Is true if this is Windows 10.

The field will return false if OS_NAME is null.

Since:3.5
/** * <p> * Is {@code true} if this is Windows 10. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @since 3.5 */
public static final boolean IS_OS_WINDOWS_10 = getOsMatchesName(OS_NAME_WINDOWS_PREFIX + " 10");

Is true if this is z/OS.

The field will return false if OS_NAME is null.

Since:3.5
/** * <p> * Is {@code true} if this is z/OS. * </p> * <p> * The field will return {@code false} if {@code OS_NAME} is {@code null}. * </p> * * @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");

Gets the Java home directory as a File.

Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a directory
Since:2.1
/** * <p> * Gets the Java home directory as a {@code File}. * </p> * * @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) * @since 2.1 */
public static File getJavaHome() { return new File(System.getProperty(JAVA_HOME_KEY)); }
Gets the host name from an environment variable (COMPUTERNAME on Windows, HOSTNAME elsewhere).

If you want to know what the network stack says is the host name, you should use InetAddress.getLocalHost().getHostName().

Returns:the host name. Will be null if the environment variable is not defined.
Since:3.6
/** * Gets the host name from an environment variable * (COMPUTERNAME on Windows, HOSTNAME elsewhere). * * <p> * If you want to know what the network stack says is the host name, you should use {@code InetAddress.getLocalHost().getHostName()}. * </p> * * @return the host name. Will be {@code null} if the environment variable is not defined. * @since 3.6 */
public static String getHostName() { return IS_OS_WINDOWS ? System.getenv("COMPUTERNAME") : System.getenv("HOSTNAME"); }

Gets the Java IO temporary directory as a File.

Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a directory
Since:2.1
/** * <p> * Gets the Java IO temporary directory as a {@code File}. * </p> * * @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) * @since 2.1 */
public static File getJavaIoTmpDir() { return new File(System.getProperty(JAVA_IO_TMPDIR_KEY)); }

Decides if the Java version matches.

Params:
  • versionPrefix – the prefix for the java version
Returns:true if matches, or false if not or can't determine
/** * <p> * Decides if the Java version matches. * </p> * * @param versionPrefix the prefix for the java version * @return true if matches, or false if not or can't determine */
private static boolean getJavaVersionMatches(final String versionPrefix) { return isJavaVersionMatch(JAVA_SPECIFICATION_VERSION, versionPrefix); }
Decides if the operating system matches.
Params:
  • osNamePrefix – the prefix for the OS name
  • osVersionPrefix – the prefix for the version
Returns:true if matches, or false if not or can't determine
/** * Decides if the operating system matches. * * @param osNamePrefix the prefix for the OS name * @param osVersionPrefix the prefix for the version * @return true if matches, or false if not or can't determine */
private static boolean getOsMatches(final String osNamePrefix, final String osVersionPrefix) { return isOSMatch(OS_NAME, OS_VERSION, osNamePrefix, osVersionPrefix); }
Decides if the operating system matches.
Params:
  • osNamePrefix – the prefix for the OS name
Returns:true if matches, or false if not or can't determine
/** * Decides if the operating system matches. * * @param osNamePrefix the prefix for the OS name * @return true if matches, or false if not or can't determine */
private static boolean getOsMatchesName(final String osNamePrefix) { return isOSNameMatch(OS_NAME, osNamePrefix); } // -----------------------------------------------------------------------

Gets a System property, defaulting to null if the property cannot be read.

If a SecurityException is caught, the return value is null and a message is written to System.err.

Params:
  • property – the system property name
Returns:the system property value or null if a security problem occurs
/** * <p> * Gets a System property, defaulting to {@code null} if the property cannot be read. * </p> * <p> * If a {@code SecurityException} is caught, the return value is {@code null} and a message is written to * {@code System.err}. * </p> * * @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 an environment variable, defaulting to defaultValue if the variable cannot be read.

If a SecurityException is caught, the return value is defaultValue and a message is written to System.err.

Params:
  • name – the environment variable name
  • defaultValue – the default value
Returns:the environment variable value or defaultValue if a security problem occurs
Since:3.8
/** * <p> * Gets an environment variable, defaulting to {@code defaultValue} if the variable cannot be read. * </p> * <p> * If a {@code SecurityException} is caught, the return value is {@code defaultValue} and a message is written to * {@code System.err}. * </p> * * @param name * the environment variable name * @param defaultValue * the default value * @return the environment variable value or {@code defaultValue} if a security problem occurs * @since 3.8 */
public static String getEnvironmentVariable(final String name, final String defaultValue) { try { final String value = System.getenv(name); return value == null ? defaultValue : value; } catch (final SecurityException ex) { // we are not allowed to look at this property // System.err.println("Caught a SecurityException reading the environment variable '" + name + "'."); return defaultValue; } }

Gets the user directory as a File.

Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a directory
Since:2.1
/** * <p> * Gets the user directory as a {@code File}. * </p> * * @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) * @since 2.1 */
public static File getUserDir() { return new File(System.getProperty(USER_DIR_KEY)); }

Gets the user home directory as a File.

Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a directory
Since:2.1
/** * <p> * Gets the user home directory as a {@code File}. * </p> * * @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) * @since 2.1 */
public static File getUserHome() { return new File(System.getProperty(USER_HOME_KEY)); }

Gets the user name.

Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a name
Since:3.10
/** * <p> * Gets the user name. * </p> * * @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) * @since 3.10 */
public static String getUserName() { return System.getProperty(USER_NAME_KEY); }

Gets the user name.

Params:
  • defaultValue – A default value.
Throws:
  • SecurityException – if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
See Also:
Returns:a name
Since:3.10
/** * <p> * Gets the user name. * </p> * * @param defaultValue A default value. * @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) * @since 3.10 */
public static String getUserName(final String defaultValue) { return System.getProperty(USER_NAME_KEY, defaultValue); }
Returns whether the JAVA_AWT_HEADLESS value is true.
See Also:
Returns:true if JAVA_AWT_HEADLESS is "true", false otherwise.
Since:2.1
Since:Java 1.4
/** * Returns whether the {@link #JAVA_AWT_HEADLESS} value is {@code true}. * * @return {@code true} if {@code JAVA_AWT_HEADLESS} is {@code "true"}, {@code false} otherwise. * @see #JAVA_AWT_HEADLESS * @since 2.1 * @since Java 1.4 */
public static boolean isJavaAwtHeadless() { return Boolean.TRUE.toString().equals(JAVA_AWT_HEADLESS); }

Is the Java version at least the requested version.

Params:
  • requiredVersion – the required version, for example 1.31f
Returns:true if the actual version is equal or greater than the required version
/** * <p> * Is the Java version at least the requested version. * </p> * <p> * * @param requiredVersion the required version, for example 1.31f * @return {@code true} if the actual version is equal or greater than the required version */
public static boolean isJavaVersionAtLeast(final JavaVersion requiredVersion) { return JAVA_SPECIFICATION_VERSION_AS_ENUM.atLeast(requiredVersion); }

Is the Java version at most the requested version.

Example input:

Params:
  • requiredVersion – the required version, for example 1.31f
Returns:true if the actual version is equal or greater than the required version
Since:3.9
/** * <p> * Is the Java version at most the requested version. * </p> * <p> * Example input: * </p> * * @param requiredVersion the required version, for example 1.31f * @return {@code true} if the actual version is equal or greater than the required version * @since 3.9 */
public static boolean isJavaVersionAtMost(final JavaVersion requiredVersion) { return JAVA_SPECIFICATION_VERSION_AS_ENUM.atMost(requiredVersion); }

Decides if the Java version matches.

This method is package private instead of private to support unit test invocation.

Params:
  • version – the actual Java version
  • versionPrefix – the prefix for the expected Java version
Returns:true if matches, or false if not or can't determine
/** * <p> * Decides if the Java version matches. * </p> * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param version the actual Java version * @param versionPrefix the prefix for the expected Java version * @return true if matches, or false if not or can't determine */
static boolean isJavaVersionMatch(final String version, final String versionPrefix) { if (version == null) { return false; } return version.startsWith(versionPrefix); }
Decides if the operating system matches.

This method is package private instead of private to support unit test invocation.

Params:
  • osName – the actual OS name
  • osVersion – the actual OS version
  • osNamePrefix – the prefix for the expected OS name
  • osVersionPrefix – the prefix for the expected OS version
Returns:true if matches, or false if not or can't determine
/** * Decides if the operating system matches. * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param osName the actual OS name * @param osVersion the actual OS version * @param osNamePrefix the prefix for the expected OS name * @param osVersionPrefix the prefix for the expected OS version * @return true if matches, or false if not or can't determine */
static boolean isOSMatch(final String osName, final String osVersion, final String osNamePrefix, final String osVersionPrefix) { if (osName == null || osVersion == null) { return false; } return isOSNameMatch(osName, osNamePrefix) && isOSVersionMatch(osVersion, osVersionPrefix); }
Decides if the operating system matches.

This method is package private instead of private to support unit test invocation.

Params:
  • osName – the actual OS name
  • osNamePrefix – the prefix for the expected OS name
Returns:true if matches, or false if not or can't determine
/** * Decides if the operating system matches. * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param osName the actual OS name * @param osNamePrefix the prefix for the expected OS name * @return true if matches, or false if not or can't determine */
static boolean isOSNameMatch(final String osName, final String osNamePrefix) { if (osName == null) { return false; } return osName.startsWith(osNamePrefix); }
Decides if the operating system version matches.

This method is package private instead of private to support unit test invocation.

Params:
  • osVersion – the actual OS version
  • osVersionPrefix – the prefix for the expected OS version
Returns:true if matches, or false if not or can't determine
/** * Decides if the operating system version matches. * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param osVersion the actual OS version * @param osVersionPrefix the prefix for the expected OS version * @return true if matches, or false if not or can't determine */
static boolean isOSVersionMatch(final String osVersion, final String osVersionPrefix) { if (StringUtils.isEmpty(osVersion)) { return false; } // Compare parts of the version string instead of using String.startsWith(String) because otherwise // osVersionPrefix 10.1 would also match osVersion 10.10 final String[] versionPrefixParts = osVersionPrefix.split("\\."); final String[] versionParts = osVersion.split("\\."); for (int i = 0; i < Math.min(versionPrefixParts.length, versionParts.length); i++) { if (!versionPrefixParts[i].equals(versionParts[i])) { return false; } } return true; } // -----------------------------------------------------------------------

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

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

/** * <p> * SystemUtils instances should NOT be constructed in standard programming. Instead, the class should be used as * {@code SystemUtils.FILE_SEPARATOR}. * </p> * <p> * This constructor is public to permit tools that require a JavaBean instance to operate. * </p> */
public SystemUtils() { super(); } }