JLine is a Java library for handling console input. It's similar to GNU Readline but with a focus on portability, flexibility, and integration with Java applications. See https://jline.org for its documentation.
- Cross-platform support: Works on Windows, macOS, Linux, and other Unix-like systems
- Line editing: Emacs and Vi editing modes with customizable key bindings
- History management: Persistent command history with search capabilities
- Tab completion: Customizable completion for commands, arguments, and file paths
- Syntax highlighting: Colorize input based on custom rules
- Password masking: Secure input for sensitive information
- ANSI terminal support: Full support for ANSI escape sequences and colors
- Unicode support: Proper handling of wide characters and combining marks
- ConsoleUI components: Interactive UI elements like menus, checkboxes, and prompts
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.30.0</version>
</dependency>
implementation 'org.jline:jline:3.30.0'
Here's a simple example to get you started:
import org.jline.reader.*;
import org.jline.reader.impl.*;
import org.jline.terminal.*;
import org.jline.terminal.impl.*;
public class HelloJLine {
public static void main(String[] args) {
try {
// Create a terminal
Terminal terminal = TerminalBuilder.builder()
.system(true)
.build();
// Create line reader
LineReader reader = LineReaderBuilder.builder()
.terminal(terminal)
.build();
// Prompt and read input
String line = reader.readLine("JLine > ");
// Print the result
System.out.println("You entered: " + line);
} catch (Exception e) {
e.printStackTrace();
}
}
}
JLine is organized into several modules:
- jline-terminal: Core terminal functionality
- jline-reader: Line editing and reading
- jline-console: Higher-level console abstractions
- jline-console-ui: Interactive UI components (checkboxes, lists, etc.)
- jline-style: Styling and coloring support
- jline-builtins: Built-in commands and utilities
- jline-remote-ssh: SSH server support
- jline-remote-telnet: Telnet server support
JLine is licensed under the BSD License.
Contributions are welcome! Please feel free to submit a Pull Request.