20

Actualmente estoy trabajando en un pequeño programa de utilidad que solo requiere una interfaz de línea de comando, y comencé a preguntarme si Java proporcionaba alguna forma estándar de crear la CLI, de forma similar a como lo hace Swing y las GUI. En realidad, no me interesan los parámetros de la línea de comandos ni su análisis, sino la interacción basada en comandos que tiene el usuario con el programa para usarla. Esto es para las situaciones donde la GUI simplemente no es necesaria o no es una opción para usar el programa.Java CLI UI-design: ¿marcos o bibliotecas?

googleando el tema más o menos resulta en tutoriales sobre cómo usar BufferedReader y le gusta hacer una interacción rudimentaria con el usuario, dirigido a personas que aprenden los conceptos básicos de Java y escribir una interfaz de usuario simple que pide nombre e imprime "Hello World ! " etc.

¿Las bibliotecas están enfocadas en proporcionar un buen marco para implementar rápidamente una interfaz de usuario CLI más compleja o esto es algo que todos implementan de forma ad hoc para sus propias utilidades?

¿Quizás alguien sepa de patrones para la implementación que se crearon en el pasado cuando no todo era gráfico? Eso también sería un recurso útil.

+0

¿No le ayudaría Apache Commons CLI (http://commons.apache.org/cli/)? – sateesh

+3

No, la CLI de Apache Commons está realmente hecha para analizar argumentos de línea de comandos y, en caso contrario, no contribuye al diseño o la implementación de la IU. – Fuu

Respuesta

6

Toolkit Quizás CLI ...

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

+0

Esto parece un buen enfoque, definitivamente el más relevante hasta ahora. – Fuu

+0

Desafortunadamente requiere cgywin en Windows. –

3

hay un proyecto llamado JLine que ofrece soporte multiplataforma para el manejo de entrada de línea de comandos en general:

http://jline.sourceforge.net/

Más de una biblioteca de soporte de un marco sin embargo.

+0

De hecho, no existe un marco real para integrar CLI en Java, y jline es la biblioteca más destacada para este tipo de trabajo. Creo que se usa, por ejemplo, para el intérprete groovy en el modo de línea de comandos. – Riduidel

+0

En cuanto a JLine, sería útil principalmente al proporcionar autocompletado para los comandos escritos. Útil, pero realmente no cumple con los criterios. – Fuu

1

Intenta buscar MALDICIONES y Java, algo así como http://www.google.co.uk/search?q=curses+for+java. Hace mucho tiempo, CHARVA (http://www.pitman.co.za/projects/charva/index.html) se veía bien.

+2

Interesantes enlaces, estos toman el enfoque de básicamente portar Swing/AWT GUI a un terminal basado en texto. El problema es que no reduce el esfuerzo de desarrollo que es el objetivo de la rápida interfaz de usuario CLI, ya que entonces también podría hacerlo en Swing y tener una interfaz gráfica.:) – Fuu

6

También puede echar un vistazo y Clamshell-cli o concha de primavera:

  • Clamshell-cli es relativamente simple y fácil de usar: puede mirar jmx-cli para obtener un buen ejemplo de lo que se puede hacer con él.

  • Spring Shell es más grande, pero con más funciones completa (la implementación del tabulador, etc.). Se ha extraído de la primavera Roo y lanzado como un marco independiente