是否有任何控制台应用程序框架的Java?

时间:2012-07-24 20:48:11

标签: java frameworks console command

我将开始设计一个控制台应用程序。这意味着像MySQL客户端一样,它会提示用户输入命令然后执行它们(基本上是打开和监听TCP端口,管理一些基本的数据库操作和服务器管理的东西)。应用程序基本上接受连接并将数据返回给客户端。

我希望这个应用程序在GUI和控制台模式下运行,具体取决于应用程序的启动方式(这里没问题)

GUI不是问题,而是控制台。 我需要的是一种定义一组命令的方法,它们可能有或没有任何数量的参数。此命令可能会提示确认,密码或返回一组数据。 我希望保持优雅,可维护并避免构建可能失控的“有限状态机”。

我希望实现以下目标:

[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]>

是否有任何框架,工具或技术可以在Java上实现这一目标?

4 个答案:

答案 0 :(得分:4)

最近(最近)发布了Spring Shell。这是Spring用来为他们的Roo外壳减去Roo部件的动力。您可以将自己的命令插入其中,并利用其记录脚本,回放脚本,获取参数,更改提示等的能力。

我查看了随附的示例,它有四个不同的类添加或更改了各种各样的东西,它看起来非常简单。

答案 1 :(得分:2)

我过去使用clamshell-cli,没有做过任何太复杂的事情,但似乎它有很多功能。

答案 2 :(得分:1)

有一个命令行解析器Picocli。它于2017年9月启动,现已被Groovy,Micronaut和JUnit用作命令行。

它具有以下功能:

  • 自动补全
  • ansi颜色和样式
  • 很好的用户帮助
  • 支持子命令

答案 3 :(得分:0)

实现这一目标的一种方法是通过反思。 您可以定义字段serverconnections,并为其提供所需的方法(start() stop() close())。然后在解析输入时,使用反射机制来执行您需要的方法。