How to know JDK version from within Java code
4 Answers 4
I presume you mean just the Java version, in which case try this:
String version = System.getProperty("java.version");
Comments
Since java 9
System.out.println(Runtime.version());
Prints something like 17.0.2+8-86
or if you need more
System.out.println("Java Feature Version = " + Runtime.version().feature());
System.out.println("Java Interim Version = " + Runtime.version().interim());
System.out.println("Java Update Version = " + Runtime.version().update());
System.out.println("Java Version Build = " + Runtime.version().build().map(String::valueOf).orElse("Unknown"));
System.out.println("Java Version Pre-Release Info = " + Runtime.version().pre().orElse("N/A"));
Prints
Java Feature Version = 17
Java Interim Version = 0
Java Update Version = 2
Java Version Build = 8
Java Version Pre-Release Info = N/A
Comments
Relying on the java.version string for anything else than showing to a human is fragile and will break if running on another Java implementation.
The only reliable way programatically is to use reflection to carefully ask if a given facility is available, and then select the appropriate code accordingly.
13 Comments
Float.valueOf like @JesseBarnum. This failed for me because 1.8>=1.8 returned false for me, due to round-off errors. Use .compareTo("1.8")>=0 instead.If you need to know the bit version(32bit or 64 bit) as well, and you are running a hotSpot JVM, you can try this code:
System.getProperty("sun.arch.data.model")
No grantee that it will work for other Java implementaions rather than hotSpot.