i already wrote a bootstrapper tool in Kotlin/Native for macOS and Windows that looks at what installed versions are available and selects the highest. So a new app image (with new jdk) can be unpacked in the background in a separate process. it'll be picked up next time the app is restarted.