Comparable<Runtime.Version>
public static final class Runtime.Version extends Object implements Comparable<Runtime.Version>
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. When an element is
incremented, all subsequent elements are removed. The format is:
[1-9][0-9]*((\.0)*\.[1-9][0-9]*)*
The sequence may be of arbitrary length but the first four elements are assigned specific meanings, as follows:
$FEATURE.$INTERIM.$UPDATE.$PATCH
$FEATURE
— The
feature-release counter, incremented for every feature release
regardless of release content. Features may be added in a feature
release; they may also be removed, if advance notice was given at least
one feature release ahead of time. Incompatible changes may be made
when justified.
$INTERIM
— The
interim-release counter, incremented for non-feature releases that
contain compatible bug fixes and enhancements but no incompatible
changes, no feature removals, and no changes to standard APIs.
$UPDATE
— The update-release
counter, incremented for compatible update releases that fix security
issues, regressions, and bugs in newer features.
$PATCH
— The emergency
patch-release counter, incremented only when it's necessary to produce
an emergency release to fix a critical issue.
The fifth and later elements of a version number are free for use by platform implementors, to identify implementor-specific patch releases.
A version number never has trailing zero elements. If an element and all those that follow it logically have the value zero then all of them are omitted.
The sequence of numerals in a version number is compared to another
such sequence in numerical, pointwise fashion; e.g.,
10.0.4
is less than 10.1.2
. 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., 10.0.2
is less than 10.0.2.1
.
A version string, $VSTR
, is 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. Typically ea
, for a
potentially unstable early-access release under active development, or
internal
, for an internal developer build.
$BUILD
, matching
(0|[1-9][0-9]*)
— The build number, incremented for each promoted
build. $BUILD
is reset to 1
when any portion of
$VNUM
is incremented.
$OPT
, matching ([-a-zA-Z0-9.]+)
— Additional build information, if desired. In the case of an
internal
build this will often contain the date and time of the
build.
A version string 10-ea
matches $VNUM = "10"
and
$PRE = "ea"
. The version string 10+-ea
matches
$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 methods compareTo()
and compareToIgnoreOptional()
should be used consistently with the
corresponding methods equals()
and equalsIgnoreOptional()
.
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 of
Version
may have unpredictable results and should be avoided.
Modifier and Type | Method | Description |
---|---|---|
java.util.Optional<Integer> |
build() |
Returns the build number.
|
int |
compareTo(Runtime.Version obj) |
Compares this version to another.
|
int |
compareToIgnoreOptional(Runtime.Version obj) |
Compares this version to another disregarding optional build
information.
|
boolean |
equals(Object obj) |
Determines whether this
Version is equal to another object. |
boolean |
equalsIgnoreOptional(Object obj) |
Determines whether this
Version is equal to another
disregarding optional build information. |
int |
feature() |
Returns the value of the feature element of
the version number.
|
int |
hashCode() |
Returns the hash code of this version.
|
int |
interim() |
Returns the value of the interim element of
the version number, or zero if it is absent.
|
int |
major() |
Deprecated.
As of Java SE 10, the first element of a version
number is not the major-release number but the feature-release
counter, incremented for every time-based release.
|
int |
minor() |
Deprecated.
As of Java SE 10, the second element of a version
number is not the minor-release number but the interim-release
counter, incremented for every interim release.
|
java.util.Optional<String> |
optional() |
Returns optional additional identifying build
information.
|
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.
|
int |
patch() |
Returns the value of the patch element of the
version number, or zero if it is absent.
|
java.util.Optional<String> |
pre() |
Returns the optional pre-release information.
|
int |
security() |
Deprecated.
As of Java SE 10, the third element of a version
number is not the security level but the update-release counter,
incremented for every update release.
|
String |
toString() |
Returns a string representation of this version.
|
int |
update() |
Returns the value of the update element of the
version number, or zero if it is absent.
|
java.util.List<Integer> |
version() |
Returns an unmodifiable
List of the integers
represented in the version number. |
public static Runtime.Version parse(String s)
s
- A string to interpret as a versionIllegalArgumentException
- If the given string cannot be interpreted as a valid
versionNullPointerException
- If the given string is null
NumberFormatException
- If an element of the version number or the build number
cannot be represented as an Integer
public int feature()
public int interim()
public int update()
public int patch()
@Deprecated(since="10") public int major()
@Deprecated(since="10") public int minor()
interim()
method in preference to this method. For compatibility,
this method returns the value of the interim
element, or zero if it is absent.@Deprecated(since="10") public int security()
update()
method in preference to this method. For compatibility, this method
returns the value of the update element, or
zero if it is absent.public java.util.List<Integer> version()
List
of the integers
represented in the version number.
The List
always contains at least one element corresponding to
the feature version number.public java.util.Optional<String> pre()
public java.util.Optional<Integer> build()
public java.util.Optional<String> optional()
public int compareTo(Runtime.Version obj)
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.
compareTo
in interface Comparable<Runtime.Version>
obj
- The object to be comparedVersion
is less than, equal to, or greater than the
given Version
NullPointerException
- If the given object is null
public int compareToIgnoreOptional(Runtime.Version obj)
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()
.
obj
- The object to be comparedVersion
is less than, equal to, or greater than the
given Version
NullPointerException
- If the given object is null
public String toString()
public boolean equals(Object obj)
Version
is equal to another object.
Two Version
s are equal if and only if they represent the
same version string.
equals
in class Object
obj
- The object to which this Version
is to be comparedtrue
if, and only if, the given object is a
Version
that is identical to this Version
Object.hashCode()
,
HashMap
public boolean equalsIgnoreOptional(Object obj)
Version
is equal to another
disregarding optional build information.
Two Version
s are equal if and only if they represent the
same version string disregarding the optional build information.
obj
- The object to which this Version
is to be comparedtrue
if, and only if, the given object is a
Version
that is identical to this Version
ignoring the optional build informationpublic int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)