//
// ========================================================================
// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under
// the terms of the Eclipse Public License 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0
//
// This Source Code may also be made available under the following
// Secondary Licenses when the conditions for such availability set
// forth in the Eclipse Public License, v. 2.0 are satisfied:
// the Apache License v2.0 which is available at
// https://www.apache.org/licenses/LICENSE-2.0
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//

package org.eclipse.jetty.util;

Java Version Utility class.

Parses java versions to extract a consistent set of version parts

/** * Java Version Utility class. * <p>Parses java versions to extract a consistent set of version parts</p> */
public class JavaVersion { // IMPORTANT NOTE: This class cannot use Logging, as this class is used by jetty-start
Context attribute that can be set to target a different version of the jvm than the current runtime. Acceptable values should correspond to those returned by JavaVersion.getPlatform().
/** * Context attribute that can be set to target a different version of the jvm than the current runtime. * Acceptable values should correspond to those returned by JavaVersion.getPlatform(). */
public static final String JAVA_TARGET_PLATFORM = "org.eclipse.jetty.javaTargetPlatform"; public static final JavaVersion VERSION = parse(System.getProperty("java.version")); public static JavaVersion parse(String v) { // $VNUM is a dot-separated list of integers of arbitrary length String[] split = v.split("[^0-9]"); int len = Math.min(split.length, 3); int[] version = new int[len]; for (int i = 0; i < len; i++) { try { version[i] = Integer.parseInt(split[i]); } catch (Throwable e) { len = i - 1; break; } } return new JavaVersion( v, (version[0] >= 9 || len == 1) ? version[0] : version[1], version[0], len > 1 ? version[1] : 0, len > 2 ? version[2] : 0); } private final String version; private final int platform; private final int major; private final int minor; private final int micro; private JavaVersion(String version, int platform, int major, int minor, int micro) { this.version = version; this.platform = platform; this.major = major; this.minor = minor; this.micro = micro; }
Returns:the string from which this JavaVersion was created
/** * @return the string from which this JavaVersion was created */
public String getVersion() { return version; }

Returns the Java Platform version, such as 8 for JDK 1.8.0_92 and 9 for JDK 9.2.4.

Returns:the Java Platform version
/** * <p>Returns the Java Platform version, such as {@code 8} for JDK 1.8.0_92 and {@code 9} for JDK 9.2.4.</p> * * @return the Java Platform version */
public int getPlatform() { return platform; }

Returns the major number version, such as 1 for JDK 1.8.0_92 and 9 for JDK 9.2.4.

Returns:the major number version
/** * <p>Returns the major number version, such as {@code 1} for JDK 1.8.0_92 and {@code 9} for JDK 9.2.4.</p> * * @return the major number version */
public int getMajor() { return major; }

Returns the minor number version, such as 8 for JDK 1.8.0_92 and 2 for JDK 9.2.4.

Returns:the minor number version
/** * <p>Returns the minor number version, such as {@code 8} for JDK 1.8.0_92 and {@code 2} for JDK 9.2.4.</p> * * @return the minor number version */
public int getMinor() { return minor; }

Returns the micro number version (aka security number), such as 0 for JDK 1.8.0_92 and 4 for JDK 9.2.4.

Returns:the micro number version
/** * <p>Returns the micro number version (aka security number), such as {@code 0} for JDK 1.8.0_92 and {@code 4} for JDK 9.2.4.</p> * * @return the micro number version */
public int getMicro() { return micro; } @Override public String toString() { return version; } }