/**
* Alipay.com Inc.
* Copyright (c) 2004-2012 All Rights Reserved.
*/
package com.alipay.zdal.datasource.resource.util.platform;
import com.alipay.zdal.datasource.resource.util.ThrowableHandler;
/**
* Provides common access to specifics about the version of <em>Java</em>
* that a virtual machine supports.
*
* <p>Determines the version of the <em>Java Virtual Machine</em> by checking
* for the availablity of version specific classes.<p>
*
* <p>Classes are loaded in the following order:
* <ol>
* <li><tt>java.lang.Enum</tt> was introduced in JDK 1.5</li>
* <li><tt>java.lang.StackTraceElement</tt> was introduced in JDK 1.4</li>
* <li><tt>java.lang.StrictMath</tt> was introduced in JDK 1.3</li>
* <li><tt>java.lang.ThreadLocal</tt> was introduced in JDK 1.2</li>
* <li><tt>java.lang.Void</tt> was introduced in JDK 1.1</li>
* </ol>
* </p>
*
* @author ����
* @version $Id: Java.java, v 0.1 2014-1-6 ����05:43:14 Exp $
*/
public final class Java {
/** Prevent instantiation */
private Java() {
}
/** Java version 1.0 token */
public static final int VERSION_1_0 = 0x01;
/** Java version 1.1 token */
public static final int VERSION_1_1 = 0x02;
/** Java version 1.2 token */
public static final int VERSION_1_2 = 0x03;
/** Java version 1.3 token */
public static final int VERSION_1_3 = 0x04;
/** Java version 1.4 token */
public static final int VERSION_1_4 = 0x05;
/** Java version 1.5 token */
public static final int VERSION_1_5 = 0x06;
/**
* Private to avoid over optimization by the compiler.
*
* @see #getVersion() Use this method to access this final value.
*/
private static final int VERSION;
/** Initialize VERSION. */
static {
// default to 1.0
int version = VERSION_1_0;
try {
// check for 1.1
Class.forName("java.lang.Void");
version = VERSION_1_1;
// check for 1.2
Class.forName("java.lang.ThreadLocal");
version = VERSION_1_2;
// check for 1.3
Class.forName("java.lang.StrictMath");
version = VERSION_1_3;
// check for 1.4
Class.forName("java.lang.StackTraceElement");
version = VERSION_1_4;
// check for 1.5
Class.forName("java.lang.Enum");
version = VERSION_1_5;
} catch (ClassNotFoundException e) {
ThrowableHandler.add(e);
}
VERSION = version;
}
/**
* Return the version of <em>Java</em> supported by the VM.
*
* @return The version of <em>Java</em> supported by the VM.
*/
public static int getVersion() {
return VERSION;
}
/**
* Returns true if the given version identifer is equal to the
* version identifier of the current virtuial machine.
*
* @param version The version identifier to check for.
* @return True if the current virtual machine is the same version.
*/
public static boolean isVersion(final int version) {
return VERSION == version;
}
/**
* Returns true if the current virtual machine is compatible with
* the given version identifer.
*
* @param version The version identifier to check compatibility of.
* @return True if the current virtual machine is compatible.
*/
public static boolean isCompatible(final int version) {
// if our vm is the same or newer then we are compatible
return VERSION >= version;
}
}