用于为Java应用程序构建交互式shell的库
我正在寻找Java的库,这将允许我创建一个交互式shell。 我做了一些搜索,并没有发现很多。 我发现的大多数是用于向我的应用程序添加命令参数解析的库,这对我没什么帮助。
我找到的最好的领导是一个名为Cliche的库,它完全符合我的需要。 问题是它太简单了。 我正在寻找更具定制性的东西。
有没有人遇到过更高级的东西?
要考虑的选项:
- javacurses / JCurses – 一个基于控制台的窗口工具包,类似于UNIX curses设计
- 如果您想在Swing GUI窗口中使用控制台样式的视图/输出,则swing-console可能是合适的。 你可以使用它来构建一个交互式shell。
- JLine – 类似于GNU readline的控制台输入库
- 一些JVM语言提供了一个交互式REPL环境 ,可以用作交互式shell,例如Clojure
根据这个问题, JLine可以很好的尝试。
JLine的特点
- 命令历史记录 – 之前输入的行可以被调用和编辑,并且可以保留以便它们可用
跨程序会话。- 行编辑 – JLine允许完全编辑当前命令行,并尝试尽可能多地模仿GNU Readline的行为,包括支持emacs和vi键映射。
- 完成 – JLine提供了一个可插入的机制来实现命令行选项卡完成(当然,完成可以绑定到您希望的任何键)。
- 自定义键绑定 – 可以任意重新映射键以执行特定操作,JLine会尝试遵守现有readline .inputrc文件中设置的任何映射。
- 字符屏蔽 – 可以从用户收集输入而无需任何视觉反馈。 这对提示输入密码很有用。
- 99.99%Java – JLine的大部分都是Java,仅使用Jansi项目提供的一些本机代码,
支持Windows。
我们正在使用Spring shell ,它对我们来说非常有用。 它的一些function:
-
一个简单的,注释驱动的编程模型,用于提供自定义命令
-
使用Spring的类路径扫描function作为a的基础
命令插件策略和命令开发 -
Roo Shell的inheritancefunction,最显着的是选项卡完成,着色和脚本执行。
-
自定义命令提示符,标题,shell历史文件名。