upper - Diseño de interfaz de usuario de CLI de Java: marcos o bibliotecas?
librerias para mejorar la interfaz grafica java (5)
Actualmente estoy trabajando en un pequeño programa de utilidad que solo requiere una interfaz de línea de comandos, y comencé a preguntarme si Java proporcionaba alguna forma estándar de crear la CLI, de una manera similar a la que Swing y los "me gusta" tienen para las GUI. No estoy realmente interesado en los parámetros de la línea de comandos y en su análisis, sino en la interacción basada en comandos que el usuario tiene con el programa para usarlo. Esto es para las situaciones en las que la GUI simplemente no es necesaria o no es una opción para usar el programa.
Googlear el tema prácticamente solo da como resultado tutoriales sobre cómo usar BufferedReader y los gustos de hacer una interacción rudimentaria con el usuario, dirigido a personas que aprenden los conceptos básicos de Java y escriben una interfaz de usuario simple que pide un nombre e imprime "¡Hola mundo! etc.
¿Están las bibliotecas centradas en proporcionar un buen marco para implementar rápidamente una IU CLI más compleja o es esto realmente algo que todos implementan de manera ad hoc para sus propias utilidades?
Tal vez alguien sabe de patrones para la implementación que se crearon en el tiempo cuando no todo era gráfico. Eso también sería un recurso útil.
Existe un proyecto llamado JLine que proporciona soporte multiplataforma para el manejo general de entrada de línea de comandos:
Sin embargo, más de una biblioteca de soporte que un marco.
He usado la biblioteca CLI de apache commons en el pasado y me ha funcionado bien: commons.apache.org/cli
Intente buscar CURSES y java, algo 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.
Quizás CLI Toolkit ...
También puedes echar un vistazo y Clamshell-cli o concha de primavera:
Clamshell-cli es relativamente simple y fácil de usar: puedes ver jmx-cli para obtener un buen ejemplo de lo que se puede hacer con él.
Spring Shell es más grande pero tiene más funciones completas (completado de pestañas, etc.). Se extrajo de Spring Roo y se lanzó como un marco independiente.