[Bug 259468] java/javavmwrapper: Add a java_home command?

From: <bugzilla-noreply_at_freebsd.org>
Date: Tue, 26 Oct 2021 23:47:04 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259468

            Bug ID: 259468
           Summary: java/javavmwrapper: Add a java_home command?
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: glewis@FreeBSD.org
          Reporter: tom@hur.st
             Flags: maintainer-feedback?(glewis@FreeBSD.org)
          Assignee: glewis@FreeBSD.org

JRuby's launchers currently attempt to determine JAVA_HOME by resolving
symlinks - it uses this mechanism to determine if the JVM has modules support,
which necessitates calling java with various `--add-opens` flags for
fully-featured operation.

This obviously doesn't work on FreeBSD, as it just resolves to /usr/local/bin:
https://github.com/jruby/jruby/issues/6905

Manually setting JAVA_HOME works around this, but is obviously not an ideal
solution.

The best fix would seem to be for javavmwrapper to offer a mechanism to
determine the configured JAVA_HOME, and there seems to be precedent for such a
feature on other platforms which offer similar functionality in the form of a
`java_home` command:
https://medium.com/notes-for-geeks/java-home-and-java-home-on-macos-f246cab643bd

>       java_home - return a value for $JAVA_HOME
>
> -v or --version  version
>    Filters the returned JVMs by the major platform version in "JVMVersion" form.
>    Example versions: "1.5+", or "1.6*".

> -V or --verbose
>    Prints the matching list of JVMs and architectures to stderr.

> --exec  command ...
>    Executes the command at $JAVA_HOME/bin/<command> and passes the remaining arguments. 
>    Any arguments to select which $JAVA_HOME to use must precede the --exec option.



For JRuby's purposes only the most basic functionality would be required, with
the rest perhaps a nice-to-have.

This might also be nice for heavy Java users - manually setting JAVA_HOME cuts
out most of javavmwrapper's overheads (in my case, 95ms becomes 15ms), and this
would allow it to be set without manually hardcoding it.

Does this seem reasonable?

-- 
You are receiving this mail because:
You are the assignee for the bug.