One thing I still miss in JVM is bundling the app into one executable binary, like others do (Go, Nim, Rust). I don't mean AOT compilation like GraalVM does, just either bundling needed JVM modules like jlink does (aka static) or depend on local pre-installed JVM (aka dynamic).
Yes, there's been jlink for a long time, but it still generates a folder, not a single file.
There is jpackage, but it generates installers for various platforms, not an executable binary.