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 Java Runtime Environment (JRE)—into native executables for Windows, Linux, and macOS. It solves the problem of distributing Java apps by making them appear and launch like native applications, eliminating the need for end-users to install Java separately. This is particularly valuable for GUI applications like games, where a seamless user experience is critical.
Java developers building desktop applications, especially game developers using frameworks like libGDX, who need to distribute their software as user-friendly, native-like packages across multiple operating systems.
Developers choose Packr for its simplicity, cross-platform support, and ability to create self-contained executables that reduce user friction. Unlike some alternatives, it offers fine-grained control over JRE minimization and supports modern JVM features like the Z Garbage Collector, making it a lightweight and flexible solution for Java app distribution.
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 JVM startup, making Java apps appear native without user intervention, as shown in the usage examples.
Allows bundling a JRE with minimization profiles to reduce size, and supports removing non-matching native libraries from JARs, giving developers fine-grained control over distribution size.
Targets Windows, Linux, and macOS with a single configuration, enabling consistent packaging for desktop applications across major operating systems.
Supports Java 14+ and the Z Garbage Collector for low-pause GC, with automatic OS detection via --useZgcIfSupportedOs, enhancing performance for GUI apps.
JRE minimization is conservative and only effective for Java 8 or lower; for Java 11+, the README recommends using jlink instead, adding complexity for modern projects.
Requires manual steps for setting icons on Windows and Linux, and for macOS notarization and signing, which can be time-consuming and error-prone.
Only Adopt OpenJDKs 8, 11, and 15 are tested, and features like cross-building or advanced security are not built-in, relying on external tools or manual intervention.