logo
25.1
search
No matching documents found.
list
search
No matching documents found.
logo

Overview

Release notes 25.1

Webswing is a specialised web server that runs Java desktop applications directly in the browser - no code changes required.

Over the years, Java desktop technologies like Swing, JavaFX, SWT (Eclipse), and NetBeans Platform have been used to create powerful business-critical applications. Many organisations have made significant investments into developing and maintaining these solutions. However, as modern platforms shift toward the web, these desktop technologies are increasingly seen as limiting, especially with the deprecation of Applet support and the growing demand for browser-based delivery.

Webswing bridges this gap. With minimal effort, your existing Java desktop application – whether built with Swing, JavaFX, SWT, or NetBeans – can run securely and seamlessly in any modern browser, just like a native app. Setup is fast, thanks to the built-in Admin Console for configuration and deployment.


Webswing offers a unique and instant solution for:

All this with:

☑️ No browser plugin required – pure HTML5
☑️ No source code modification or conversion
☑️ Works with every Java UI framework

And as a bonus you get:

  • Session monitoring and control
  • Live control of user sessions
  • Session recording & playback
  • Memory and CPU usage statistics
  • Integrated log viewer
  • Advanced access control and authentication options
  • Testing possibilities

Who is it for?

Webswing is designed for teams and organizations that want to modernize existing Java desktop applications without rewriting them from scratch. Whether you're running a legacy Swing UI, a JavaFX control panel, an SWT-based editor, or a NetBeans Platform tool, Webswing allows you to deploy it as a cloud-hosted, SaaS, or browser-accessible solution - with full control over performance, access, and user experience.

Also supports Java Applets running in modern browsers.

If you're developing a new web-based application, consider using pretty much any frontend framework you like - Webswing doesn’t impose limitations. However, it’s particularly useful when your project needs to integrate or reuse Java UI components that are too complex or mature to rebuild for the web. Thanks to the built-in JsLink interface, Webswing views can be embedded directly into your existing web applications.

Why run your Java desktop app in Webswing?

Benefits over traditional desktop deployment:

  • 🔒 Protects your application’s codebase
  • 🚀 Simple distribution of application updates
  • 🎯 Control over Java runtime version
  • 🔐 No client-side Java required = reduced security risks
  • 🌐 Faster backend connections (no VPNs or local installs)
  • 🎫 Centralised user access and session management
  • ☁️ Infrastructure agnostic – run it on your own hardware, cloud, containers, or VMs
  • 🌍 Browser agnostic – runs in all modern browsers
  • 🧱 Framework agnostic – integrate with any frontend web framework when needed
  • JVM agnostic – supports Java 8, 11, 17, and 21, and works with OpenJDK

Limitations to consider:

  • ⚠️ It does not work well with multimedia-heavy applications – video is not supported, and sound has limited support
  • ❌ 3D hardware-accelerated content is not supported
  • 🎮 Not suitable for real-time action games due to rendering latency
  • 💡 Requires more server-side resources (CPU/memory) per session compared to native web apps

What features are supported?

Webswing provides many convenient built-in features that make working with Java desktop applications in the browser feel seamless:

Server-side capabilities:

How does it work?

Java UI frameworks like Swing, JavaFX, SWT, or NetBeans are all built to be cross-platform. This means their interaction with platform-specific features happens through well-defined, minimal interfaces (such as java.awt.Toolkit in the case of Swing).
Java provides platform-specific implementations for Windows, X11, and macOS.

Swing as desktop application

Webswing defines a new platform implementation called "Web", which effectively transforms the web browser into a virtual desktop environment. It maps all platform-specific rendering and input actions to equivalent browser operations in the most accurate way possible.

Swing app deployed in Webswing

There are two essential functions every platform must support for Java desktop applications:

  • Display content on screen
  • Capture and process user input events

Webswing renders content inside the browser using HTML5 Canvas and captures user interaction (keyboard, mouse) using JavaScript. These input events are then translated into standard Java input events and sent back to the application.

Network Diagram

This section describes the network architecture for a standalone Webswing deployment. In this setup, the client is represented by a browser that communicates with a Webswing server. The server acts as a bridge between the Java application and the browser - handling both rendering output and user input.

For cluster-based deployments, please refer to the Cluster Overview.

Application
This is typically a Java desktop application (Swing, JavaFX, SWT, or NetBeans) running in its own JVM. It generates rendering events that are sent to the browser, and it receives user interaction events from the browser.

Webswing Server
Acts as an intermediary between the application and the browser. It is responsible for starting the application, establishing WebSocket connections, and managing the flow of data. It receives rendering events from the application and delivers them to the browser. It also captures user input events from the browser and forwards them to the application. The server can run on a local machine, on-premises, in the cloud, or containerised (e.g., Docker, Kubernetes).

Browser
Acts as the client interface. It receives rendering instructions from the server, displays the UI using HTML5 Canvas, and captures user input events which are then sent back to the server.

Communication
All communication happens over the network using the WebSocket protocol. The process works as follows:

  1. The application generates a rendering event and sends it to the Webswing server.
  2. The server receives the event and transmits it to the browser via WebSocket.
  3. The browser receives the event and updates the application's visual rendering.
  4. The user interacts with the interface displayed in the browser.
  5. The browser captures the interaction as a user input event and sends it to the server.
  6. The server forwards the event to the Java application.
  7. The application processes the input and updates its internal state accordingly.

Diagram
The diagram below illustrates the communication process described above: