25

I'm currently working on a small utility program that only requires a command line interface, and I started wondering if Java provided any standard way of creating the CLI, in a similar way that Swing and the likes exist for GUIs. I'm not really interested in command line parameters and parsing of them, but rather the command based interaction the user has with the program to use it. This is for the situations where GUI simply is unnecessary or not an option for using the program.

Googling the subject pretty much only results in tutorials on how to use BufferedReader and the likes to do rudimentary interaction with the user, aimed at people learning the basics of Java and writing simple UI that asks for name and prints "Hello World!" etc..

Are the any libraries that are focused on providing a good framework for quickly implementing a more complex CLI UI or is this really something that everyone implements in ad hoc manner for their own utilities?

Maybe someone knows of patterns for the implementation that were created back in time when not everything was graphical? That would also be useful resource.

Fuu
  • 3,424
  • 4
  • 33
  • 49
  • Wouldn't Apache Commons CLI (http://commons.apache.org/cli/) help you ? – sateesh Mar 10 '10 at 14:30
  • 3
    No, Apache Commons CLI is really made for parsing command line arguments and doesn't really contribute to design or implementation of the UI otherwise. – Fuu Mar 10 '10 at 14:35

5 Answers5

8

You can also have a look and Clamshell-cli or spring shell:

  • Clamshell-cli is relatively simple and easy to use : You can look at jmx-cli to get a nice example of what can be done with it.

  • Spring Shell is bigger but more feature-full (tab completion, etc). It has been extracted from spring Roo and released as an independent framework

Michael Lloyd Lee mlk
  • 14,561
  • 3
  • 44
  • 81
Pierre Rust
  • 2,474
  • 18
  • 15
8

Perhaps CLI Toolkit...

http://alexis.royer.free.fr/CLI/

John
  • 96
  • 1
  • 2
3

There is a project called JLine that provides cross-platform support for general command-line input handling:

http://jline.sourceforge.net/

More of a support library than a framework though.

Joe
  • 913
  • 5
  • 12
  • Indeed, there is no real framework for embedding CLI in Java, and jline is the most prominent library for such a work. I think it is used, as an example, for the groovy interpreter in command line mode. – Riduidel Mar 10 '10 at 14:26
  • Looking at JLine, it would help mostly by providing autocompletion for typed commands. Useful, but doesn't really meet the criteria. – Fuu Mar 10 '10 at 19:52
1

Try searching for CURSES and java, something like http://www.google.co.uk/search?q=curses+for+java . Long time ago CHARVA ( http://www.pitman.co.za/projects/charva/index.html ) looked nice.

David Soroko
  • 8,521
  • 2
  • 39
  • 51
  • 2
    Interesting links, these take the approach of basically porting Swing/AWT GUI into text based terminal. Problem is that it doesn't reduce the development effort that is the goal of quick CLI UI, since then you might as well do it in Swing and have a graphical interface. :) – Fuu Mar 10 '10 at 19:48
0

I've used the apache commons CLI library in the past and has worked well for me: http://commons.apache.org/cli/

Al.
  • 1,507
  • 1
  • 15
  • 12