/*
 * 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.lang;

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#

Author:Apache Software Foundation, Based on code from Avalon Excalibur, Based on code from Lucene, Steve Downey, Gary Gregory, Michael Becke, Tetsuya Kaneuchi, Rafal Krupinski, Jason Gritman
Since:1.0
Version:$Id: SystemUtils.java 1056988 2011-01-09 17:58:53Z niallp $
/** * <p> * Helpers for <code>java.lang.System</code>. * </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</code> * and a message will be written to <code>System.err</code>. * </p> * * <p> * #ThreadSafe# * </p> * * @author Apache Software Foundation * @author Based on code from Avalon Excalibur * @author Based on code from Lucene * @author <a href="mailto:sdowney@panix.com">Steve Downey</a> * @author Gary Gregory * @author Michael Becke * @author Tetsuya Kaneuchi * @author Rafal Krupinski * @author Jason Gritman * @since 1.0 * @version $Id: SystemUtils.java 1056988 2011-01-09 17:58:53Z niallp $ */
public class SystemUtils { private static final int JAVA_VERSION_TRIM_SIZE = 3;
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 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</code> System Property. * </p> * <p> * Holds a class name, on Windows XP this is <code>sun.awt.windows.WToolkit</code>. * </p> * <p> * <b>On platforms without a GUI, this value is <code>null</code>.</b> * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. * </p> * <p> * File encoding, such as <code>Cp1252</code>. * </p> * * <p> * Defaults to <code>null</code> 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. File separator ("/" 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.

Since:Java 1.1
/** * <p> * The <code>file.separator</code> System Property. File separator (<code>&quot;/&quot;</code> on UNIX). * </p> * * <p> * Defaults to <code>null</code> 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 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</code> System Property. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. * The value of this property is the String <code>"true"</code> or <code>"false"</code>. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java class path. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java class format version number. * </p> * * <p> * Defaults to <code>null</code> 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</code> 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</code> 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</code> System Property. Path of endorsed directory or directories. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Path of extension directory or directories. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java installation directory. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Default temp file path. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. List of paths to search when loading libraries. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Runtime Environment name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Runtime Environment version. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Runtime Environment specification name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Runtime Environment specification vendor. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Runtime Environment specification version. * </p> * * <p> * Defaults to <code>null</code> 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");

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</code> System Property. A class name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java vendor-specific string. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java vendor URL. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java version number. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine implementation info. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine implementation name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine specification name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine specification vendor. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine specification version. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine implementation vendor. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Java Virtual Machine implementation version. * </p> * * <p> * Defaults to <code>null</code> 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 ("\n" 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.

Since:Java 1.1
/** * <p> * The <code>line.separator</code> System Property. Line separator (<code>&quot;\n&quot;</code> on UNIX). * </p> * * <p> * Defaults to <code>null</code> 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 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</code> System Property. Operating system architecture. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Operating system name. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. Operating system version. * </p> * * <p> * Defaults to <code>null</code> 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 (":" 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.

Since:Java 1.1
/** * <p> * The <code>path.separator</code> System Property. Path separator (<code>&quot;:&quot;</code> on UNIX). * </p> * * <p> * Defaults to <code>null</code> 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 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</code> or <code>user.region</code> System Property. * User's country code, such as <code>GB</code>. First in * Java version 1.2 as <code>user.region</code>. Renamed to <code>user.country</code> in 1.4 * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. User's current working directory. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. User's home directory. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. User's language code, such as <code>"en"</code>. * </p> * * <p> * Defaults to <code>null</code> 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</code> System Property. User's account name. * </p> * * <p> * Defaults to <code>null</code> 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");

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</code> System Property. For example: <code>"America/Los_Angeles"</code>. * </p> * * <p> * Defaults to <code>null</code> 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 // ----------------------------------------------------------------------- // This MUST be declared after those above as it depends on the // values being set up

Gets the Java version as a String trimming leading letters.

The field will return null if JAVA_VERSION is null.

Since:2.1
/** * <p> * Gets the Java version as a <code>String</code> trimming leading letters. * </p> * * <p> * The field will return <code>null</code> if {@link #JAVA_VERSION} is <code>null</code>. * </p> * * @since 2.1 */
public static final String JAVA_VERSION_TRIMMED = getJavaVersionTrimmed(); // Java version values // ----------------------------------------------------------------------- // These MUST be declared after the trim above as they depend on the // value being set up

Gets the Java version as a float.

Example return values:

  • 1.2f for Java 1.2
  • 1.31f for Java 1.3.1

The field will return zero if JAVA_VERSION is null.

Since:2.0
/** * <p> * Gets the Java version as a <code>float</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>1.2f</code> for Java 1.2 * <li><code>1.31f</code> for Java 1.3.1 * </ul> * * <p> * The field will return zero if {@link #JAVA_VERSION} is <code>null</code>. * </p> * * @since 2.0 */
public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();

Gets the Java version as an int.

Example return values:

  • 120 for Java 1.2
  • 131 for Java 1.3.1

The field will return zero if JAVA_VERSION is null.

Since:2.0
/** * <p> * Gets the Java version as an <code>int</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>120</code> for Java 1.2 * <li><code>131</code> for Java 1.3.1 * </ul> * * <p> * The field will return zero if {@link #JAVA_VERSION} is <code>null</code>. * </p> * * @since 2.0 */
public static final int JAVA_VERSION_INT = getJavaVersionAsInt(); // 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</code> if this is Java version 1.1 (also 1.1.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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</code> if this is Java version 1.2 (also 1.2.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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</code> if this is Java version 1.3 (also 1.3.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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</code> if this is Java version 1.4 (also 1.4.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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</code> if this is Java version 1.5 (also 1.5.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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</code> if this is Java version 1.6 (also 1.6.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </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:2.5
/** * <p> * Is <code>true</code> if this is Java version 1.7 (also 1.7.x versions). * </p> * * <p> * The field will return <code>false</code> if {@link #JAVA_VERSION} is <code>null</code>. * </p> * * @since 2.5 */
public static final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7"); // 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</code> if this is AIX. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is HP-UX. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");

Is true if this is Irix.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Irix. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is Linux. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is Mac. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is Mac. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS X");

Is true if this is OS/2.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is OS/2. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is Solaris. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is SunOS. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> 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</code> if <code>OS_NAME</code> is <code>null</code>. * </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 true if this is Windows.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Windows. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </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</code> if this is Windows 2000. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_2000 = getOSMatches(OS_NAME_WINDOWS_PREFIX, "5.0");

Is true if this is Windows 95.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Windows 95. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_95 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0"); // Java 1.2 running on Windows98 returns 'Windows 95', hence the above

Is true if this is Windows 98.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Windows 98. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_98 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1"); // Java 1.2 running on Windows98 returns 'Windows 95', hence the above

Is true if this is Windows ME.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Windows ME. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_ME = getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9"); // Java 1.2 running on WindowsME may return 'Windows 95', hence the above

Is true if this is Windows NT.

The field will return false if OS_NAME is null.

Since:2.0
/** * <p> * Is <code>true</code> if this is Windows NT. * </p> * * <p> * The field will return <code>false</code> if <code>OS_NAME</code> is <code>null</code>. * </p> * * @since 2.0 */
public static final boolean IS_OS_WINDOWS_NT = getOSMatchesName(OS_NAME_WINDOWS_PREFIX + " NT"); // Windows 2000 returns 'Windows 2000' but may suffer from same Java1.2 problem

Is true if this is Windows XP.

The field will return false if OS_NAME is null.

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

Is true if this is Windows Vista.

The field will return false if OS_NAME is null.

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

Is true if this is Windows 7.

The field will return false if OS_NAME is null.

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

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</code>. * </p> * * @return a directory * @throws SecurityException if a security manager exists and its * <code>checkPropertyAccess</code> 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 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</code>. * </p> * * @return a directory * @throws SecurityException if a security manager exists and its * <code>checkPropertyAccess</code> 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)); }

Gets the Java version number as a float.

Example return values:

  • 1.2f for JDK 1.2
  • 1.31f for JDK 1.3.1
Returns:the version, for example 1.31f for JDK 1.3.1
Deprecated:Use JAVA_VERSION_FLOAT instead. Method will be removed in Commons Lang 3.0.
/** * <p>Gets the Java version number as a <code>float</code>.</p> * * <p>Example return values:</p> * <ul> * <li><code>1.2f</code> for JDK 1.2 * <li><code>1.31f</code> for JDK 1.3.1 * </ul> * * @return the version, for example 1.31f for JDK 1.3.1 * @deprecated Use {@link #JAVA_VERSION_FLOAT} instead. * Method will be removed in Commons Lang 3.0. */
public static float getJavaVersion() { return JAVA_VERSION_FLOAT; }

Gets the Java version number as a float.

Example return values:

  • 1.2f for Java 1.2
  • 1.31f for Java 1.3.1
  • 1.6f for Java 1.6.0_20

Patch releases are not reported.

Returns:the version, for example 1.31f for Java 1.3.1
/** * <p> * Gets the Java version number as a <code>float</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>1.2f</code> for Java 1.2</li> * <li><code>1.31f</code> for Java 1.3.1</li> * <li><code>1.6f</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * * @return the version, for example 1.31f for Java 1.3.1 */
private static float getJavaVersionAsFloat() { return toVersionFloat(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, JAVA_VERSION_TRIM_SIZE)); }

Gets the Java version number as an int.

Example return values:

  • 120 for Java 1.2
  • 131 for Java 1.3.1
  • 160 for Java 1.6.0_20

Patch releases are not reported.

Returns:the version, for example 131 for Java 1.3.1
/** * <p> * Gets the Java version number as an <code>int</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>120</code> for Java 1.2</li> * <li><code>131</code> for Java 1.3.1</li> * <li><code>160</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * * @return the version, for example 131 for Java 1.3.1 */
private static int getJavaVersionAsInt() { return toVersionInt(toJavaVersionIntArray(SystemUtils.JAVA_VERSION, JAVA_VERSION_TRIM_SIZE)); }

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(String versionPrefix) { return isJavaVersionMatch(JAVA_VERSION_TRIMMED, versionPrefix); }
Trims the text of the java version to start with numbers.
Returns:the trimmed java version
/** * Trims the text of the java version to start with numbers. * * @return the trimmed java version */
private static String getJavaVersionTrimmed() { if (JAVA_VERSION != null) { for (int i = 0; i < JAVA_VERSION.length(); i++) { char ch = JAVA_VERSION.charAt(i); if (ch >= '0' && ch <= '9') { return JAVA_VERSION.substring(i); } } } return null; }
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(String osNamePrefix, 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(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</code> if the property cannot be read. * </p> * * <p> * If a <code>SecurityException</code> is caught, the return value is <code>null</code> and a message is written to * <code>System.err</code>. * </p> * * @param property * the system property name * @return the system property value or <code>null</code> if a security problem occurs */
private static String getSystemProperty(String property) { try { return System.getProperty(property); } catch (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 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</code>. * </p> * * @return a directory * @throws SecurityException if a security manager exists and its * <code>checkPropertyAccess</code> 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</code>. * </p> * * @return a directory * @throws SecurityException if a security manager exists and its * <code>checkPropertyAccess</code> 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)); }
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</code>. * * @return <code>true</code> if <code>JAVA_AWT_HEADLESS</code> is <code>"true"</code>, <code>false</code> otherwise. * * @see #JAVA_AWT_HEADLESS * @since 2.1 * @since Java 1.4 */
public static boolean isJavaAwtHeadless() { return JAVA_AWT_HEADLESS != null ? JAVA_AWT_HEADLESS.equals(Boolean.TRUE.toString()) : false; }

Is the Java version at least the requested version.

Example input:

  • 1.2f to test for Java 1.2
  • 1.31f to test for Java 1.3.1
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> * Example input: * </p> * <ul> * <li><code>1.2f</code> to test for Java 1.2</li> * <li><code>1.31f</code> to test for Java 1.3.1</li> * </ul> * * @param requiredVersion * the required version, for example 1.31f * @return <code>true</code> if the actual version is equal or greater than the required version */
public static boolean isJavaVersionAtLeast(float requiredVersion) { return JAVA_VERSION_FLOAT >= requiredVersion; }

Is the Java version at least the requested version.

Example input:

  • 120 to test for Java 1.2 or greater
  • 131 to test for Java 1.3.1 or greater
Params:
  • requiredVersion – the required version, for example 131
Returns:true if the actual version is equal or greater than the required version
Since:2.0
/** * <p> * Is the Java version at least the requested version. * </p> * * <p> * Example input: * </p> * <ul> * <li><code>120</code> to test for Java 1.2 or greater</li> * <li><code>131</code> to test for Java 1.3.1 or greater</li> * </ul> * * @param requiredVersion * the required version, for example 131 * @return <code>true</code> if the actual version is equal or greater than the required version * @since 2.0 */
public static boolean isJavaVersionAtLeast(int requiredVersion) { return JAVA_VERSION_INT >= 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(String version, 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(String osName, String osVersion, String osNamePrefix, String osVersionPrefix) { if (osName == null || osVersion == null) { return false; } return osName.startsWith(osNamePrefix) && osVersion.startsWith(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(String osName, String osNamePrefix) { if (osName == null) { return false; } return osName.startsWith(osNamePrefix); }

Converts the given Java version string to a float.

Example return values:

  • 1.2f for Java 1.2
  • 1.31f for Java 1.3.1
  • 1.6f for Java 1.6.0_20

Patch releases are not reported.

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

Params:
  • version – The string version
Returns:the version, for example 1.31f for Java 1.3.1
/** * <p> * Converts the given Java version string to a <code>float</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>1.2f</code> for Java 1.2</li> * <li><code>1.31f</code> for Java 1.3.1</li> * <li><code>1.6f</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param version The string version * @return the version, for example 1.31f for Java 1.3.1 */
static float toJavaVersionFloat(String version) { return toVersionFloat(toJavaVersionIntArray(version, JAVA_VERSION_TRIM_SIZE)); }

Converts the given Java version string to an int.

Example return values:

  • 120 for Java 1.2
  • 131 for Java 1.3.1
  • 160 for Java 1.6.0_20

Patch releases are not reported.

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

Params:
  • version – The string version
Returns:the version, for example 131 for Java 1.3.1
/** * <p> * Converts the given Java version string to an <code>int</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>120</code> for Java 1.2</li> * <li><code>131</code> for Java 1.3.1</li> * <li><code>160</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param version The string version * @return the version, for example 131 for Java 1.3.1 */
static int toJavaVersionInt(String version) { return toVersionInt(toJavaVersionIntArray(version, JAVA_VERSION_TRIM_SIZE)); }

Converts the given Java version string to an int[] of maximum size 3.

Example return values:

  • [1, 2, 0] for Java 1.2
  • [1, 3, 1] for Java 1.3.1
  • [1, 5, 0] for Java 1.5.0_21

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

Params:
  • version – The string version
Returns:the version, for example [1, 5, 0] for Java 1.5.0_21
/** * <p> * Converts the given Java version string to an <code>int[]</code> of maximum size <code>3</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>[1, 2, 0]</code> for Java 1.2</li> * <li><code>[1, 3, 1]</code> for Java 1.3.1</li> * <li><code>[1, 5, 0]</code> for Java 1.5.0_21</li> * </ul> * <p> * This method is package private instead of private to support unit test invocation. * </p> * * @param version The string version * @return the version, for example [1, 5, 0] for Java 1.5.0_21 */
static int[] toJavaVersionIntArray(String version) { return toJavaVersionIntArray(version, Integer.MAX_VALUE); }

Converts the given Java version string to an int[] of maximum size limit.

Example return values:

  • [1, 2, 0] for Java 1.2
  • [1, 3, 1] for Java 1.3.1
  • [1, 5, 0, 21] for Java 1.5.0_21
Params:
  • version – The string version
  • limit – version limit
Returns:the version, for example [1, 5, 0, 21] for Java 1.5.0_21
/** * <p> * Converts the given Java version string to an <code>int[]</code> of maximum size <code>limit</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>[1, 2, 0]</code> for Java 1.2</li> * <li><code>[1, 3, 1]</code> for Java 1.3.1</li> * <li><code>[1, 5, 0, 21]</code> for Java 1.5.0_21</li> * </ul> * * @param version The string version * @param limit version limit * @return the version, for example [1, 5, 0, 21] for Java 1.5.0_21 */
private static int[] toJavaVersionIntArray(String version, int limit) { if (version == null) { return ArrayUtils.EMPTY_INT_ARRAY; } String[] strings = StringUtils.split(version, "._- "); int[] ints = new int[Math.min(limit, strings.length)]; int j = 0; for (int i = 0; i < strings.length && j < limit; i++) { String s = strings[i]; if (s.length() > 0) { try { ints[j] = Integer.parseInt(s); j++; } catch (Exception e) { } } } if (ints.length > j) { int[] newInts = new int[j]; System.arraycopy(ints, 0, newInts, 0, j); ints = newInts; } return ints; }

Converts given the Java version array to a float.

Example return values:

  • 1.2f for Java 1.2
  • 1.31f for Java 1.3.1
  • 1.6f for Java 1.6.0_20

Patch releases are not reported.

Params:
  • javaVersions – The version numbers
Returns:the version, for example 1.31f for Java 1.3.1
/** * <p> * Converts given the Java version array to a <code>float</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>1.2f</code> for Java 1.2</li> * <li><code>1.31f</code> for Java 1.3.1</li> * <li><code>1.6f</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * * @param javaVersions The version numbers * @return the version, for example 1.31f for Java 1.3.1 */
private static float toVersionFloat(int[] javaVersions) { if (javaVersions == null || javaVersions.length == 0) { return 0f; } if (javaVersions.length == 1) { return javaVersions[0]; } StringBuffer builder = new StringBuffer(); builder.append(javaVersions[0]); builder.append('.'); for (int i = 1; i < javaVersions.length; i++) { builder.append(javaVersions[i]); } try { return Float.parseFloat(builder.toString()); } catch (Exception ex) { return 0f; } }

Converts given the Java version array to an int.

Example return values:

  • 120 for Java 1.2
  • 131 for Java 1.3.1
  • 160 for Java 1.6.0_20

Patch releases are not reported.

Params:
  • javaVersions – The version numbers
Returns:the version, for example 1.31f for Java 1.3.1
/** * <p> * Converts given the Java version array to an <code>int</code>. * </p> * * <p> * Example return values: * </p> * <ul> * <li><code>120</code> for Java 1.2</li> * <li><code>131</code> for Java 1.3.1</li> * <li><code>160</code> for Java 1.6.0_20</li> * </ul> * * <p> * Patch releases are not reported. * </p> * * @param javaVersions The version numbers * @return the version, for example 1.31f for Java 1.3.1 */
private static int toVersionInt(int[] javaVersions) { if (javaVersions == null) { return 0; } int intVersion = 0; int len = javaVersions.length; if (len >= 1) { intVersion = javaVersions[0] * 100; } if (len >= 2) { intVersion += javaVersions[1] * 10; } if (len >= 3) { intVersion += javaVersions[2]; } return intVersion; } // -----------------------------------------------------------------------

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</code>. * </p> * * <p> * This constructor is public to permit tools that require a JavaBean instance to operate. * </p> */
public SystemUtils() { super(); } }