Java 10 - Time Based Release Versioning

JEP 322 − Time-Based Release Versioning

From Java 10 onwards, Oracle has introduced a strict time based release versioning model for Java releases. Now Java will have a major release after every six months. Java 10 was released in Mar,2018 and moving onwards, all major versions are planned to release in Mar and Sep months of coming years. Releases are further categoried into three broad categories.

  • Feature Release − A Feature Release contains language specific features, JVM features, New/Improved APIs, Removal/Deprecation of APIs. Time of these feature releases is fixed and there is no constraint on features to be included in a particular release. If a under development feature is not a part of latest release then it will be planned in next release.

  • Update Release − An Update Release includes bug fixes, security issue fix, regression fixes etc. Each update release is planned per quarter in Jan, April, July and Oct months. Each Feature release will receive two Update releases before next feature release is announced.

  • Long Term Support(LTS) Release − Long term support release will be announced after every three years starting from Sep, 2018. Oracle will provide support and updates for this release for next three years. This release is primarily for Corporates using Java in production deployments.

Version Format

A version now follows the following format.



  • $FEATURE − This number denotes the major feature release and will get incremented by 1 after every Feature Release. For Java 10 it is 10.

  • $INTERIM − This number denotes any non-feature, non-update release which contains bug fixes and enhancements. This release is not having any incompatible changes, any API removal or change to standard API. A Feature release, will have this counter as 0.

  • $UPDATE − This number denotes the Update release done after a Feature Release. For example, an update release of Java in Apr 2018 is JDK 10.0.1 and for July 2018 is JDK 10.0.2 and so on.

  • $PATCH − This number denotes any emergency release incremented only in case an critical issue is to be promoted on emergent basis.


Following Program shows the versioning details of JAVA 10.

public class Tester {
   public static void main(String[] args) {
      Runtime.Version version = Runtime.version();
      System.out.printf(" feature: %s%n interim: %s%n update: %s%n patch: %s%n",


It will print the following output.

feature: 10
interim: 0
update: 2
patch: 0