Packages Java applications (JAR, assets, and a JVM) into native executables for Windows, Linux, and macOS distribution.
Packr is a packaging tool that bundles Java applications—including JAR files, assets, and a JVM—into native executables for Windows, Linux, and macOS. It solves the problem of distributing Java software by creating a single, self-contained package that runs like a native app, eliminating the need for end-users to install Java separately. This is particularly valuable for GUI applications and games where a seamless user experience is critical.
Java developers building desktop applications or games (especially with libGDX) who need to distribute their software as easy-to-install native packages across multiple operating systems.
Developers choose Packr because it provides a straightforward, configurable way to create native executables from Java apps without complex setup. It offers fine-grained control over JRE bundling and minimization, supports modern Java features like ZGC, and integrates easily into build systems via CLI, JSON, or Java API.
Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates platform-specific launchers (.exe, binary, .app) that hide the JVM startup process, making Java apps launch like native software, as described in the README's output structure examples.
Packages a compatible JRE and reduces size via configurable profiles like 'soft' and 'hard', which remove unnecessary files to shrink download footprints, detailed in the minimization section.
Targets Windows, Linux, and macOS with tailored output structures, ensuring broad distribution compatibility for GUI applications like games.
Automatically enables the Z Garbage Collector for Java 14+ on supported OSes using the --useZgcIfSupportedOs flag, reducing pause times for better performance in games.
Supports command-line arguments, JSON files, and a Java API, making it easy to integrate into build pipelines, as shown in the usage examples with Gradle.
JRE minimization is most effective for Java 8; for Java 11+, the README explicitly recommends using jlink instead, indicating a gap for optimizing newer Java versions.
Icons are not automatically set on Windows and Linux, requiring manual work, and macOS notarization involves complex, step-by-step commands as outlined in the documentation.
The cache doesn't validate changes in JDK or minimization config, so manual cleanup is needed after updates, which can slow down iterative builds and introduce errors.
Only tested with Adopt OpenJDK 8, 11, and 15; other JDKs might work but are unsupported, limiting flexibility and potentially causing compatibility issues.