jline3

JLine is a Java library for handling console input.

1571
226
Java

JLine - Java Console Library

Maven Central
Build Status
License

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.

Features

  • 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

Installation

Maven

<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline</artifactId>
    <version>3.30.0</version>
</dependency>

Gradle

implementation 'org.jline:jline:3.30.0'

Quick Start

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();
        }
    }
}

Modules

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

Documentation

License

JLine is licensed under the BSD License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.