A modern Java framework for building powerful, user-friendly command line applications with GraalVM native image support.
Picocli is a Java framework for building command line applications with a focus on ease of use, rich features, and GraalVM native image support. It provides annotations and programmatic APIs to parse command line arguments, generate usage help with ANSI colors, and support autocompletion and subcommands. The framework solves the problem of creating robust, user-friendly CLI tools with minimal boilerplate code.
Java, Groovy, Kotlin, and Scala developers who need to build command line applications, especially those requiring features like subcommands, autocompletion, or GraalVM native compilation.
Developers choose Picocli for its simplicity, powerful features like ANSI-colored help and autocompletion, and seamless GraalVM integration for native executables. Its single-file source inclusion eliminates dependency management overhead, while strong typing and extensive customization options make it a versatile choice for both simple and complex CLI projects.
Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes an annotation processor to automatically Graal-enable jars, enabling ahead-of-time compilation to fast-starting, low-memory native executables, as highlighted in the README's focus on GraalVM integration.
Offers ANSI-colored help, TAB autocompletion for bash/zsh, and nested subcommands, making it suitable for complex, user-friendly command-line interfaces without boilerplate code.
With annotations, commands can be defined in a single line; implementing Runnable or Callable delegates parsing and help handling to picocli, reducing development time.
Packaged as a single source file, allowing applications to include it directly and avoid external dependency management, as noted in the README's philosophy.
Tied to the JVM ecosystem, so non-Java developers face a learning curve, and even GraalVM compilation requires Java tooling, which can be a barrier.
Heavy reliance on annotations can be inflexible for dynamic CLI generation and may feel cumbersome compared to programmatic or configuration-driven approaches.
Features like autocompletion script generation and GraalVM integration require additional configuration and familiarity with specific tools, adding complexity beyond basic usage.