Use
[java.lang.Runtime.Version](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runtime.Version.html)
to check the version of debugee.
Currently `checkVMVersion()` in `sun.jvm.hotspot.runtime.VM` has following code
to check the version of debugee.
if (saVersion.indexOf('-') == saVersion.lastIndexOf('-') &&
vmVersion.indexOf('-') == vmVersion.lastIndexOf('-')) {
// Throw exception if different release versions:
// <major>.<minor>-b<n>
throw new VMVersionMismatchException(saVersion, vmRelease);
} else {
// Otherwise print warning to allow mismatch not release versions
// during development.
System.err.println("WARNING: Hotspot VM version " + vmRelease +
" does not match with SA version " + saVersion +
"." + " You may see unexpected results. ");
}
It seems to expect to allow the deference in option string only.
For example, `saVersion` is "17+35", and `vmVersion` is "17+35-2724", then it
should be allowed because release version (17+35) is same. However current code
would not do so.
I guess this code is not based on [JEP 223](https://openjdk.java.net/jeps/223)
(New Version-String Scheme) because the comment says "<major>.<minor>-b<n>".
Fortunately we have `Runtime.Version` to handle version strings. We should
refactor with it.
-------------
Commit messages:
- 8274670: Improve version string handling in SA
Changes: https://git.openjdk.java.net/jdk/pull/5797/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5797&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8274670
Stats: 18 lines in 2 files changed: 1 ins; 1 del; 16 mod
Patch: https://git.openjdk.java.net/jdk/pull/5797.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/5797/head:pull/5797
PR: https://git.openjdk.java.net/jdk/pull/5797