- java.lang.Object
-
- java.lang.Runtime.Version
-
- All Implemented Interfaces:
Comparable<Runtime.Version>
- Enclosing class:
- Runtime
public static final class Runtime.Version extends Object implements Comparable<Runtime.Version>
A representation of a version string for an implementation of the Java SE Platform. A version string consists of a version number optionally followed by pre-release and build information.Version numbers
A version number,
$VNUM, is a non-empty sequence of elements separated by period characters (U+002E). An element is either zero, or an unsigned integer numeral without leading zeros. The final element in a version number must not be zero. The format is:[1-9][0-9]*((\.0)*\.[1-9][0-9]*)*The sequence may be of arbitrary length but the first three elements are assigned specific meanings, as follows:
$MAJOR.$MINOR.$SECURITY$MAJOR--- The major version number, incremented for a major release that contains significant new features as specified in a new edition of the Java SE Platform Specification, e.g., JSR 337 for Java SE 8. Features may be removed in a major release, given advance notice at least one major release ahead of time, and incompatible changes may be made when justified. The$MAJORversion number of JDK 8 is8; the$MAJORversion number of JDK 9 is9. When$MAJORis incremented, all subsequent elements are removed.$MINOR--- The minor version number, incremented for a minor update release that may contain compatible bug fixes, revisions to standard APIs mandated by a Maintenance Release of the relevant Platform Specification, and implementation features outside the scope of that Specification such as new JDK-specific APIs, additional service providers, new garbage collectors, and ports to new hardware architectures.$SECURITY--- The security level, incremented for a security update release that contains critical fixes including those necessary to improve security.$SECURITYis not reset when$MINORis incremented. A higher value of$SECURITYfor a given$MAJORvalue, therefore, always indicates a more secure release, regardless of the value of$MINOR.
The fourth and later elements of a version number are free for use by downstream consumers of this code base. Such a consumer may, e.g., use the fourth element to identify patch releases which contain a small number of critical non-security fixes in addition to the security fixes in the corresponding security release.
The version number does not include trailing zero elements; i.e.,
$SECURITYis omitted if it has the value zero, and$MINORis omitted if both$MINORand$SECURITYhave the value zero.The sequence of numerals in a version number is compared to another such sequence in numerical, pointwise fashion; e.g.,
9.9.1is less than9.10.3. If one sequence is shorter than another then the missing elements of the shorter sequence are considered to be less than the corresponding elements of the longer sequence; e.g.,9.1.2is less than9.1.2.1.Version strings
A version string,
$VSTR, consists of a version number$VNUM, as described above, optionally followed by pre-release and build information, in one of the following formats:$VNUM(-$PRE)?\+$BUILD(-$OPT)? $VNUM-$PRE(-$OPT)? $VNUM(+-$OPT)?where:
$PRE, matching([a-zA-Z0-9]+)--- A pre-release identifier. Typicallyea, for a potentially unstable early-access release under active development, orinternal, for an internal developer build.$BUILD, matching(0|[1-9][0-9]*)--- The build number, incremented for each promoted build.$BUILDis reset to1when any portion of$VNUMis incremented.$OPT, matching([-a-zA-Z0-9.]+)--- Additional build information, if desired. In the case of aninternalbuild this will often contain the date and time of the build.
A version string
10-eamatches$VNUM = "10"and$PRE = "ea". The version string10+-eamatches$VNUM = "10"and$OPT = "ea".When comparing two version strings, the value of
$OPT, if present, may or may not be significant depending on the chosen comparison method. The comparison methodscompareTo()andcompareToIgnoreOptional()should be used consistently with the corresponding methodsequals()andequalsIgnoreOptional().A short version string,
$SVSTR, often useful in less formal contexts, is a version number optionally followed by a pre-release identifier:$VNUM(-$PRE)?This is a value-based class; use of identity-sensitive operations (including reference equality (
==), identity hash code, or synchronization) on instances ofVersionmay have unpredictable results and should be avoided.- Since:
- 9
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Optional<Integer>build()Returns the build number.intcompareTo(Runtime.Version obj)Compares this version to another.intcompareToIgnoreOptional(Runtime.Version obj)Compares this version to another disregarding optional build information.booleanequals(Object obj)Determines whether thisVersionis equal to another object.booleanequalsIgnoreOptional(Object obj)Determines whether thisVersionis equal to another disregarding optional build information.inthashCode()Returns the hash code of this version.intmajor()Returns the major version number.intminor()Returns the minor version number or zero if it was not set.Optional<String>optional()Returns optional additional identifying build information.static Runtime.Versionparse(String s)Parses the given string as a valid version string containing a version number followed by pre-release and build information.Optional<String>pre()Returns the optional pre-release information.intsecurity()Returns the security version number or zero if it was not set.StringtoString()Returns a string representation of this version.List<Integer>version()Returns an unmodifiableListof the integer numerals contained in the version number.
-
-
-
Method Detail
-
parse
public static Runtime.Version parse(String s)
Parses the given string as a valid version string containing a version number followed by pre-release and build information.- Parameters:
s- A string to interpret as a version- Returns:
- The Version of the given string
- Throws:
IllegalArgumentException- If the given string cannot be interpreted as a valid versionNullPointerException- If the given string isnullNumberFormatException- If an element of the version number or the build number cannot be represented as anInteger
-
major
public int major()
Returns the major version number.- Returns:
- The major version number
-
minor
public int minor()
Returns the minor version number or zero if it was not set.- Returns:
- The minor version number or zero if it was not set
-
security
public int security()
Returns the security version number or zero if it was not set.- Returns:
- The security version number or zero if it was not set
-
version
public List<Integer> version()
Returns an unmodifiableListof the integer numerals contained in the version number. TheListalways contains at least one element corresponding to the major version number.- Returns:
- An unmodifiable list of the integer numerals contained in the version number
-
pre
public Optional<String> pre()
Returns the optional pre-release information.- Returns:
- The optional pre-release information as a String
-
build
public Optional<Integer> build()
Returns the build number.- Returns:
- The optional build number.
-
optional
public Optional<String> optional()
Returns optional additional identifying build information.- Returns:
- Additional build information as a String
-
compareTo
public int compareTo(Runtime.Version obj)
Compares this version to another.Each of the components in the version is compared in the following order of precedence: version numbers, pre-release identifiers, build numbers, optional build information.
Comparison begins by examining the sequence of version numbers. If one sequence is shorter than another, then the missing elements of the shorter sequence are considered to be less than the corresponding elements of the longer sequence.
A version with a pre-release identifier is always considered to be less than a version without one. Pre-release identifiers are compared numerically when they consist only of digits, and lexicographically otherwise. Numeric identifiers are considered to be less than non-numeric identifiers.
A version without a build number is always less than one with a build number; otherwise build numbers are compared numerically.
The optional build information is compared lexicographically. During this comparison, a version with optional build information is considered to be greater than a version without one.
- Specified by:
compareToin interfaceComparable<Runtime.Version>- Parameters:
obj- The object to be compared- Returns:
- A negative integer, zero, or a positive integer if this
Versionis less than, equal to, or greater than the givenVersion - Throws:
NullPointerException- If the given object isnull
-
compareToIgnoreOptional
public int compareToIgnoreOptional(Runtime.Version obj)
Compares this version to another disregarding optional build information.Two versions are compared by examining the version string as described in
compareTo(Version)with the exception that the optional build information is always ignored.This method provides ordering which is consistent with
equalsIgnoreOptional().- Parameters:
obj- The object to be compared- Returns:
- A negative integer, zero, or a positive integer if this
Versionis less than, equal to, or greater than the givenVersion - Throws:
NullPointerException- If the given object isnull
-
toString
public String toString()
Returns a string representation of this version.
-
equals
public boolean equals(Object obj)
Determines whether thisVersionis equal to another object.Two
Versions are equal if and only if they represent the same version string.- Overrides:
equalsin classObject- Parameters:
obj- The object to which thisVersionis to be compared- Returns:
trueif, and only if, the given object is aVersionthat is identical to thisVersion- See Also:
Object.hashCode(),HashMap
-
equalsIgnoreOptional
public boolean equalsIgnoreOptional(Object obj)
Determines whether thisVersionis equal to another disregarding optional build information.Two
Versions are equal if and only if they represent the same version string disregarding the optional build information.- Parameters:
obj- The object to which thisVersionis to be compared- Returns:
trueif, and only if, the given object is aVersionthat is identical to thisVersionignoring the optional build information
-
hashCode
public int hashCode()
Returns the hash code of this version.- Overrides:
hashCodein classObject- Returns:
- The hashcode of this version
- See Also:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
-