existe-t-il un framework d'application console pour java?


Je vais commencer à concevoir une application console. Ceci est destiné à se comporter comme le client MySQL, qui invite l'utilisateur à des commandes, puis les exécute (essentiellement pour ouvrir et écouter les ports TCP, gérer certaines opérations de base de données et des trucs de gestion de serveur). L'application accepte essentiellement les connexions et renvoie des données aux clients.

Je veux que cette application s'exécute à la fois en mode GUI et Console en fonction de la façon dont l'application est démarrée (pas de problème ici)

GUI n'est pas un problème, mais la console. Ce dont j'ai besoin, c'est d'un moyen de définir un ensemble de commandes, elles peuvent avoir ou non un certain nombre de paramètres. Ces commandes peuvent demander une confirmation, un mot de passe ou renvoyer un ensemble de données. Je veux garder les choses élégantes, maintenables et éviter de construire une "machine à états finis" qui peut devenir incontrôlable.

Je veux réaliser quelque chose comme:

[ready]> server:start;
Server started.
[running]> connections:list;
Conn     IP             Port
Name1    192.168.2.2    60000
Name2    192.168.2.4    60002
[running]> connections:close Name1;
1 connection closed.
[running]> server:stop;
password? ******
Server stopped.
[ready]>

Existe - t-il un framework, un outil ou une technique pour y parvenir sur Java?

Author: Xocoatzin, 2012-07-25

4 answers

Il y a le récemment (très récemment) publié Spring Shell. C'est ce que Spring utilisait pour alimenter leur coque Roo moins les pièces Roo. Vous pouvez y brancher vos propres commandes et utiliser sa capacité à enregistrer des scripts, lire des scripts, prendre des paramètres, modifier l'invite, etc.

J'ai regardé l'exemple qui l'accompagnait et il y avait quatre classes différentes qui ajoutaient ou changeaient diverses choses et cela semblait assez simple.

 4
Author: John Munsch, 2013-11-15 11:02:00

J'ai utilisé clamshell-cli dans le passé, je n'ai rien fait de trop compliqué avec mais il semble qu'il ait de nombreuses fonctionnalités.

 1
Author: Aviram Segal, 2012-07-24 20:52:44

Il existe un analyseur de ligne de commande Picocli. Il a été lancé en septembre 2017 et il est déjà utilisé en ligne de commande par Groovy, Micronaut et JUnit.

Il a ces caractéristiques:

  • autocomplétion
  • couleurs et styles ansi
  • belle aide de l'utilisateur
  • supporte les sous-commandes
 1
Author: Black, 2018-09-15 10:41:04

Une façon de mettre en œuvre cela serait par réflexion. vous définissez les champs server et connections et de leur donner les méthodes dont vous avez besoin (start() stop() close()). Ensuite, lorsque l'entrée est analysée, utilisez le mécanisme de réflexion pour exécuter les méthodes dont vous avez besoin.

 0
Author: vandale, 2012-07-24 20:59:25