openplanning

Làm sao lấy được phiên bản Java trong thời gian chạy

  1. System.getProperty("java.version")
  2. Runtime.version()
Về cơ bản có hai cách để lấy được phiên bản của JVM tại thời điểm chạy của chương trình Java.
  • Sử dụng giá trị của thuộc tính hệ thống java.version
  • Sử dụng phương thức tĩnh Runtime.version().

1. System.getProperty("java.version")

Phương thức System.getProperty("java.version") trả về một String mô tả phiên bản hiện tại của JVM.
Main1.java
package org.o7planning.java_14197_version;

public class Main1 {

	public static void main(String[] args) {
		String javaVersion = System.getProperty("java.version");
		System.out.println("Current JVM version: " + javaVersion);
	} 
}
Output:
Current JVM version: 20.0.2

2. Runtime.version()

Phương thức Runtime.version() trả về một đối tượng Version, thông qua đối tượng này bạn có thể biết được nhiều thông tin hơn về phiên bản hiện tại của JVM.
Main2.java
package org.o7planning.java_14197_version;

import java.lang.Runtime.Version;

public class Main2 {

	public static void main(String[] args) {
		Version currentVersion = Runtime.version();
		// Example: 20.0.2+9-78
		System.out.println("Current JVM version: " + currentVersion.toString());
		//
		int feature = currentVersion.feature(); // 20
		int interim = currentVersion.interim(); // 0
		int update = currentVersion.update(); // 2
		int patch = currentVersion.patch(); // 0
		String pre = currentVersion.pre().isPresent() ? currentVersion.pre().get() : "";
		Integer build = currentVersion.build().isPresent() ? currentVersion.build().get() : 0;// 9
		String optional = currentVersion.optional().isPresent() ? currentVersion.optional().get() : ""; // 78
		//
		System.out.println(" - feature: " + feature);
		System.out.println(" - interim: " + interim);
		System.out.println(" - update: " + update);
		System.out.println(" - patch: " + patch);
		System.out.println(" - pre: " + pre);
		System.out.println(" - build: " + build);
		System.out.println(" - optional: " + optional);
		//
		String v17 = "17.0.8+9-LTS";
		Version version17 = Version.parse(v17);
		int value = currentVersion.compareTo(version17);
		if (value == 0) {
			System.out.println("Your Java Version is equal to " + v17);
		} else if (value > 0) {
			System.out.println("Your Java Version is newer than " + v17);
		} else {
			System.out.println("Your Java Version is older than " + v17);
		}
	}
}
Output:
Current JVM version: 20.0.2+9-78
 - feature: 20
 - interim: 0
 - update: 2
 - patch: 0
 - pre: 
 - build: 9
 - optional: 78
Your Java Version is newer than 17.0.8+9-LTS
Ví dụ dưới đây cho phép bạn hiểu hơn về định dạng một phiên bản trong Java:
ShowVersionInfo.java
package org.o7planning.java_14197_version;

import java.lang.Runtime.Version;

public class ShowVersionInfo {

	public static void main(String[] args) {
		String[] versionStrings = new String[] { //
				"20.0.2+9-78", //
				"17.0.8+9-LTS", //
				"17.0.8.15+9-LTS", //
				"17.0.8.15-X+9-LTS", //
		};

		for (String versionString : versionStrings) {
			Version version = Version.parse(versionString);
			System.out.println("JVM version: " + version.toString());
			//
			int feature = version.feature();
			int interim = version.interim();
			int update = version.update();
			int patch = version.patch();
			String pre = version.pre().isPresent() ? version.pre().get() : "";
			Integer build = version.build().isPresent() ? version.build().get() : 0;
			String optional = version.optional().isPresent() ? version.optional().get() : "";
			//
			System.out.println(" - feature: " + feature);
			System.out.println(" - interim: " + interim);
			System.out.println(" - update: " + update);
			System.out.println(" - patch: " + patch);
			System.out.println(" - pre: " + pre);
			System.out.println(" - build: " + build);
			System.out.println(" - optional: " + optional);
		}
	}
}
Output:
JVM version: 20.0.2+9-78
 - feature: 20
 - interim: 0
 - update: 2
 - patch: 0
 - pre: 
 - build: 9
 - optional: 78
JVM version: 17.0.8+9-LTS
 - feature: 17
 - interim: 0
 - update: 8
 - patch: 0
 - pre: 
 - build: 9
 - optional: LTS
JVM version: 17.0.8.15+9-LTS
 - feature: 17
 - interim: 0
 - update: 8
 - patch: 15
 - pre: 
 - build: 9
 - optional: LTS
JVM version: 17.0.8.15-X+9-LTS
 - feature: 17
 - interim: 0
 - update: 8
 - patch: 15
 - pre: X
 - build: 9
 - optional: LTS
LTS: Long Term Support
J2SE SDK/JRE Version String Naming Convention: