Java/Development Class/System

Материал из Java эксперт
Перейти к: навигация, поиск

Exiting a Java program

   <source lang="java">
    

public class Main {

 public static void main(String[] args) {
   System.exit(0);
 }

}



 </source>
   
  
 
  



Get file separator using System class

   <source lang="java">
     

public class Main {

 public static void main(String[] args) {
   System.out.println(System.getProperty("file.separator"));
 }

}




 </source>
   
  
 
  



Helpers for java.lang.System

   <source lang="java">
  

/*

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

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.

*
* @author Based on code from Avalon Excalibur
* @author Based on code from Lucene
* @author Stephen Colebourne
* @author 
* @author Gary Gregory
* @author Michael Becke
* @author Tetsuya Kaneuchi
* @author Rafal Krupinski
* @author Jason Gritman
* @since 1.0
* @version $Id: SystemUtils.java 595798 2007-11-16 20:01:43Z bayard $
*/

public class SystemUtils {

   /**
    * 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.
    */
   private static final String USER_HOME_KEY = "user.home";
   /**
    * 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.
    */
   private static final String JAVA_IO_TMPDIR_KEY = "java.io.tmpdir";
   
   /**
    * 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    */
   public static final String 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.2
    */
   public static final String FILE_ENCODING = getSystemProperty("file.encoding");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    */
   public static final String JAVA_AWT_FONTS = getSystemProperty("java.awt.fonts");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    */
   public static final String JAVA_AWT_GRAPHICSENV = getSystemProperty("java.awt.graphicsenv");
   /**
*

* The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @see #isJavaAwtHeadless()
    * @since 2.1
    * @since Java 1.4
    */
   public static final String JAVA_AWT_HEADLESS = getSystemProperty("java.awt.headless");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    */
   public static final String JAVA_AWT_PRINTERJOB = getSystemProperty("java.awt.printerjob");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String JAVA_CLASS_PATH = getSystemProperty("java.class.path");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String JAVA_CLASS_VERSION = getSystemProperty("java.class.version");
   /**
*

The java.rupiler 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2. Not used in Sun versions after 1.2.
    */
   public static final String JAVA_COMPILER = getSystemProperty("java.rupiler");
   /**
*

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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.4
    */
   public static final String JAVA_ENDORSED_DIRS = getSystemProperty("java.endorsed.dirs");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.3
    */
   public static final String JAVA_EXT_DIRS = getSystemProperty("java.ext.dirs");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String JAVA_HOME = getSystemProperty(JAVA_HOME_KEY);
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_IO_TMPDIR = getSystemProperty(JAVA_IO_TMPDIR_KEY);
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_LIBRARY_PATH = getSystemProperty("java.library.path");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.3
    */
   public static final String JAVA_RUNTIME_NAME = getSystemProperty("java.runtime.name");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.3
    */
   public static final String JAVA_RUNTIME_VERSION = getSystemProperty("java.runtime.version");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_SPECIFICATION_NAME = getSystemProperty("java.specification.name");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_SPECIFICATION_VENDOR = getSystemProperty("java.specification.vendor");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.3
    */
   public static final String JAVA_SPECIFICATION_VERSION = getSystemProperty("java.specification.version");
   /**
*

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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    * @since Java 1.4
    */
   public static final String JAVA_UTIL_PREFS_PREFERENCES_FACTORY = 
       getSystemProperty("java.util.prefs.PreferencesFactory");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String JAVA_VENDOR = getSystemProperty("java.vendor");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
   */
   public static final String JAVA_VENDOR_URL = getSystemProperty("java.vendor.url");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String JAVA_VERSION = getSystemProperty("java.version");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.2
    */
   public static final String JAVA_VM_INFO = getSystemProperty("java.vm.info");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_NAME = getSystemProperty("java.vm.name");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_SPECIFICATION_NAME = getSystemProperty("java.vm.specification.name");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_SPECIFICATION_VENDOR = getSystemProperty("java.vm.specification.vendor");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_SPECIFICATION_VERSION = getSystemProperty("java.vm.specification.version");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_VENDOR = getSystemProperty("java.vm.vendor");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.2
    */
   public static final String JAVA_VM_VERSION = getSystemProperty("java.vm.version");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String OS_ARCH = getSystemProperty("os.arch");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String OS_NAME = getSystemProperty("os.name");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String OS_VERSION = getSystemProperty("os.version");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String PATH_SEPARATOR = getSystemProperty("path.separator");
   /**
*

The user.country or user.region System Property. * User"s country code, such as GB. First in JDK 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.2
    */
   public static final String USER_COUNTRY = 
       getSystemProperty("user.country") == null ?
           getSystemProperty("user.region") : getSystemProperty("user.country");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String USER_DIR = getSystemProperty(USER_DIR_KEY);
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String USER_HOME = getSystemProperty(USER_HOME_KEY);
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.0
    * @since Java 1.2
    */
   public static final String USER_LANGUAGE = getSystemProperty("user.language");
   /**
*

The 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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since Java 1.1
    */
   public static final String USER_NAME = getSystemProperty("user.name");
   /**
*

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 {@link System#setProperty(String,String)} * or {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value * will be out of sync with that System property. *

    * 
    * @since 2.1
    */
   public static final String USER_TIMEZONE = getSystemProperty("user.timezone");
   // Java version
   //-----------------------------------------------------------------------
   // 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 {@link #JAVA_VERSION} is null.

    * 
    * @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 JDK 1.2 *
  • 1.31f for JDK 1.3.1 *
    *
*

The field will return zero if {@link #JAVA_VERSION} is null.

    * 
    * @since 2.0
    */
   public static final float JAVA_VERSION_FLOAT = getJavaVersionAsFloat();
   /**
*

Gets the Java version as an int.

    *
*

Example return values:

*
    *
  • 120 for JDK 1.2 *
  • 131 for JDK 1.3.1 *
    *
*

The field will return zero if {@link #JAVA_VERSION} is null.

    * 
    * @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 {@link #JAVA_VERSION} is * null.

    */
   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 {@link #JAVA_VERSION} is * null.

    */
   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 {@link #JAVA_VERSION} is * null.

    */
   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 {@link #JAVA_VERSION} is * null.

    */
   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 {@link #JAVA_VERSION} is * null.

    */
   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 {@link #JAVA_VERSION} is * null.

    */
   public static final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
   // 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.ru/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
    */
   public static final boolean IS_OS_AIX = getOSMatches("AIX");
   /**
*

Is true if this is HP-UX.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_HP_UX = getOSMatches("HP-UX");
   /**
*

Is true if this is Irix.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_IRIX = getOSMatches("Irix");
   /**
*

Is true if this is Linux.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_LINUX = getOSMatches("Linux") || getOSMatches("LINUX");
   /**
*

Is true if this is Mac.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_MAC = getOSMatches("Mac");
   /**
*

Is true if this is Mac.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_MAC_OSX = getOSMatches("Mac OS X");
   /**
*

Is true if this is OS/2.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_OS2 = getOSMatches("OS/2");
   /**
*

Is true if this is Solaris.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_SOLARIS = getOSMatches("Solaris");
   /**
*

Is true if this is SunOS.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @since 2.0
    */
   public static final boolean IS_OS_SUN_OS = getOSMatches("SunOS");
   /**
*

Is true if this is a POSIX compilant 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
    */
   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
    */
   public static final boolean IS_OS_WINDOWS = getOSMatches(OS_NAME_WINDOWS_PREFIX);
   /**
*

Is true if this is Windows 2000.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @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
    */
   public static final boolean IS_OS_WINDOWS_95 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.0");
   // JDK 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
    */
   public static final boolean IS_OS_WINDOWS_98 = getOSMatches(OS_NAME_WINDOWS_PREFIX + " 9", "4.1");
   // JDK 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
    */
   public static final boolean IS_OS_WINDOWS_ME = getOSMatches(OS_NAME_WINDOWS_PREFIX, "4.9");
   // JDK 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
    */
   public static final boolean IS_OS_WINDOWS_NT = getOSMatches(OS_NAME_WINDOWS_PREFIX + " NT");
   // Windows 2000 returns "Windows 2000" but may suffer from same JDK1.2 problem
   /**
*

Is true if this is Windows XP.

    *
*

The field will return false if OS_NAME is * null.

    * 
    * @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
    */
   public static final boolean IS_OS_WINDOWS_VISTA = getOSMatches(OS_NAME_WINDOWS_PREFIX, "6.0"); 
   //-----------------------------------------------------------------------    
   /**
*

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.

    */
   public SystemUtils() {
       super();
   }
   
   //-----------------------------------------------------------------------    
   /**
*

Gets the Java version number as a float.

    *
*

Example return values:

*
    *
  • 1.2f for JDK 1.2 *
  • 1.31f for JDK 1.3.1 *
    * 
    * @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 JDK 1.2 *
  • 1.31f for JDK 1.3.1 *
    * 
*

Patch releases are not reported. * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is null.

    * 
    * @return the version, for example 1.31f for JDK 1.3.1
    */
   private static float getJavaVersionAsFloat() {
       if (JAVA_VERSION_TRIMMED == null) {
           return 0f;
       }
       String str = JAVA_VERSION_TRIMMED.substring(0, 3);
       if (JAVA_VERSION_TRIMMED.length() >= 5) {
           str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
       }
       try {
           return Float.parseFloat(str);
       } catch (Exception ex) {
           return 0;
       }
   }
   
   /**
*

Gets the Java version number as an int.

    *
*

Example return values:

*
    *
  • 120 for JDK 1.2 *
  • 131 for JDK 1.3.1 *
    * 
*

Patch releases are not reported. * Zero is returned if {@link #JAVA_VERSION_TRIMMED} is null.

    * 
    * @return the version, for example 131 for JDK 1.3.1
    */
   private static int getJavaVersionAsInt() {
       if (JAVA_VERSION_TRIMMED == null) {
           return 0;
       }
       String str = JAVA_VERSION_TRIMMED.substring(0, 1);
       str = str + JAVA_VERSION_TRIMMED.substring(2, 3);
       if (JAVA_VERSION_TRIMMED.length() >= 5) {
           str = str + JAVA_VERSION_TRIMMED.substring(4, 5);
       } else {
           str = str + "0";
       }
       try {
           return Integer.parseInt(str);
       } catch (Exception ex) {
           return 0;
       }
   }
   /**
    * 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 java version matches.

    * 
    * @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) {
       if (JAVA_VERSION_TRIMMED == null) {
           return false;
       }
       return JAVA_VERSION_TRIMMED.startsWith(versionPrefix);
   }    
   
   /**
*

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 getOSMatches(String osNamePrefix) {
       if (OS_NAME == null) {
           return false;
       }
       return OS_NAME.startsWith(osNamePrefix);
   }    
   /**
*

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) {
       if (OS_NAME == null || OS_VERSION == null) {
           return false;
       }
       return OS_NAME.startsWith(osNamePrefix) && OS_VERSION.startsWith(osVersionPrefix);
   }    
   //-----------------------------------------------------------------------
   /**
*

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.

    * 
    * @param property the system property name
    * @return the system property value or null 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;
       }
   }
   
   /**
*

Is the Java version at least the requested version.

    *
*

Example input:

*
    *
  • 1.2f to test for JDK 1.2
  • *
  • 1.31f to test for JDK 1.3.1
  • *
    * 
    * @param requiredVersion  the required version, for example 1.31f
    * @return true 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 JDK 1.2 or greater
  • *
  • 131 to test for JDK 1.3.1 or greater
  • *
    * 
    * @param requiredVersion  the required version, for example 131
    * @return true 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;
   }
   /**
    * Returns whether the {@link #JAVA_AWT_HEADLESS} value is true.
    *  
    * @return true if JAVA_AWT_HEADLESS is "true",
    * false 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;
   }
   /**
*

Gets the Java home directory as a File.

    * 
    * @return a directory
    * @throws  SecurityException  if a security manager exists and its  
    *             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 Java IO temporary directory as a File.

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

Gets the user directory as a File.

    * 
    * @return a directory
    * @throws  SecurityException  if a security manager exists and its  
    *             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.

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

}


 </source>
   
  
 
  



Methods to aid classes recover from OutOfMemoryErrors by denying or reducing service rather than a complete shutdown of the JVM.

   <source lang="java">

/*

  Derby - Class org.apache.derby.iapi.services.memory.LowMemory
  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.
*/

/**

* Methods to aid classes recover from OutOfMemoryErrors by denying
* or reducing service rather than a complete shutdown of the JVM.
* It"s intended that classes use to functionality to allow then to
* deny service when memory is low to allow the JVM to recover,
* rather than start new operations that are probably doomed to
* failure due to the low memory.
*

* Expected usage is one instance of this class per major logical * operation, e.g. creating a connection, preparing a statement, * adding an entry to a specific cache etc. *
* The logical operation would call isLowMemory() before starting * the operation, and thrown a static exception if it returns true. *
* If during the operation an OutOfMemoryException is thrown the * operation would call setLowMemory() and throw its static exception * representing low memory. * <P> * Future enhancments could be a callback mechanism for modules * where they register they can reduce memory usage on a low * memory situation. These callbacks would be triggered by * a call to setLowMemory. For example the page cache could * reduce its current size by 10% in a low memory situation. * */ public class LowMemory { /** * Free memory seen when caller indicated an out of * memory situation. Becomes a low memory watermark * for five seconds that causes isLowMemory to return * true if free memory is lower than this value. * This allows the JVM a chance to recover memory * rather than start new operations that are probably * doomed to failure due to the low memory. * */ private long lowMemory; /** * Time in ms corresponding to System.currentTimeMillis() when * lowMemory was set. */ private long whenLowMemorySet; /** * Set a low memory watermark where the owner of this object just hit an * OutOfMemoryError. The caller is assumed it has just freed up any * references it obtained during the operation, so that the freeMemory call * as best as it can reflects the memory before the action that caused the * OutOfMemoryError, not part way through the action. * */ public void setLowMemory() { // Can read lowMemory unsynchronized, worst // case is that we force extra garbage collection. if (lowMemory == 0L) { // The caller tried to dereference any objects it // created during its instantation. Try to garbage // collect these so that we can a best-guess effort // at the free memory before the overall operation we are // failing on occurred. Of course in active multi-threading // systems we run the risk that some other thread just freed // up some memory that throws off our calcuation. This is // avoided by clearing lowMemory some time later on an // isLowMemory() call. for (int i = 0; i < 5; i++) { System.gc(); System.runFinalization(); try { Thread.sleep(50L); } catch (InterruptedException e) { } } } synchronized (this) { if (lowMemory == 0L) { lowMemory = Runtime.getRuntime().freeMemory(); whenLowMemorySet = System.currentTimeMillis(); } } } /** * Return true if a low memory water mark has been set and the current free * memory is lower than it. Otherwise return false. */ public boolean isLowMemory() { synchronized (this) { long lm = lowMemory; if (lm == 0) return false; if (Runtime.getRuntime().freeMemory() > lm) return false; // Only allow an low memory watermark to be valid // for five seconds after it was set. This stops // an incorrect limit being set for ever. This could // occur if other threads were freeing memory when // we called Runtime.getRuntime().freeMemory() long now = System.currentTimeMillis(); if ((now - this.whenLowMemorySet) > 5000L) { lowMemory = 0L; whenLowMemorySet = 0L; return false; } return true; } } } </source>

Reading Text from Standard Input

   <source lang="java">
    

import java.io.BufferedReader; import java.io.InputStreamReader; public class Main {

 public static void main(String[] argv) throws Exception {
   BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
   String str = "";
   while (str != null) {
     System.out.print("> prompt ");
     str = in.readLine();
     System.out.println(str);
   }
 }

}



 </source>
   
  
 
  



Run object finalization using System class

   <source lang="java">
    

public class Main {

 public static void main(String[] args) {
   System.runFinalization();
 }

}



 </source>
   
  
 
  



Run the garbage collector using System class

   <source lang="java">
    

public class Main {

 public static void main(String[] args) {
   System.gc();
 }

}



 </source>
   
  
 
  



System IO Redirect

   <source lang="java">
   

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.PrintStream; public class Redirect {

 public static void main(String args[]) throws Exception {
   PrintStream origOut = System.out;
   PrintStream origErr = System.err;
   InputStream stdin = null;
   stdin = new FileInputStream("Redirect.in");
   PrintStream stdout = null;
   stdout = new PrintStream(new FileOutputStream("Redirect.out"));
   PrintStream stderr = null;
   stderr = new PrintStream(new FileOutputStream("Redirect.err"));
   origOut.println("1");
   System.out.println("2");
   origOut.println("3");
   System.err.println("4");
   origErr.println("5");
   System.setIn(stdin);
   System.setOut(stdout);
   System.setErr(stderr);
   origOut.println("\nR");
   System.out.println("T");
   origOut.println("Tq");
   System.err.println("Tqw");
   origErr.println("Test");
   origOut.println("\nRedirect:  Round #3");
   int inChar = 0;
   while (-1 != inChar) {
     try {
       inChar = System.in.read();
     } catch (Exception e) {
       // Clean up the output and bail.
       origOut.print("\n");
       break;
     }
     origOut.write(inChar);
   }
   stdin.close();
   stdout.close();
   stderr.close();
   System.exit(0);
 }

}



 </source>
   
  
 
  



System Level Utils

   <source lang="java">
    

/*

* Created on May 18, 2005
*/

/*

Copyright 2007 Robert C. Ilardi
Licensed 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.
*/

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintStream; import java.lang.reflect.Array; import java.net.InetAddress; import java.text.NumberFormat; import java.util.Properties; /**

* @author rilardi
*/

public class SystemUtils {

 public static final int OS_UNKNOWN = -1;
 public static final int OS_LINUX = 0;
 public static final String OS_LINUX_STR = "LINUX";
 public static final int OS_WINDOWS = 1;
 public static final String OS_WINDOWS_STR = "WINDOWS";
 public static final String SYSPROP_OS_NAME = "os.name";
 public static final String SYSPROP_OS_VERSION = "os.version";
 public static final String SYSPROP_JAVA_VERSION = "java.version";
 public static final String SYSPROP_JAVA_VENDOR = "java.vendor";
 public static double GetAvailableMemory() {
   Runtime rt = Runtime.getRuntime();
   double availableMem;
   long maxMem, freeMem, usedJvmMem;
   usedJvmMem = rt.totalMemory();
   maxMem = rt.maxMemory();
   freeMem = rt.freeMemory();
   availableMem = (maxMem - (usedJvmMem - freeMem)) / 1048576.0d;
   return availableMem;
 }
 public static double GetTotalMemory() {
   Runtime rt = Runtime.getRuntime();
   double maxMem = rt.maxMemory() / 1048576.0d;
   return maxMem;
 }
 public static void PrintMemoryUsage() {
   PrintMemoryUsage("Memory Available to JVM: ");
 }
 public static void PrintMemoryUsage(String memMesg) {
   StringBuffer sb = new StringBuffer();
   double availableMem;
   NumberFormat nf = NumberFormat.getInstance();
   nf.setGroupingUsed(true);
   nf.setMaximumFractionDigits(3);
   availableMem = GetAvailableMemory();
   sb.append(memMesg);
   sb.append(nf.format(availableMem));
   sb.append(" MB");
   System.out.println(sb.toString());
 }
 public static String GetWorkingDirectory() {
   return GetDirectory("user.dir");
 }
 public static String GetHomeDirectory() {
   return GetDirectory("user.home");
 }
 public static String GetDirectory(String systemProp) {
   File file;
   StringBuffer dir = new StringBuffer();
   file = new File(System.getProperty(systemProp));
   dir.append(file.getAbsolutePath());
   if (!dir.toString().endsWith(File.separator)) {
     dir.append(File.separator);
   }
   return dir.toString();
 }
 public static String GetHostname() {
   String hostname = null;
   try {
     InetAddress lh = InetAddress.getLocalHost();
     hostname = lh.getHostName();
   }
   catch (Exception e) {}
   return hostname;
 }
 public static int GetOperatingSystemType() {
   int osType;
   String osName = System.getProperty(SYSPROP_OS_NAME).toUpperCase();
   if (osName.indexOf(OS_LINUX_STR) >= 0) {
     osType = OS_LINUX;
   }
   else if (osName.indexOf(OS_WINDOWS_STR) >= 0) {
     osType = OS_WINDOWS;
   }
   else {
     osType = OS_UNKNOWN;
   }
   return osType;
 }
 public static void Sleep(int secs) {
   try {
     for (int i = 1; i <= secs; i++) {
       Thread.sleep(1000);
     }
   }
   catch (Exception e) {}
 }
 /*
  * Wraps the Thread.sleep(int milliseconds) static method
  * for quick and easy use...
  */
 public static void SleepTight(long milliseconds) {
   try {
     Thread.sleep(milliseconds);
   }
   catch (Exception e) {}
 }
 public static boolean IsClassDervivedFrom(Class childClass, Class superClass) {
   boolean derived = false;
   Class prevSuper;
   if (childClass != null && superClass != null) {
     //Make sure this class is dervived from the Worker Class 
     prevSuper = childClass;
     superClass = childClass.getSuperclass();
     while (!superClass.getName().equals("java.lang.Object")) {
       prevSuper = superClass;
       superClass = superClass.getSuperclass();
     }
     derived = (prevSuper.getName().equals(superClass.getName()));
   } //End null class parameters check
   return derived;
 }
 public static boolean DoesClassImplement(Class targetClass, Class interfaceClass) {
   boolean implemented = false;
   Class[] interfaces;
   if (targetClass != null && interfaceClass != null) {
     do {
       interfaces = targetClass.getInterfaces();
       for (Class intf : interfaces) {
         if (intf.getName().equals(interfaceClass.getName())) {
           implemented = true;
           break;
         }
       }
       targetClass = targetClass.getSuperclass();
     } while (!implemented && !targetClass.getName().equals("java.lang.Object"));
   } //End null class parameters check
   return implemented;
 }
 public static void PrintInputStream(InputStream ins) throws IOException {
   byte[] buf;
   int cnt;
   if (ins != null) {
     buf = new byte[1024];
     cnt = ins.read(buf);
     while (cnt > 0) {
       System.out.println(new String(buf, 0, cnt));
       cnt = ins.read(buf);
     }
   }
 }
 public static boolean EqualByteArrays(byte[] dcData, byte[] dcData2) {
   boolean same = false;
   if (dcData != null && dcData2 != null && dcData.length == dcData2.length) {
     same = true; //Assume True
     for (int i = 0; i < dcData.length; i++) {
       if (dcData[i] != dcData2[i]) {
         same = false;
         break;
       }
     }
   }
   return same;
 }
 public static void FillArray(byte[] arr, byte b) {
   if (arr != null) {
     for (int i = 0; i < arr.length; i++) {
       arr[i] = b;
     }
   }
 }
 public static Properties LoadPropertiesFile(String propFile) throws IOException {
   Properties props = null;
   FileInputStream fis = null;
   try {
     fis = new FileInputStream(propFile);
     props = new Properties();
     props.load(fis);
   }
   finally {
     if (fis != null) {
       try {
         fis.close();
       }
       catch (Exception e) {}
       fis = null;
     }
   }
   return props;
 }
 public static byte[] LoadDataFromClassLoader(String resourceClassPath) throws IOException {
   byte[] data = null, buf;
   ByteArrayOutputStream baos = null;
   InputStream ins = null;
   int cnt;
   try {
     ins = SystemUtils.class.getClassLoader().getResourceAsStream(resourceClassPath);
     if (ins == null) {
       throw new IOException("Could NOT Open Resource Stream for: " + resourceClassPath);
     }
     buf = new byte[1024];
     baos = new ByteArrayOutputStream();
     cnt = ins.read(buf);
     while (cnt != -1) {
       baos.write(buf, 0, cnt);
       cnt = ins.read(buf);
     }
     data = baos.toByteArray();
   }
   finally {
     if (ins != null) {
       try {
         ins.close();
       }
       catch (Exception e) {}
     }
     if (baos != null) {
       try {
         baos.close();
       }
       catch (Exception e) {}
       baos = null;
     }
   }
   return data;
 }
 public static String GetOperatingSystemName() {
   return System.getProperty(SYSPROP_OS_NAME);
 }
 public static String GetOperatingSystemVersion() {
   return System.getProperty(SYSPROP_OS_VERSION);
 }
 public static String GetJavaVersion() {
   return System.getProperty(SYSPROP_JAVA_VERSION);
 }
 public static String GetJavaVendor() {
   return System.getProperty(SYSPROP_JAVA_VENDOR);
 }
 public static void RedirectStdOut(OutputStream outs) throws IOException {
   System.setOut(new PrintStream(outs, true));
 }
 public static void RedirectStdErr(OutputStream outs) throws IOException {
   System.setErr(new PrintStream(outs, true));
 }
 public static void RedirectStdOut(String filePath) throws IOException {
   RedirectStdOut(new FileOutputStream(filePath));
 }
 public static void RedirectStdErr(String filePath) throws IOException {
   RedirectStdErr(new FileOutputStream(filePath));
 }
 public static int Sum(int[] arr) {
   int total = 0;
   if (arr != null) {
     for (int i = 0; i < arr.length; i++) {
       total += arr[i];
     }
   }
   return total;
 }
 public static void CopyFile(String src, String dest) throws IOException {
   FileInputStream fis = null;
   FileOutputStream fos = null;
   byte[] buf;
   int len;
   try {
     fis = new FileInputStream(src);
     fos = new FileOutputStream(dest);
     buf = new byte[2048];
     len = fis.read(buf);
     while (len != -1) {
       fos.write(buf, 0, len);
       len = fis.read(buf);
     }
   } //End try block
   finally {
     if (fis != null) {
       try {
         fis.close();
       }
       catch (Exception e) {}
     }
     if (fos != null) {
       try {
         fos.close();
       }
       catch (Exception e) {}
     }
   }
 }
 public static byte[] GenerateRandomBytes(int maxLen) {
   int cnt;
   byte[] data;
   do {
     cnt = (int) (maxLen * Math.random());
   } while (cnt == 0);
   data = new byte[cnt];
   for (int i = 0; i < cnt; i++) {
     data[i] = (byte) (((int) (127 * Math.random())) * ((100 * Math.random() > 50 ? 1 : -1)));
   }
   return data;
 }
 public static boolean FileExists(String filePath) {
   File f;
   boolean exists = false;
   if (filePath != null) {
     f = new File(filePath);
     exists = f.exists();
   }
   return exists;
 }
 public static byte[] LoadDataFromFile(String filePath) throws IOException {
   byte[] data = null, buf;
   ByteArrayOutputStream baos = null;
   InputStream ins = null;
   int cnt;
   try {
     ins = new FileInputStream(filePath);
     buf = new byte[1024];
     baos = new ByteArrayOutputStream();
     cnt = ins.read(buf);
     while (cnt != -1) {
       baos.write(buf, 0, cnt);
       cnt = ins.read(buf);
     }
     data = baos.toByteArray();
   }
   finally {
     if (ins != null) {
       try {
         ins.close();
       }
       catch (Exception e) {}
     }
     if (baos != null) {
       try {
         baos.close();
       }
       catch (Exception e) {}
       baos = null;
     }
   }
   return data;
 }
 public static void StoreObject(Object target, String filePath) throws IOException {
   FileOutputStream fos = null;
   ObjectOutputStream oos = null;
   try {
     fos = new FileOutputStream(filePath);
     oos = new ObjectOutputStream(fos);
     oos.writeObject(target);
   }
   finally {
     if (oos != null) {
       try {
         oos.close();
       }
       catch (Exception e) {}
       oos = null;
     }
     if (fos != null) {
       try {
         fos.close();
       }
       catch (Exception e) {}
       fos = null;
     }
   }
 }
 public static Object LoadObject(String filePath) throws IOException, ClassNotFoundException {
   Object target = null;
   FileInputStream fis = null;
   ObjectInputStream ois = null;
   try {
     fis = new FileInputStream(filePath);
     ois = new ObjectInputStream(fis);
     target = ois.readObject();
   }
   finally {
     if (ois != null) {
       try {
         ois.close();
       }
       catch (Exception e) {}
       ois = null;
     }
     if (fis != null) {
       try {
         fis.close();
       }
       catch (Exception e) {}
       fis = null;
     }
   }
   return target;
 }
 public static byte[] GetClasspathResourceBytes(String resourcePath) throws IOException {
   byte[] bArr = null, buf;
   ByteArrayOutputStream baos = null;
   InputStream ins = null;
   int len;
   try {
     buf = new byte[2048];
     ins = SystemUtils.class.getClassLoader().getResourceAsStream(resourcePath);
     baos = new ByteArrayOutputStream();
     len = ins.read(buf);
     while (len > 0) {
       baos.write(buf, 0, len);
       len = ins.read(buf);
     }
     bArr = baos.toByteArray();
   }
   finally {
     if (ins != null) {
       try {
         ins.close();
       }
       catch (Exception e) {}
     }
     if (baos != null) {
       try {
         baos.close();
       }
       catch (Exception e) {}
       baos = null;
     }
   }
   return bArr;
 }
 public static Object[] CombineArrays(Object[] arr1, Object[] arr2) {
   Object[] combinedArr = null;
   Class arrClass;
   int arr1Len, arr2Len, totalLen;
   if (arr1 != null || arr2 != null) {
     if (arr1 != null) {
       arrClass = arr1.getClass();
     }
     else {
       arrClass = arr2.getClass();
     }
     arr1Len = (arr1 != null ? arr1.length : 0);
     arr2Len = (arr2 != null ? arr2.length : 0);
     totalLen = arr1Len + arr2Len;
     combinedArr = (Object[]) Array.newInstance(arrClass.getComponentType(), totalLen);
     if (arr1Len > 0) {
       System.arraycopy(arr1, 0, combinedArr, 0, arr1Len);
     }
     if (arr2Len > 0) {
       System.arraycopy(arr2, 0, combinedArr, arr1Len, arr2Len);
     }
   }
   return combinedArr;
 }
 public static byte[] LoadDataFromStream(InputStream ins) throws IOException {
   byte[] data = null, buf;
   ByteArrayOutputStream baos = null;
   int cnt;
   try {
     buf = new byte[1024];
     baos = new ByteArrayOutputStream();
     cnt = ins.read(buf);
     while (cnt != -1) {
       baos.write(buf, 0, cnt);
       cnt = ins.read(buf);
     }
     data = baos.toByteArray();
   }
   finally {
     if (baos != null) {
       try {
         baos.close();
       }
       catch (Exception e) {}
       baos = null;
     }
   }
   return data;
 }
 public static int GetAsciiFromByte(byte b) {
   int ascii = b & 0xFF;
   return ascii;
 }
 public static byte GetByteFromAscii(int ascii) {
   byte b = (byte) (ascii & 0x000000FFL);
   return b;
 }
 public static void Copy(InputStream src, OutputStream dest) throws IOException {
   byte[] buf;
   int len;
   buf = new byte[2048];
   len = src.read(buf);
   while (len != -1) {
     dest.write(buf, 0, len);
     len = src.read(buf);
   }
 }
 public static byte[] GenerateRandomBytesFixedLen(int len) {
   byte[] data;
   data = new byte[len];
   for (int i = 0; i < len; i++) {
     data[i] = (byte) (((int) (127 * Math.random())) * ((100 * Math.random() > 50 ? 1 : -1)));
   }
   return data;
 }

}



 </source>
   
  
 
  



Terminate a Java application

   <source lang="java">
     

import java.io.File; public class Main {

 public static void main(String[] args) {
   File file = new File("config.xml");
   int errCode = 0;
   if (!file.exists()) {
     errCode = 1;
   } else {
     errCode = 0;
   }
   // When the error code is not zero go terminate
   if (errCode > 0) {
     System.exit(errCode);
   }
 }

}




 </source>
   
  
 
  



Terminate virtual machine using System class

   <source lang="java">
    

public class Main {

 public static void main(String[] args) {
   System.exit(0);
 }

}



 </source>
   
  
 
  



Utilities relating to the version of Java in use at runtime

   <source lang="java">
    

/********************************************************************** Copyright (c) 2005 Andy Jefferson and others. All rights reserved. Licensed 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.

Contributors:

   ...
                                                                                                                                            • /

import java.util.StringTokenizer; /**

* Utilities relating to the version of Java in use at runtime.
* @version $Revision: 1.8 $
*/

public class JavaUtils {

   private static boolean versionInitialised=false;
   private static int majorVersion=1;
   private static int minorVersion=0;
   private static int isJRE14=-1;
   private static int isJRE15=-1;
   private static int isJRE16=-1;
   /**
    * Accessor for whether the JRE is 1.4 (or above). 
    * Checks for the presence of a known 1.4 class.
    * @return Whether the JRE is 1.4 or above
    */
   public static boolean isJRE1_4OrAbove()
   {
       if (isJRE14 == -1)
       {
           try
           {
               Class.forName("java.util.Currency");
               isJRE14 = 1;
           }
           catch (Exception e)
           {
               isJRE14 = 0;
           }
       }
       return isJRE14 == 1;
   }
   /**
    * Accessor for whether the JRE is 1.5 (or above).
    * Checks for the presence of a known 1.5 class.
    * @return Whether the JRE is 1.5 or above
    */
   public static boolean isJRE1_5OrAbove()
   {
       if (isJRE15 == -1)
       {
           try
           {
               Class.forName("java.util.Queue");
               isJRE15 = 1;
           }
           catch (Exception e)
           {
               isJRE15 = 0;
           }
       }
       return isJRE15 == 1;
   }
   /**
    * Accessor for whether the JRE is 1.6 (or above).
    * Checks for the presence of a known 1.6 class.
    * @return Whether the JRE is 1.6 or above
    */
   public static boolean isJRE1_6OrAbove()
   {
       if (isJRE16 == -1)
       {
           try
           {
               Class.forName("java.util.Deque");
               isJRE16 = 1;
           }
           catch (Exception e)
           {
               isJRE16 = 0;
           }
       }
       return isJRE16 == 1;
   }
   /**
    * Accessor for the major version number of the JRE.
    * @return The major version number of the JRE
    */
   public static int getJREMajorVersion()
   {
       if (!versionInitialised)
       {
           initialiseJREVersion();
       }
       return majorVersion;
   }
   /**
    * Accessor for the minor version number of the JRE.
    * @return The minor version number of the JRE
    */
   public static int getJREMinorVersion()
   {
       if (!versionInitialised)
       {
           initialiseJREVersion();
       }
       return minorVersion;
   }
   /**
    * Utility to initialise the values of the JRE major/minor version.
    * Assumes the "java.version" string is in the form "XX.YY.ZZ".
    * Works for SUN JRE"s.
    */
   private static void initialiseJREVersion()
   {
       String version = System.getProperty("java.version");
       
       // Assume that the version string is of the form XX.YY.ZZ (works for SUN JREs)
       StringTokenizer tokeniser = new StringTokenizer(version, ".");
       String token = tokeniser.nextToken();
       try
       {
           Integer ver = new Integer(token);
           majorVersion = ver.intValue();
           
           token = tokeniser.nextToken();
           ver = new Integer(token);
           minorVersion = ver.intValue();
       }
       catch (Exception e)
       {
           // Do nothing
       }
       versionInitialised = true;
   }
   
   /**
    * Check if the current version is greater or equals than the argument version.
    * @param version the version
    * @return true if the runtime version is greater equals than the argument
    */
   public static boolean isGreaterEqualsThan(String version)
   {
       boolean greaterEquals = false;
       StringTokenizer tokeniser = new StringTokenizer(version, ".");
       String token = tokeniser.nextToken();
       try
       {
           Integer ver = new Integer(token);
           int majorVersion = ver.intValue();
           token = tokeniser.nextToken();
           ver = new Integer(token);
           int minorVersion = ver.intValue();
           if (getJREMajorVersion() >= majorVersion && getJREMinorVersion() >= minorVersion)
           {
               greaterEquals = true;
           }
       }
       catch (Exception e)
       {
           // Do nothing
       }
       return greaterEquals;
   }
   /**
    * Check if the current version is equals than the argument version.
    * @param version the version
    * @return true if the runtime version is equals than the argument
    */
   public static boolean isEqualsThan(String version)
   {
       boolean equals = false;
       StringTokenizer tokeniser = new StringTokenizer(version, ".");
       String token = tokeniser.nextToken();
       try
       {
           Integer ver = new Integer(token);
           int majorVersion = ver.intValue();
           token = tokeniser.nextToken();
           ver = new Integer(token);
           int minorVersion = ver.intValue();
           if (getJREMajorVersion() == majorVersion && getJREMinorVersion() == minorVersion)
           {
               equals = true;
           }
       }
       catch (Exception e)
       {
           // Do nothing
       }
       return equals;
   }    

}



 </source>