Then what does the "java" command do exactly, if not run Java applications in some kind of runtime environment?
> It is the responsibility of the vendor to deliver the application along with any dependency, including a Java runtime.
Honestly, this appears to destroy a fundamental promise that Java made when it was first released: Write once, run anywhere. And not just in the present, but for future systems as well. Are we now expected to have vendors provide 30 different downloads tailored for every operating system and architecture combination possible? And if that application needs to be run in 10, 20 years when the packages that were made can no longer run directly?
It seems like a fairly dismal state of affairs, to me.
> 1. The software ecosystem now discourages system-wide third-party runtimes. On the desktop, the app store model rules
Does "desktop" only include Mac OS? Neither on Linux nor Windows does the "app store model" rule. They exist, but are more like an obscure "you can also do it this way" method rather than the norm.
> on the server, containers are popular -- both are much more friendly to an embedded runtime.
Containers are indeed popular, and maybe an embedded-JRE makes sense. I personally stick with installing whatever JRE package comes with Debian, myself; run them the traditional way.
It certainly clears up a lot of uncertainty about the security of whatever Java runtime is being used, when a distribution (eg, Debian, Fedora, RHEL, etc) with a reputable security team takes care of that issue for me. The Java runtime gets updated, my servers restart, instant security buff. Trusting this to software vendors is just insane.
> although, admittedly, popular Java build tools currently lag in their support for jlink
This seems to show that developers haven't bitten the Oracle dream of vendored JREs. The "old" way of launching Java applications, both desktop and server, works perfectly fine to the present day, and few seem to be willing to alter that.