I want to show you my implementation: ReadyCLI
Advantages:
- for lazy programmers: a very small number of classes to learn, just see the two small examples on the README in the repository and you are already at 90% of learning; just start coding your CLI/Parser without any other knowledge;ReadyCLI allows coding CLIs in the most natural way;
- it is designed with Developer Experience in mind; it largely uses the Builder design pattern and functional interfaces for Lambda Expressions, to allow a very quick coding;
- it supports Options, Flags and Sub-Commands;
- it allows to parse arguments from command-line and to build more complex and interactive CLIs;
- a CLI can be started on Standard I/O just as easily as on any other I/O interface, such as sockets;
- it gives great support for documentation of commands.
I developed this project as I needed new features (options, flag, sub-commands) and that could be used in the simplest possible way in my projects.