Why java version at runtime
Sometimes you need to execute some code conditionally based on the current executing java version. For example, there is some functionality whose code was different on an earlier java release but on later releases it was optimized as per the new features introduced in java itself.
This requires that you determine the version of java during program execution and execute code according to it. This post will list down different ways in which this is possible
Using java.version system property
Java provides a property java.version which returns the version of java runtime, that is, the environment in which the current code is executing. Example,
public class JavaVersionDemo {
public static void main(String[] args) {
String version = System.getProperty("java.version");
System.out.print("Java version is : " + version);
}
}
Above code produces following output
Java version is : 1.8.0_51
This means that the current java version is 1.8.0 and an update of 51. Value separated with an underscore represents an update release.
Using java.runtime.version system property
Value of this property includes the product version and an identifier of product build. This identifier is separated from product version by a “-“(hyphen). Example,
public class JavaVersionDemo {
public static void main(String[] args) {
String version = System.getProperty("java.runtime.version");
System.out.print("Java version is : " + version);
}
}
Above code produces following output
Java version is : 1.8.0_51-b16
This means that the current java version is 1.8.0 with an update of 51 and its build number is b16.
Value separated with an underscore represents an update release while that separated with a hyphen(-) is the build number.
For java versions 8 and above, underscore is replaced with a +
. Thus, above code when executed on Java 11, produces below result.
Java version is : 11.0.2+9
Using java.lang.Runtime.Version class
Java 9 introduced Version
which is a static nested class of java.lang.Runtime
and provides the version details of the java runtime enviroment.
This class can be used to extract the version information at runtime or during execution. In order to get an instance of this class, use static
method version()
of java.lang.Runtime
class.
Version value returned by this class can be divided into 4 numeric values separated by dots(.) as
FEATURE.INTERIM.UPDATE.PATCH
where,
Feature is the main release and contains new features. This value can be retrieved by using feature
method of Runtime.Version
.
Interim contains the bug fixes and enhancements. interim
method of Runtime.Version
returns this value.
Update means that it contains security issue fixes and bug fixes. This value can be retrieved by using update
method of Runtime.Version
.
Patch contains emergency fixes for critical bugs. There is a patch
method in Runtime.Version
to get this value.
public class JavaVersionDemo {
public static void main(String[] args) {
// get version instance
Version version = Runtime.version();
System.out.println("Runtime version");
// print string representation of version
System.out.println(version.toString());
System.out.println("Creating version using individual components");
// get individual version components and join them
System.out.println(version.feature() + "." + version.interim() + "."
+ version.update() + "." + version.patch());
}
}
Above code produces below output
Runtime version
11.0.2+9
Creating version using individual components
11.0.2.0
where +9 means 9 is the update version of 11.0.2 release.
Hope this post was helpful. Hit the clap below to like the post.