The simplest way to get the Java version is by running the java -version
command in your terminal application or Windows command prompt. If Java is installed and available on your path you can get information like below.
java -version
java version "17" 2021-09-14 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
Using System Properties
But if you want to get Java version from your Java class or application you can obtain the Java version by calling the System.getProperty()
method and provide the property key
as argument. Here are some property keys
that related to Java version that you can read from the system properties.
package org.kodejava.lang;
public class JavaVersion {
public static void main(String[] args) {
String version = System.getProperty("java.version");
String versionDate = System.getProperty("java.version.date");
String runtimeVersion = System.getProperty("java.runtime.version");
String vmVersion = System.getProperty("java.vm.version");
String classVersion = System.getProperty("java.class.version");
String specificationVersion = System.getProperty("java.specification.version");
String vmSpecificationVersion = System.getProperty("java.vm.specification.version");
System.out.println("java.version: " + version);
System.out.println("java.version.date: " + versionDate);
System.out.println("java.runtime.version: " + runtimeVersion);
System.out.println("java.vm.version: " + vmVersion);
System.out.println("java.class.version: " + classVersion);
System.out.println("java.specification.version: " + specificationVersion);
System.out.println("java.vm.specification.version: " + vmSpecificationVersion);
}
}
Running the code above give you output like the following:
java.version: 17
java.version.date: 2021-09-14
java.runtime.version: 17+35-LTS-2724
java.vm.version: 17+35-LTS-2724
java.class.version: 61.0
java.specification.version: 17
java.vm.specification.version: 17
Using Runtime.version()
Since JDK 9 we can use Runtime.version()
to get Java runtime version. The feature()
, interim()
, update
and patch()
methods of the Runtime.Version
class are added in JDK 10. These methods is a replacement for the major()
, minor()
and security()
methods of JDK 9.
Below is the code snippet that demonstrate the Runtime.version()
.
package org.kodejava.lang;
public class RuntimeVersion {
public static void main(String[] args) {
System.out.println("Version: " + Runtime.version());
System.out.println("Feature: " + Runtime.version().feature());
System.out.println("Interim: " + Runtime.version().interim());
System.out.println("Update: " + Runtime.version().update());
System.out.println("Patch: " + Runtime.version().patch());
System.out.println("Pre: " + Runtime.version().pre().orElse(""));
System.out.println("Build: " + Runtime.version().build().orElse(null));
System.out.println("Optional: " + Runtime.version().optional().orElse(""));
}
}
Running the code snippet above produce the following output:
Version: 17+35-LTS-2724
Feature: 17
Interim: 0
Update: 0
Patch: 0
Pre:
Build: 35
Optional: LTS-2724
Here are the summary of outputs running the above code using some JDKs installed on my machine.
Version | Feature | Interim | Update | Patch | Pre | Build | Optional |
---|---|---|---|---|---|---|---|
10.0.2+13 | 10 | 0 | 2 | 0 | 13 | ||
11.0.6+8-LTS | 11 | 0 | 6 | 0 | 8 | LTS | |
12.0.2+10 | 12 | 0 | 2 | 0 | 10 | ||
13.0.2+8 | 13 | 0 | 2 | 0 | 8 | ||
14+36-1461 | 14 | 0 | 0 | 0 | 36 | 1461 | |
15.0.2+7-27 | 15 | 0 | 2 | 0 | 7 | 27 | |
17+35-LTS-2724 | 17 | 0 | 0 | 0 | 35 | LTS-2724 |