jshell tool: opinions sought -- double-dash long-form command-line options

Robert Field robert.field at oracle.com
Tue Aug 16 16:47:50 UTC 2016


> On Aug 16, 2016, at 8:07 AM, Jonathan Gibbons <jonathan.gibbons at oracle.com> wrote:
> 
> Robert,
> 
> Strong input:  options that are common across tools should be the same across tools, for example, the set of module options. You're already suggesting that, so that's good.
> 
> Additional input: double-dash options are typically a short series of words separated by hyphens (instead of concatenated words), so that makes for --no-startup instead of —nostartup.

Ah!  Good point.

> 
> Note that double-dash options should allow '=' as a separator instead of white-space, as in --class-path=my:class:path
> This is not typically spelled out in detail in command line help, but there is typically a footnote to that effect at the end of the help.

Right.  I was pointed at JOpt-Simple since it does option parsing.  I don’t think I’ll use it since error handling seems to lack the control I need.  But, from that, I saw the =arg requirement.  That should be easy to hand-craft.

It also allows combining single-letter single-dash options, like -nq instead of -n -q.  Given the multi-letter single-dash options, I’m not sure that makes sense to do.

(continued)

> 
> -- Jon
> 
> On 08/15/2016 10:35 PM, Robert Field wrote:
>> We would like the jshell tool to roll-out using the more modern double-dash options.  Note though that it will ship in the jdk/bin directory where almost all commands use legacy option formats.
>> 
>> Below I propose options for jshell, as this is not a black-and-white decision, I'd very much like input....
>> 
>> Current jshell options are --
>> 
>>    -classpath <path>    Specify where to find user class files
>>    -cp <path>           Specify where to find user class files
>>    -startup <file>      One run replacement for the start-up definitions
>>    -nostartup           Do not run the start-up definitions
>>    -feedback <mode>     Specify the initial feedback mode. The mode may be
>>                         predefined (silent, concise, normal, or verbose) or
>>                         previously user-defined
>>    -q                   Quiet feedback.  Same as: -feedback concise
>>    -qq                  Really quiet feedback.  Same as: -feedback silent
>>    -v                   Verbose feedback.  Same as: -feedback verbose
>>    -J<flag>             Pass <flag> directly to the runtime system.
>>                         Use one -J for each runtime flag or flag argument
>>    -R<flag>             Pass <flag> to the remote runtime system.
>>                         Use one -R for each remote flag or flag argument
>>    -help                Print this synopsis of standard options
>>    -version             Version information
>>    -fullversion         Full Version information
>> 
>> java options are mostly single-dash options, the current double-dash options are --
>> 
>>    -cp <class search path of directories and zip/jar files>
>>    -classpath <class search path of directories and zip/jar files>
>>    --class-path <class search path of directories and zip/jar files>
>>                  A : separated list of directories, JAR archives,
>>                  and ZIP archives to search for class files.
>>    -p <module path>
>>    --module-path <module path>...
>>                  A : separated list of directories, each directory
>>                  is a directory of modules.
>>    --upgrade-module-path <module path>...
>>                  A : separated list of directories, each directory
>>                  is a directory of modules that replace upgradeable
>>                  modules in the runtime image
>>    -m <module>[/<mainclass>]
>>    --module <modulename>[/<mainclass>]
>>                  the initial module to resolve, and the name of the main class
>>                  to execute if not specified by the module
>>    --add-modules <modulename>[,<modulename>...]
>>                  root modules to resolve in addition to the initial module.
>>                  <modulename> can also be ALL-DEFAULT, ALL-SYSTEM,
>>                  ALL-MODULE-PATH.
>>    --limit-modules <modulename>[,<modulename>...]
>>                  limit the universe of observable modules
>>    --list-modules [<modulename>[,<modulename>...]]
>>                  list the observable modules and exit
>>    --dry-run     create VM but do not execute main method.
>>                  This --dry-run option may be useful for validating the
>>                  command-line options such as the module system configuration.
>> 
>> Of these, --class-path, --module-path, --add-modules, and maybe --upgrade-module-path seem appropriate for jshell.
>> 
>> Proposed for jshell --
>> 
>>    -classpath <path>    Specify where to find user class files
>>    -cp <path>
>>    --class-path <path>
>> 
>>    -p <module path>      directory of modules.
>>    --module-path <module path>...
>> 
>>    --upgrade-module-path <module path>...   directory of modules that replace upgradeable modules
>> 
>>    --add-modules <modulename>[,<modulename>...] root modules to resolve
>> 
>>    --startup <file>      One run replacement for the start-up definitions
>> 
>>    --nostartup           Do not run the start-up definitions
> 
> Would be better as --no-startup

Y

> 
>> -n
>> 
>>    --feedback <mode>     Specify the initial feedback mode. The mode may be
>>                         predefined (silent, concise, normal, or verbose) or
>>                         previously user-defined
>> 
>>    -q                   Quiet feedback.  Same as: --feedback concise
>> 
>>    -qq                  Really quiet feedback.  Same as: --feedback silent
>> 
>>    -v                   Verbose feedback.  Same as: --feedback verbose
>> 
>>    -J<flag>             Pass <flag> directly to the runtime system.
>> 
>>    -R<flag>             Pass <flag> to the remote runtime system.
>> 
>>    --help                Print this synopsis of standard options
>>    -help
>>    -h
>> 
>>    -version             Version information
>>    --version
>> 
>>    -fullversion         Full Version information
>>    --fullversion
> 
> ?? --full-version ??

Probably, y.

Thanks much,
Robert

>> 
>> 
>> Thanks,
>> Robert



More information about the kulla-dev mailing list