On Wed, 16 Oct 2024 14:55:34 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> Currently, running `java` without any parameters will lead to an output that 
>> is a full `--help`, which is over 100 lines (on my computer at least), and 
>> it feels overwhelming. And many people might actually want to run 
>> JShell/REPL, not the `java` launcher, but it is difficult find out about 
>> JShell.
>> 
>> The proposal herein is to print a much shorter help, together with a pointer 
>> to JShell, when the launcher does not know what to do. I.e. there is nothing 
>> specified to start, and no option like `--help` is specified. In particular, 
>> on my machine, it prints:
>> 
>> $ java
>> openjdk 24-internal 2025-03-18
>> 
>> Usage: java [java options...] <application> [application arguments...]
>> 
>> Where <application> is one of:
>>   <MainClass>                to execute the main method of a compiled class
>>   -jar <JarFile>.jar         to execute the main class of a JAR archive
>>   -m <module>[/<MainClass>]  to execute the main class of a module
>>   <SourceFile>.java          to compile and execute a single-file program
>> 
>> Where key java options include:
>>   --class-path <class path>
>>       a ":"-separated list of directories and JAR archives to search for 
>> class files
>>   --module-path <module path>
>>       a ":"-separated list of directories and JAR archives to search for 
>> modules
>> 
>> For more details about this launcher:   java --help
>> For an interactive Java environment:    jshell
>> 
>> 
>> Hopefully, this may be easier both for people trying to run something, and 
>> for people that are really looking for JShell.
>> 
>> What do you think?
>> 
>> Thanks!
>
> Jan Lahoda has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Adjusting the concise help as suggested: 'using main class of a JAR 
> archive' and '<JarFile>.jar'/'<SourceFile>.java'

src/java.base/share/native/libjli/java.c line 1924:

> 1922:  */
> 1923: static void
> 1924: PrintUsage(JNIEnv* env, jboolean doXUsage, jboolean conciseUsage)

This would be cleaner to replace the booleans with an enum (concise, X, full).
Since conciseUsage overrides doXusage, then it should preceed Xusage in the 
argument list.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21411#discussion_r1803573091

Reply via email to