Webswing
Webswing[edit]
Developer(s) | Webswing Ltd. |
---|---|
Stable release | 21.1[1]
/ 11 April 2021 |
Repository | https://portal.webswing.org |
Engine | |
Platform | Cross platform |
Type | Web server |
License | Webswing Commercial License |
Website | www |
Search Webswing on Amazon.Webswing is a specialised web server that allows its users to run any Swing-based Java application in a web browser. Webswing was created as a solution for existing Swing-based applications and Applets, allowing them to run on the web without the necessity of code modification. The whole technology is based on using only pure HTML5. Webswing is a flagship product of the WEBSWING LIMITED company (previously NIMIRIUM Ltd./Webswing).
History[edit]
Latest stable version is Webswing 21.1, released on April 12, 2021. The next expected release is Webswing in September, 2021.
Webswing versions - Release notes[edit]
Webswing 21.1[edit]
Release date: April 12, 2021
- New window undocking
- Added Clustering features + stability updates
- Removed most JavaScript 3rd party dependencies
- User consent for recording and mirror view
- Build speed and development effectivity improvements
- K8s based Auto-scaling prototype
Webswing 20.2[edit]
Release date: November 9, 2020
- Cluster support
- Standalone Admin Console
- Other small performance improvements, security & bug fixes
Webswing 20.1[edit]
Release date: April 3, 2020
- Undocking Swing windows to browser windows
- Compositing window manager - improved support for mixing Swing with native HTML content
- New OpenAPI based REST interface for management
- Accessibility support
- Audio support
- Improved Admin console
Webswing 2.7[edit]
Release Date: October 3, 2019
- Compositing window manager - allows step-by-step migration to native web technology
- Test tool for easy performance and integration testingImproved support for use on touch devices (Android & iOS)
- Added support for IME input
- New improved SAML2 security module with SLO and SP-metadata support.
- Admin console is now standalone and can be removed
- New configuration fields in Admin Console Restricted Resources, CORS Origins
- Reduced size of webswing-server.war binary
- More precise text rendering in DirectDraw mode
Webswing 2.6[edit]
Release Date: March 27, 2019
- Added support for Java 11
- Added support for JavaFx 11 (since JavaFx is no longer part of JRE, demo apps in our distribution only comes with Javafx Linux based libs. For testing on Windows, please build from sources or contact us)
- Hi-DPI (Retina) display support - only with DirectDraw rendering
- Improved session logging - option for per-session log file
- Rest interface upgrade
- Improved Statistics and Monitoring in Admin console
- Extended Customizations and Branding options
Webswing 2.5[edit]
- Licensed under AGPLv3
- Access control per Swing Application for Multi-tenant deployments
- Improved Application isolation
- JavaFx support (Beta)
- Improved Statistics and Monitoring in Admin console
- Configurable Customizations and Branding
- Built-in SAML2 and OpenID Connect support
- Updated UI design
- and many other Bug-fixes and Improvements
Webswing 2.4[edit]
- DirectDraw improvements
- Bug fixes
Webswing 2.3[edit]
- Java Applets support
- Improved clipboard integration
- Variable replacement in webswing.config
- Fixed glitches and improved performance of DirectDraw (by Andrey Breskalenko)
- Window decoration themes (by Andreas Reichel)
- Javascript to Java interface (and vice versa)
- Java 8 support
- Session recording
- Improved documentation
- Small improvements for mobile browser
- Extended SwingSet3 demo application
Webswing 2.2[edit]
- Tomcat deployment improvements (see Readme file)
- anonymous mode, custom args and application seletion with url params (see Readme file)
- new embedable webswing javascript
- file handling improvements
- ssl configurtion support
- netbeans platform support (see demo example)
- memory and performance optimizations
- new more efficient directdraw rendering method(experimental)
- JMX monitoring
- classpath configuration support wildcards
- bug fixes
Webswing 2.1-beta[edit]
- java 7 support
- file system isolation
- integrated download, upload and deleting of files in JFileChooser
- new window manager with corrected handling of modal windows
- many bug fixes
Webswing 2.0-beta[edit]
- new way of rendering
- switched to jetty server and atmosphere websocket framework
- support configuration of multiple swing applications
- new packaging in a single war file with embeded jetty server
- integrated shiro framework for authentication and authorization
- new admin console for monitoring and configuration of swing applications
- support of drag and drop and printing
- swing application no longer displayed in operating system - rendering in memory
- support for text copy paste
- many other improvements and fixes
Webswing 1.1-beta[edit]
- classpath isolation for swing application
- faster rendering
- added support for window resizing
- support for opening url in client browser
- contextClassPath fix - ejb calls possible
- flashsocket fix for ie9
Webswing 1.0-beta[edit]
- Initial released version.
- Uses netty, socket.io and activeMQ.
- Packaged with demo swing application SwingSet3.
- For fast png encoding levereges ObjectPlanet's PNGEncoder library.
- Supports standard and custom swing components.
Version 21.1[edit]
Webswing version 21.1 is the latest version of Webswing available for download.
Overview[edit]
Webswing version 21.1 released on April 12, 2021 as one of two major releases of Webswing planned for 2021.
Release Notes[edit]
Latest added and improved features:
- New window undocking
- Added Clustering features + stability updates
- Removed most JavaScript 3rd party dependencies
- User consent for recording and mirror view
- Build speed and development effectivity improvements
- K8s based Auto-scaling prototype
- Other small changes:
- Static fonts configuration in html
- Auto reconnect
- Minimize window to Taskbar
- Logout function in Javascript API
- Improved static scaling for touch
- Admin console log viewer improved for cluster
- Verbose logging mode
- Session pool management (drain, shutdown)
- Option to remove Logout buttons from dialogs
- Configurable wheel event
- Caret rendering optimization
Webswing overview[edit]
Webswing is designed to run any Java based desktop application in a web browser using HTML5. Swing application or Applet can instantly be used in a browser just like the native application.
Running Java desktop application on web with Webswing[edit]
Swing API is by design cross-platform, which means all interactions with platform dependent features happen through a well defined minimal interface (java.awt.Toolkit). Java ships with platform specific implementations for Windows, X11 and Mac.
Webswing defines a new platform implementation for "Web", which turns web browser to a virtual desktop and translates platform specific actions to browser actions.
There are two core actions that every platform has to provide for Swing.
- Display content on screen
- Generate user input events
Webswing displays the content in a browser using HTML Canvas and captures keyboard and mouse events in JavaScript to generate Swing input events.
Supported Features[edit]
Feature | Description |
---|---|
Printing integration | Webswing generates a pdf from the printed document and opens it in a new browser tab using PDF.js viewer. |
Filesystem integration | download / upload / delete files in isolated folder |
Advanced Clipboard integration | a built-in clipboard integration |
JsLink | JavaScript to Java calls and vice versa |
Embeddable JavaScript | embed Webswing in your web page |
Session recording and playback | |
DirectDraw | rendering directly from Java2d to HTML Canvas |
Configurable Swing window decoration themes | |
Java 8 and 11 support | |
Open JDK |
Supported Integrations[edit]
Integration | Description |
---|---|
Accessibility | allows to convey information to persons with disabilities |
Webswing API | provides a set of services for cases when your application needs to interact with Webswing |
Audio support | offers simple audio support for playing audio clips if you use standard Java API |
Branding & Customization | describes how to change the Webswing styling, messages and other to match your corporate design |
Compositing Window Manager | renders each window into its own canvas, enables advanced positioning in HTML document and better canvas-window <=> java-window communication. |
Desktop | describes how Webswing handles file upload/download, printing, clipboard and other desktop related tasks |
Embedding to web page | allows you to embed your Swing application to your own web page |
JSlink | allows robust and simple communication between the browser and your app |
Restricted Resources | enables hosting of a static pages with Webswing security integration |
Access Control | describes how to configure Webswing security and integrate it with existing Autorization and Authentication systems |
Touch devices | shows the features Webswing brings to the world of tablets and smartphones |
Window Undocking | feature allows undocking of a Swing window and open it in a new browser window |
URL Parameters | lists additional URL paramters supported by Webswing |
Configuration[edit]
The following is an elementary example of starting Webswing on Windows.
Use the webswing.bat script, which executes the following command
java -jar webswing-server.war -j jetty.properties
To wrap Webswing as a windows service, use https://nssm.cc
e:\nssm-2.24\win64>nssm install "Webswing 21.1" c:\webswing\webswing.bat
The deployed application runs same as desktop like passing from field to field with Enter key.[2]
NetBeans[edit]
Simple NetBeans setup[edit]
{ "name" : "NetBeans Platform", "mainClass" : "org.webswing.demo.NbMain", "classPathEntries" : [ "nbplatform.jar", "lib/*.jar" ], "vmArgs" : "-Dorg.netbeans.log.startup=print -DTopSecurityManager.disable=true", //rest of the JSON omitted }
Full NetBeans IDE setup[edit]
{ "name" : "NetBeans IDE (set homeDir)", "mainClass" : "org.netbeans.Main", "classPathEntries" : [ "platform/*/*.jar/","platform/lib/*/*.jar" ], "vmArgs" : "-Dnetbeans.user=${user.dir}/tmp/netbeans/${user} -Dnetbeans.home=platform -Dorg.netbeans.log.startup=print -DTopSecurityManager.disable=true -Dnetbeans.dirs=\"platform;nb;ergonomics;ide;extide;java;apisupport;webcommon;websvccommon;enterprise;mobility;profiler;python;php;identity;harness;cnd;dlight;groovy;extra;javacard;javafx\"", "args" : "", "homeDir" : "c:/Program Files/NetBeans 8.0.2", //rest of configuration omitted... }
Java Applet configuration[edit]
Setup your applet in Webswing server through JSON configuration file (webswing.config).
... "launcherType" : "Applet", "launcherConfig" : { "appletClass" : "org.webswing.demo.applet.SwingSet3Applet", "parameters" : { "param1" : "paramvalue1", "param2" : "paramvalue2" } }, ...
Other option is to use Admin console, where you can set up your Java applet the same way as a Swing application.
Swing/JavaFX[edit]
Here is a sample webswing.config file content with demo swing application configured:
{ "/" : { "path" : "/", "security" : { "module" : "EMBEDED", "config" : { "users" : [ { "username" : "admin", "password" : "pwd", "roles" : [ "admin" ] }, { "username" : "support", "password" : "pwd", "roles" : [ "support" ] }, { "username" : "user", "password" : "pwd" } ] }, "classPath" : [ ] }, "langFolder" : "${webswing.configDir}/lang", "homeDir" : "${user.dir}", "allowedCorsOrigins" : [ "*" ], "adminConsoleUrl" : "http://localhost:8090" }, "/swingset3" : { "path" : "/swingset3", "webFolder" : "${webswing.rootDir}/apps/SwingSet3/webroot", "security" : { "module" : "INHERITED", "config" : null, "classPath" : [ ] }, "icon" : "${webswing.rootDir}/apps/SwingSet3/icon.png", "homeDir" : "${webswing.rootDir}/apps/SwingSet3", "langFolder" : "${webswing.configDir}/lang", "swingConfig" : { "name" : "SwingSet3", "jreExecutable" : "${java.home}/bin/java", "javaVersion" : "${java.version}", "vmArgs" : "-Xmx128m -DauthorizedUser=${user}", "classPathEntries" : [ "${webswing.rootDir}/apps/SwingSet3/SwingSet3.jar", "${webswing.rootDir}/apps/SwingSet3/*.jar" ], "theme" : "Murrine", "fontConfig" : { "dialog" : "${webswing.configDir}/fonts/Roboto-Regular.ttf", "dialoginput" : "${webswing.configDir}/fonts/RobotoMono-Regular.ttf", "serif" : "${webswing.configDir}/fonts/RobotoSlab-Regular.ttf" }, "maxClients" : 100, "sessionMode" : "CONTINUE_FOR_BROWSER", "swingSessionTimeout" : 300, "allowStealSession" : true, "isolatedFs" : true, "debug" : true, "javaFx" : true, "javaFxClassPathEntries" : [ "${webswing.rootDir}/apps/javafx/*.jar" ], "directdraw" : true, "compositingWinManager" : true, "allowDelete" : true, "allowDownload" : true, "allowAutoDownload" : true, "allowUpload" : true, "uploadMaxSize" : 5, "allowJsLink" : true, "jsLinkWhitelist" : [ "org.webswing.demo.jslink.JsLinkDemo.*" ], "launcherType" : "Desktop", "launcherConfig" : { "mainClass" : "com.sun.swingset3.SwingSet3", "args" : null }, "userDir" : "${user}", "transparentFileSave" : true, "clearTransferDir" : true, "transparentFileOpen" : true, "autoLogout" : true, "transferDir" : "${user}/upload" } } }
Webswing Release Cycle[edit]
The Webswing release cycle follows Oracle's development cycle, the Java Support Roadmap, meaning major Webswing releases are scheduled for every 6 months (March and September). After Webswing version 2.7, upcoming releases are numbered with the following pattern: YY.n.m, where "YY" stands for last 2 digits of year it is released in, "n" for a number of release in the year (1 or 2) and "m" stands for minor patch release number (1-5).
Long Term Support (LTS)[edit]
LTS versions of Webswing are released every 18 months. Versions with public updates and fixes are supported for 6 months and LTS non-public versions for at least 3 years or indefinitely for customers with extended support plans.
Licences[edit]
Open Source - AGPL[edit]
Using Webswing Technology under the Affero General Public License (“AGPL”) was possible up to the Webswing Technology’s version 20.2. The Webswing company currently offers two types of Webswing licences.
OEMs, ISVs, VARs and Other Distributors of Commercial Applications[edit]
Distributors of OEMs, ISVs, VARs and other developers that deal with a commercially licensed software and do not want to share the source code, but still want to use Webswing for distribution, must enter into a commercial license agreement with Webswing Ltd. company.[3]
Academy & Non-Profit License[edit]
A free or significantly discounted license was created for charitable, non-profit organisations and educational institutions with a mission to better the world.
As an example, University of Limerick uses Webswing Academy & Non-Profit License for their java based application for running interactive experiments with human participants in a virtual environment (see www.viappl.org). [4]
Running on Webswing[edit]
http://neuronanobiophysics.utsa.edu/
https://www.zaproxy.org/docs/docker/webswing/
In open-source world[edit]
https://www.zaproxy.org/supporters/
ZAP - Webswing Usage[edit]
Starting with version 2.5.0 you can run the ZAP Desktop UI in your browser without having to install Java, thanks to Docker and Webswing.[5]
References[edit]
- ↑ Webswing “Webswing Download”, Retrieved on 11 April 2021.
- ↑ Ivanisevic, Nenad. "How to translate Java Swing Desktop app to Web app". medium.com. Nenad Ivanisevic. Retrieved 3 May 2021.
- ↑ "Webswing types of Licences".
- ↑ "Our experience with Webswing". www.ul.ie. University of Limerick. Retrieved 3 May 2021.
- ↑ "ZAP - Webswing Usage". zaproxy.org. ZAP. Retrieved 26 April 2021.
[1] [2] [3] [4] [5] [6] [7] [8]
See also[edit]
Case studies[edit]
WebSwing – Swinging Java The Java Desktop Into A Web Browser[9]
Our experience with Webswing [10]
Menjalankan Aplikasi Java Swing (Desktop) di Browser [11]
Publications[edit]
Java application for cytoskeleton filament characterization (JACFC)
WEBSWING: We are turning tech-debt into an advantage [13]
Webswing[edit]
- ↑ "webswing - Guide.wiki". code.google.com. Google. Retrieved 11 October 2019.
- ↑ "How To Make FloreantPOS for Mobile [On Windows Server]". naulinovation.com. naulinovation. Retrieved 11 October 2019.
- ↑ Bennetts, Simon. "WebSwing". github.com. GitHub. Retrieved 11 October 2019.
- ↑ "WebSwing для развертывания Tomcat (настройка)". qaru.site. qaru.site. Retrieved 11 October 2019.
- ↑ "WebSwing di distribuzione Tomcat (configurazione)". it.coredump.biz. it.coredump.biz. Retrieved 11 October 2019.
- ↑ "Our experience with Webswing". it.coredump.biz. ul.ie. Retrieved 11 October 2019.
- ↑ "Web Deployment of a Swing Application using Webswing". medium.com. John Q Public. Retrieved 11 October 2019.
- ↑ "WebSwing – Swinging Java The Java Desktop Into A Web Browser". mossintech.net. nigelm. Retrieved 7 June 2021.
- ↑ nigelm. mossintech.net https://www.mossintech.net/index.php/2021/05/29/webswing-swinging-java-the-java-desktop-into-a-web-browser/. Retrieved 7 July 2021. Missing or empty
|title=
(help) - ↑ www.ul.ie. University of Limerick https://www.ul.ie/dafinet/news-centre/news/our-experience-webswing. Retrieved 7 July 2021. Missing or empty
|title=
(help) - ↑ marisharingilmu.wordpress.com https://marisharingilmu.wordpress.com/2018/04/03/menjalankan-aplikasi-java-swing-desktop-di-browser/. Retrieved 7 July 2021. Missing or empty
|title=
(help) - ↑ Marucho, Marcelo. Department of Physics and Astronomy, The University of Texas at San Antonio, San Antonio, TX 78249, United States of America. ISBN 2665-9638 ISSN Check
|isbn=
value: invalid character (help) https://www.sciencedirect.com/science/article/pii/S2665963821000208#d1e85. Retrieved 3 May 2021. Missing or empty|title=
(help) Search this book on - ↑ Forbes https://www.forbes.sk/webswing-we-are-turning-tech-debt-into-an-advantage/. Retrieved 7 July 2021. Missing or empty
|title=
(help)
External Links[edit]
This article "Webswing" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Webswing. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.