Java Version – Time-Based Release Versioning

Lokesh Gupta

Starting from Java 10, Oracle has adapted time based version-string scheme [JEP 322]. The new time-based model has replaced the feature-based, multi-year release model of the past. Unlike the old releases, the new time-based releases will not be delayed and features will be released every six months, with no constraints on what features can go out in the releases.

The updates releases will occur every quarter (Jan, April, July, Oct). Update releases will be strictly limited to fixes of security issues, regressions, and bugs in newer features. Going by schedule planning, we can say that each feature release will receive two updates before the next feature release.

Java version format

If you run command java -version in comaand prompt/terminal the you will get outout version information like this:

C:\Users\Lokesh>java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

The new format of the version number is:

$FEATURE.$INTERIM.$UPDATE.$PATCH

Counter Name Description
$FEATURE It will be incremented every 6 months and based on feature release versions e.g: JDK 10, JDK 11. (Formerly $MAJOR.)
$INTERIM Usually this will be zero, as there will be no interim release in a six month period. It will be 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. (Formerly $MINOR.)
$UPDATE It will be incremented for compatible update releases that fix security issues, regressions, and bugs in newer features. (Formerly $SECURITY.)
$PATCH It will be incremented only when it’s necessary to produce an emergency release to fix a critical issue.
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.

Java Version API

Runtime.version() can be used to get version counter values programmatically. e.g.

Version version = Runtime.version();
version.feature();
version.interim();
version.update();
version.patch();

Output:

10
0
1
0

Parse existing version

Version version = Runtime.Version.parse("10.0.1");

version.feature();
version.interim();
version.update();
version.patch();

Long Term Release (LTS)

It is mainly for enterprise customers. LTS version of the products will offer premier and sustained support from Oracle and it will be targeted every 3 years. Also, updates for these releases will be available for at least three years.

This will cause “LTS” to be displayed prominently in the output of java –versions. e.g. e.g., 11.0.2+13-LTS

Happy Learning !!

Ref: http://openjdk.java.net/jeps/322

Comments

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.

Our Blogs

REST API Tutorial

Dark Mode

Dark Mode