You can ship the JVM with your code (uber jar), so no paths to set up. And now with jlink, you can even strip it down to only parts of the JVM that your code uses, to optimize size.
Re:Kafka Removing Zookeeper Dependency
by lostapathy on Sunday May 17, 2020 @12:28PM
(#23213043)
From the perspective of a java developer, this makes total sense.
From the perspective of a sysadmin who just wants to deploy an app that ships as a jar and doesn't come pre-packaged with any convenience features like you mentioned, it's an awful lot to work out and learn.
Including the JVM. The paths alone.