
leap.lang.Java Maven / Gradle / Ivy
/*
* Copyright 2012 the original author or authors.
*
* 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.
*/
package leap.lang;
/**
* Java language specification utility.
*/
public class Java {
/**
*
* The {@code java.specification.version} System Property. Java Runtime Environment specification version.
*
*
* Defaults to {@code null} if the runtime does not have security access to read this property or the property does
* not exist.
*
*
* This value is initialized when the class is loaded. If {@link System#setProperty(String,String)} or
* {@link System#setProperties(java.util.Properties)} is called after this class is loaded, the value will be out of
* sync with that System property.
*
*
* @since Java 1.3
*/
public static final String JAVA_SPECIFICATION_VERSION = System.getProperty("java.specification.version");
private static final Version JAVA_SPECIFICATION_VERSION_ENUM = Version.get(JAVA_SPECIFICATION_VERSION);
/**
* Returns Current Java Runtime Environment specification version.
*/
public static Version version() {
return JAVA_SPECIFICATION_VERSION_ENUM;
}
/**
*
* Is the Java version at least the requested version.
*
*
* Example input:
*
*
* - {@code 1.2f} to test for Java 1.2
* - {@code 1.31f} to test for Java 1.3.1
*
*
* @param requiredVersion the required version, for example 1.31f
* @return {@code true} if the actual version is equal or greater than the required version
*/
public static boolean isVersionAtLeast(Version requiredVersion) {
return version().atLeast(requiredVersion);
}
/**
*
* An enum representing all the versions of the Java specification. This is intended to mirror available values from
* the java.specification.version System property.
*
*/
//from apache commons-lang3
public enum Version {
/**
* The Java version reported by Android. This is not an official Java version number.
*/
JAVA_0_9(1.5f, "0.9"),
/**
* Java 1.1.
*/
JAVA_1_1(1.1f, "1.1"),
/**
* Java 1.2.
*/
JAVA_1_2(1.2f, "1.2"),
/**
* Java 1.3.
*/
JAVA_1_3(1.3f, "1.3"),
/**
* Java 1.4.
*/
JAVA_1_4(1.4f, "1.4"),
/**
* Java 1.5.
*/
JAVA_1_5(1.5f, "1.5"),
/**
* Java 1.6.
*/
JAVA_1_6(1.6f, "1.6"),
/**
* Java 1.7.
*/
JAVA_1_7(1.7f, "1.7"),
/**
* Java 1.8.
*/
JAVA_1_8(1.8f, "1.8");
/**
* The float value.
*/
private float value;
/**
* The standard name.
*/
private String name;
/**
* Constructor.
*
* @param value the float value
* @param name the standard name, not null
*/
Version(final float value, final String name) {
this.value = value;
this.name = name;
}
//-----------------------------------------------------------------------
/**
*
* Whether this version of Java is at least the version of Java passed in.
*
*
*
* For example:
* {@code myVersion.atLeast(JavaVersion.JAVA_1_4)}
*
*
* @param requiredVersion the version to check against, not null
* @return true if this version is equal to or greater than the specified version
*/
public boolean atLeast(Version requiredVersion) {
return this.value >= requiredVersion.value;
}
/**
* Transforms the given string with a Java version number to the corresponding constant of this enumeration
* class. This method is used internally.
*
* @param nom the Java version as string
* @return the corresponding enumeration constant or null if the version is unknown
*/
// helper for static importing
static Version getJavaVersion(final String nom) {
return get(nom);
}
/**
* Transforms the given string with a Java version number to the corresponding constant of this enumeration
* class. This method is used internally.
*
* @param nom the Java version as string
* @return the corresponding enumeration constant or null if the version is unknown
*/
static Version get(final String nom) {
if ("0.9".equals(nom)) {
return JAVA_0_9;
} else if ("1.1".equals(nom)) {
return JAVA_1_1;
} else if ("1.2".equals(nom)) {
return JAVA_1_2;
} else if ("1.3".equals(nom)) {
return JAVA_1_3;
} else if ("1.4".equals(nom)) {
return JAVA_1_4;
} else if ("1.5".equals(nom)) {
return JAVA_1_5;
} else if ("1.6".equals(nom)) {
return JAVA_1_6;
} else if ("1.7".equals(nom)) {
return JAVA_1_7;
} else if ("1.8".equals(nom)) {
return JAVA_1_8;
} else {
return null;
}
}
//-----------------------------------------------------------------------
/**
*
* The string value is overridden to return the standard name.
*
*
*
* For example, "1.5"
.
*
*
* @return the name, not null
*/
@Override
public String toString() {
return name;
}
}
protected Java() {
}
}