Passer au contenu principal
← Blog

Swing modernization for enterprises: a CTO decision guide

· 8 minutes de lecture
webforJ
Do it all in Java! Build in Java, deploy to the Web.

cover image

Somewhere in your portfolio there is a Java desktop app that people depend on every day. It carries years of business rules, nobody wants to change it, and the requests to put it in a browser keep coming. Swing modernization for enterprises is the work of moving that app to the web without stopping the business that runs on it. Our recommendation is a three-phase path: run the existing app in the browser now with Webswing, rebuild screens in webforJ, the full-stack Java framework, in order of business priority, then retire the desktop client. Your Java team and your business logic stay in place the whole way.

Why staying on Swing is a risk​

Swing is the GUI toolkit for Java desktop applications. It still works, and that is part of the problem: nothing forces a decision, so the cost builds quietly. The risks are rarely technical failures. They are business constraints:

  • Access. Users expect to open a link on any device. A desktop client needs installation, updates and a managed workstation.
  • Security review. Every installed client is a distribution and patching question for your security team.
  • Hiring and retention. Engineers who want to build web products are hard to attract to a desktop-only codebase.
  • Strategic freedom. Customer portals, partner access and remote work all assume a browser.

For the engineering side of this, see our piece on Java Swing technical debt. This guide stays at the decision level.

Three options in business terms​

An enterprise Swing to web strategy comes down to three paths, or a sequence of them.

OptionWhat it meansMain business riskJava team stays?
Rewrite in a JavaScript stackNew front end in a different language, business logic exposed through new APIsLong delay before users see value, logic re-implemented and re-testedPartly, a second team is needed
Stream as isRun the unchanged Swing app on a server and show it in a browserThe app still looks and behaves like a desktop app, no new web capabilityYes
Rebuild in Java, screen by screenReplace each screen with a web screen written in JavaNeeds a prioritized planYes

A rewrite in a JavaScript stack gives you a modern front end, but it asks your Java engineers to become a different team or asks you to hire one. The business rules that took years to get right must be rebuilt and verified again, and users get nothing until the new app is complete.

Streaming gets you into the browser fast. Webswing is a server technology that lets Swing, JavaFX and SWT apps run in a browser without changes to the source code. That is a strong first move, and a weak final destination, because the interface is still the desktop one.

Rebuilding in Java keeps the language, the team, and the logic. The cost is that screens must be rebuilt, which is where the roadmap and AI assistance matter.

A phased roadmap​

A Swing modernization roadmap for CTOs works when each phase delivers something users and auditors can see.

Phase 1: run in the browser now​

Host the existing app with Webswing and embed it in a webforJ app through the WebswingConnector component. Users get browser access to the app they already know. Your security team gets one server-side deployment instead of many installed clients. Nothing about the business logic changes, so the risk of this phase is low. Setup is covered in the Webswing setup guide.

Phase 2: move screens by priority​

Pick screens by business value: the ones customers use, the ones with the most support tickets, the ones that block a new product. Each moves to a webforJ screen written in Java. While the move is in progress, the embedded Swing app and the new screens can exchange actions and events through the connector, so users see one app, not two. The communication model is documented, and we cover the approach in our post on Swing and web communication.

Phase 3: retire the desktop client​

When the last screen is rebuilt, the Webswing layer and the desktop client go away. The end state is one Java app that runs in the browser, with no streaming layer to maintain.

The point of the phasing is that you can stop after any phase and still have gained something. Phase 1 alone solves access. Phase 2 can run for as long as the budget allows.

Where AI agents cut the cost​

The screen-by-screen move is the expensive part, and it is also the part AI coding agents handle well. An agent reads a Swing screen, understands its fields, events and calls into your business classes, and writes the matching web screen.

The risk with a general-purpose assistant is plausible code that calls methods that do not exist. The webforJ AI plugin addresses that. It installs the MCP server, which lets the assistant look up real webforJ documentation and API information instead of guessing, together with Agent Skills, which are structured workflows for building components and styling apps correctly. It works with Claude Code, Copilot, Cursor, Gemini, and Codex.

What this changes for a budget owner: the engineers spend their time reviewing screens and deciding priorities, not typing boilerplate. As with any AI output, review and test everything before it ships. The docs say plainly that assistants can still make mistakes in complex scenarios, so treat the agent as a fast junior contributor and keep your normal code review.

Team and staffing impact​

This is where the Java route differs most from the alternatives.

  • No second team. The people who maintain the Swing app today build the web screens in Java.
  • Business logic is reused. Existing Java classes keep serving the new screens, so the domain knowledge in your team stays valuable.
  • Familiar ecosystem. webforJ integrates with Spring Boot, so existing services and security conventions carry over. Route access is controlled with annotations and Spring Security integration. See the security docs.

Proof point: the Prodin story​

Prodin Business Solutions, a Dutch ERP software provider with over 45 years of experience, assembled a six-member Java development team and reused Java-compatible business logic, some of it written more than two decades ago. They delivered their first web-based modules to customers within four months. The full account is in the Prodin success story.

Vendor stability​

A modernization program lasts years, so the supplier matters. webforJ comes from BASIS International, which has built software and tools for business solutions for almost 40 years and has delivered technology built on Java for more than 20. The company is privately owned and operated, with offices in Albuquerque in the US and Saarbrücken in Germany, support contacts in both regions, and partners in more than 30 countries.

Risk table​

RiskWhere it appearsHow the roadmap handles it
Big-bang delivery slipsFull rewritePhase 1 delivers browser access first
Business logic is lost or changedRewrite in another languageJava logic is reused as is
Two codebases to staffHybrid Java and JavaScriptOne language, one team
Users see two different appsMixed estateEmbedded Swing and web screens exchange events
AI output is wrongAutomated portingMCP lookups, Agent Skills, human review
Supplier riskAny long programLong-standing, privately owned vendor with support in two regions

Next step: pilot one screen​

Pick one screen that matters to a customer and one engineer. Embed the existing app through the Webswing integration, install the AI plugin, and have the agent rebuild that one screen. Within a short pilot you will have real data on effort and quality to take to your budget review. New projects start from the getting started guide.

Frequently asked questions​

Do we need to stop feature work during the move?​

No. The existing Swing app keeps running through Webswing while screens are replaced one at a time, so releases continue. You choose the pace of each phase.

Is Webswing a permanent solution?​

We treat it as the bridge. It gives browser access immediately, and the webforJ integration is designed for progressive modernization where Swing components are gradually replaced by web ones until the legacy app is retired.

What happens to our existing Java business logic?​

It stays. New webforJ screens are written in Java, so they call the same classes your Swing screens call today. Prodin followed this pattern and reused business logic that was written more than two decades ago.

Can AI agents do the whole migration?​

They can do much of the screen porting quickly, and the webforJ AI plugin keeps the generated code grounded in real APIs. Your engineers still review and test each screen, which is where the program's quality is decided.

Vous développez quelque chose avec webforJ ?

Échangez avec l’équipe au sujet de votre projet, d’une migration ou de la pertinence de webforJ.

Contactez-nous