A New Chapter for jDeploy: The Desktop App is Here 🎉
Just press "Publish" to deploy your Swing or JavaFX app to npm or GitHub
jDeploy has long offered the easiest way to deploy your Swing and JavaFX desktop applications—but until now, it was itself a command-line tool. I loved the simplicity of the text-based UI, but I believed we could deliver a much better overall developer experience by transitioning to a GUI.
And really, shouldn’t jDeploy be used to deploy jDeploy? If for no other reason, than to showcase what it can do.
From CLI to a First-Class Desktop Experience
Some parts of jDeploy already had a GUI (e.g. the Project Editor dialog), but the tool itself remained primarily CLI-based. With this makeover, I set out to create a true desktop application experience: completely self-contained, launched by double-clicking an icon, or selecting it from the Dock, Start menu, etc.
No Dependencies, No Confusion
A top complaint among prospective users was the npm dependency. Even though apps deployed with jDeploy didn’t require npm, the jDeploy CLI did use npm—for installing the tool and during the deployment process. This confused many Java developers and made adoption harder than it needed to be.
The new jDeploy desktop app removes this dependency entirely. It bundles all the tools it needs—including npm—so you don’t need to install anything extra. Technically, you don’t even need a JDK installed anymore… although, let’s be honest, you’re not getting far developing Java apps without one.
Deploy Direct to GitHub
We added GitHub Releases support years ago via GitHub Actions. But for new users evaluating the platform, setting up workflows was an extra hurdle. While GitHub Actions offers a great experience once it’s configured, the learning curve was too steep for many.
Now, with the jDeploy desktop app, you can publish directly to GitHub Releases by simply pressing the “Publish” button.
First-Class Project Templates for Swing and JavaFX
My vision for jDeploy is to make Java a more compelling platform for desktop development. While deployment (the “last mile”) was the biggest pain point I wanted to solve, project setup (the “first mile”) has always been a close second.
Creating a new Swing or JavaFX project using Maven or Gradle has often been unnecessarily hard. IMO, it should be as simple as picking a template, entering a project name and title, and clicking a button. Done.
The jDeploy desktop app ships with a curated set of templates for Swing, JavaFX, and Codename One—all shovel-ready. You can create a new project and publish it to GitHub or npm in under 30 seconds.
Want to contribute a template? You can, by submitting a PR to the jdeploy-project-templates GitHub repo. The structure is very similar to Maven archetypes.
I’ll be showcasing some of these templates in more detail in upcoming newsletters.
IDE Integration That Just Works
My goal was to smooth every rough edge. If something annoyed me during development, I fixed it.
One common annoyance: after generating a new project, I’d want to open it in IntelliJ. But I often couldn’t remember where I saved it. So I added a menu item to open the project in Finder/Explorer, so I could drag it to IntelliJ.
But even that got old. So I added direct support for opening projects in your IDE of choice.
Currently supported IDEs:
IntelliJ IDEA
NetBeans
Eclipse
Visual Studio Code
If your preferred IDE isn’t detected, drop me a note—I’ll be happy to add support.
Build Project From JDeploy UI
Even with IDE integration, I found myself opening IntelliJ just to build the app before clicking “Publish.”
So now you can just check “Build Project” right inside the jDeploy editor—and then press “Publish.”
jDeploy uses heuristics to locate a suitable JDK on your system (Mac, Windows, or Linux). It relies on a buildCommand
in the project’s package.json
, which all templates now include. For example:
"buildCommand": [
"./mvnw",
"package"
],
With this, you can go from zero to published app in seconds.
Web Preview
The new “Web Preview” button uses CheerpJ to generate a web version of your app and launches a local server so you can test it.
Currently this works for apps that CheerpJ supports. According to their roadmap, support includes:
Java 11 to Java 17 in 2025, with full LTS parity expected in 2026
Full Swing API
Initial JavaFX support coming in CheerpJ 4.0
The Swing Maven Starter template works out of the box with this feature. Other templates may need tweaks.
Smoother Authentication
Previously, the “Publish” button in the GUI editor was hit-or-miss depending on your OS, npm version, and account settings. Many users had to fall back to the CLI.
In the desktop app, this wasn’t acceptable—publishing needed to just work.
I spent time testing both npm and GitHub auth flows and concluded the best option was to use personal access tokens. jDeploy securely stores them in your system keychain and prompts you to choose one when you hit “Publish.”
Two-factor authentication is supported for both GitHub and npm.
Try it out!
If you’ve ever built a Java desktop app—or plan to—or you’re just curious about the experience, I encourage you to download the jDeploy desktop app and take it for a spin.
Create a dummy app using one of the included templates. Try publishing it. See how easy it is to share with others.
Check out the updated jDeploy manual to get started.
And please let me know what you think—drop me a line on social media or join the conversation in the GitHub discussion forum.
Congratulations on this release! I'm such a fan of JDeploy - you've turned the hardest thing about desktop development into the easiest. It word gets out, it could single-handedly save Java client development.