/* * 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 spock.util.environment; import org.spockframework.util.VersionNumber; /** * Provides information on the current JVM, such as its Java version. */ public class Jvm { private final String javaVersion; private final String javaSpecVersion; private final VersionNumber javaSpecVersionNumber; private Jvm() { javaVersion = System.getProperty("java.version"); javaSpecVersion = System.getProperty("java.specification.version"); javaSpecVersionNumber = VersionNumber.parse(javaSpecVersion); } /** * The Java version, as returned by the {@code java.version} system property. * Examples for valid values (for Oracle/OpenJDK) are {@code "1.6.0_22"} and {@code "1.7.0_07"}. * * @return the Java version, as returned by the {@code java.version} system property */ public String getJavaVersion() { return javaVersion; } /** * The Java specification version, as returned by the {@code java.specification.version} system property. * Examples for valid values are {@code "1.6"} and {@code "1.7"}. * * @return the Java specification version, as returned by the {@code java.specification.version} system property */ public String getJavaSpecificationVersion() { return javaSpecVersion; } /** * Tells whether the Java version is 5. * * @return whether the Java version is 5 */ public boolean isJava5() { return javaSpecVersion.equals("1.5"); } /** * Tells whether the Java version is 6. * * @return whether the Java version is 6 */ public boolean isJava6() { return javaSpecVersion.equals("1.6"); } /** * Tells whether the Java version is 7. * * @return whether the Java version is 7 */ public boolean isJava7() { return javaSpecVersion.equals("1.7"); } /** * Tells whether the Java version is 8. * * @return whether the Java version is 8 */ public boolean isJava8() { return javaSpecVersion.equals("1.8"); } /** * Tells whether the Java version is 9. * * @return whether the Java version is 9 */ public boolean isJava9() { return javaSpecVersion.equals("1.9"); } /** * Tells whether the Java version is compatible with Java 5. * * @return whether the Java version is compatible with Java 5 */ public boolean isJava5Compatible() { return javaSpecVersionNumber.getMajor() > 1 || javaSpecVersionNumber.getMinor() >= 5; } /** * Tells whether the Java version is compatible with Java 6. * * @return whether the Java version is compatible with Java 6 */ public boolean isJava6Compatible() { return javaSpecVersionNumber.getMajor() > 1 || javaSpecVersionNumber.getMinor() >= 6; } /** * Tells whether the Java version is compatible with Java 7. * * @return whether the Java version is compatible with Java 7 */ public boolean isJava7Compatible() { return javaSpecVersionNumber.getMajor() > 1 || javaSpecVersionNumber.getMinor() >= 7; } /** * Tells whether the Java version is compatible with Java 8. * * @return whether the Java version is compatible with Java 8 */ public boolean isJava8Compatible() { return javaSpecVersionNumber.getMajor() > 1 || javaSpecVersionNumber.getMinor() >= 8; } /** * Tells whether the Java version is compatible with Java 9. * * @return whether the Java version is compatible with Java 9 */ public boolean isJava9Compatible() { return javaSpecVersionNumber.getMajor() > 1 || javaSpecVersionNumber.getMinor() >= 9; } /** * Returns the current JVM. * * @return the current JVM */ public static Jvm getCurrent() { return new Jvm(); } }