Java8 以前
システムプロパティから java.version
のキーで取得できます。
String version = System.getProperty("java.version");
Java9からは表記が変わるので注意が必要です。
- Java8 まで:1.6.0_23、1.7.0、1.7.0_80、1.8.0_211
- Java9 から:9.0.1、11.0.4、12、12.0.1
ちなみに、VM のバージョンなどは以下のように取得できます。
String java_vm_name = System.getProperty("java.vm.name"); String java_vm_version = System.getProperty("java.vm.version"); String java_vm_info = System.getProperty("java.vm.info");
Java9 で入った Runtime.Version
Java9 からは Runtime.Version クラスが追加されているため以下のように取得できます。
Runtime.Version v = Runtime.version();
System.out.println("version:" + v.toString());
例えば、手元の Java15 では以下のように表示されます。
- システムプロパティ(
java.version
) :version:15.0.1
- Runtime.Version :
version:15.0.1+9
Runtime.Version
からは以下のようにそれぞれの値を取得することもできます。
System.out.println("feature:" + v.feature()); // major() on Java9 System.out.println("interim:" + v.interim()); // interim() on Java9 System.out.println("update:" + v.update()); // security() on Java9 System.out.println("patch:" + v.patch());
compareTo()
や parse()
や equals()
などのメソッドも付いています。
VersionProps
Runtime.version()
で取得できる Runtime.Version
は、VersionProps
の値から設定されます。
このVersionProps
では、以下のようにシステムプロパティの値の初期化も行っています。
class VersionProps { // ... public static void init(Map<String, String> props) { props.put("java.version", java_version); props.put("java.version.date", java_version_date); props.put("java.runtime.version", java_runtime_version); props.put("java.runtime.name", java_runtime_name); if (!VENDOR_VERSION.isEmpty()) props.put("java.vendor.version", VENDOR_VERSION); props.put("java.class.version", CLASSFILE_MAJOR_MINOR); props.put("java.specification.version", VERSION_SPECIFICATION); props.put("java.specification.name", "Java Platform API Specification"); props.put("java.specification.vendor", "Oracle Corporation"); props.put("java.vendor", VENDOR); props.put("java.vendor.url", VENDOR_URL); props.put("java.vendor.url.bug", VENDOR_URL_BUG); } }