External _JAVA_OPTIONS environment variable sourcing for self-contained applications
David Holmes
david.holmes at oracle.com
Thu May 9 07:03:05 UTC 2024
Hi,
On 4/05/2024 10:49 am, Christopher Schnick wrote:
> Hello there,
>
> I wasn't entirely sure whether this is the correct mailing list for
> this, but it was the best match for me skimming through all the
> available mailing lists. Feel free to point me to a better suited one if
> I'm wrong here.
>
> We develop and distribute Java desktop applications to users by creating
> standalone application images with jpackage. Everything is working fine,
> however there was a recent issue where some users couldn't get the
> application to work correctly. After some investigation, it turned out
> that the affected users had set the environment variable _JAVA_OPTIONS
> with a few JVM arguments, particularly Xmx parameters that were way too
> low for our application. I was quite surprised that these apply to self
> contained jpackage applications, because for me this is not in the
> spirit of an isolated and self contained application. I was even more
> surprised that it overwrote existing arguments as we had our own values
> for Xmx set in the application image, but these were ignored in favour
> of _JAVA_OPTIONS. And I'm under the impression that this behavior cannot
> be disabled. (Please correct me if I'm wrong)
How does such a jpackaged application actually launch/load the JVM? I'm
wondering if there is a way to insert a new "shell" environment to
launch the JVM without having those env vars present ... though I guess
there may be other env vars that your application still needs.
David
-----
> While I see that there is definitely some use case for having this
> option available to allow users to customize their environment
> uniformly, I would say that this causes usually more harm than good in
> this case. The cases of unintentional interference are probably much
> higher than intentional configuration, which requires specific
> application knowledge to work in the first place.
>
> If someone has set up a few Java 8 application on their system via
> normal jars and has configured a few options for them, I don't want them
> to apply to my application image that runs on Java 21. As the developer,
> I also don't want the user even having to bother with thinking about
> this possibility. I also don't even know if the application starts up if
> the variable contains unrecognized options. Overall I'm not advocating
> here to fully remove this behavior, but at least thinking about giving
> application developers some option to disable external JVM argument
> sourcing for jlink/jpackage. I hope that this proposal can be considered.
>
> Best
> Christopher Schnick
>
More information about the hotspot-dev
mailing list