Swingweb is a web-application framework that enables AWT/Swing application to be operating inside a web container and presented as a web application to the web browser, purely in HTML/CSS/javascript. The swing application will render and behave the same in the web-container as it is running as a desktop application. There are little knowledge required for the developer to start developing swingweb application as long as they are familiar with swing UI development.

The main goals of the Swingweb framework are to:

  1. Enable true component-based web-application development platform

    Swingweb allows the developer to specify the web-application in terms of UI components/models and their interactions. The functionality of the web-application is more tightly defined as opposed to page-centric model where functionality is composed by loosely gluing pages together. Furthermore, the application is guaranteed to work as long as all UI components are unit-tested. There will be no more page-management and http session-state manipulation hassle. Once written, the component, either fine-grain like a text-box, or coarse-grain like calendar, will be reusable and save development costs over time.

  2. Use swing UI model for web application development

    Swing component model is one of the best and most practiced UI model for java platform. There should be no learning curve for most Java developer to pick up web-application development using swingweb. Swingweb tries to make distintion between desktop and web application development as transparent as it could be yet at the same time maintains flexibility on the controls of the look and feel of the web-application through UI component templating system.

  3. Allow rapid development using existing GUI editors for web application development

    There are a lot of good tools for swing application development. Most java IDEs (including eclipse) also contain GUI editors. The editors allow the developer to rapidly develop, maintain and change the application in response to changed requirement.

    Save development cost by merging the development process of swing desktop application and web application

    Given the right archictecture, the desktop and web application development can be merged into a single process and thus reduces development cost.

Some of the features of Swingweb include the following:

  • Support web-environment with multiple concurrent application sessions

    While most desktop applications are designed to run in a stand-alone jvm, swingweb extended the AWT toolkit implementation so that multiple applications can run in a single jvm, yet making each application session become isolated so that the running applications will not interfere with each other's operations.

  • Component-oriented architecture that allows developers to enable existing swing component to web environment easily

    Swingweb underlying framework allows developer to control how the interaction and event-input of each component individually. Thus it is very easy to extend an existing swing component (e.g. some third-party widget) so that it can operate in web environment.

  • Flexible template-based approach allowing changing look/functionality of component/application

    The rendering of the each swing components is provided through a template file that is written in jxp template language (essentially java language). Thus it is very easy to control the look and feel of a component as web widget. Furthermore, the template can be configured per component type or per instance.

  • Transparent URL manipulation and session management inside swingweb application

    Swingweb support url manipulation so the developer can customize how the browser url changes as the interface changes. The application can also access and react to url changes using very simple API. There is also API for accessing/setting session value.

  • Share-app mode to allow developing scalable high traffic web-application

    Share-app mode is a special deployment mode where one instance of the application can look and behave differently to different user simultaneously. This makes the application become scalable because only one instance of the application is instantiated within the web container for any number of clients. Only minor tweaking is needed to make the swing application share-app mode enabled.

URL: http://swingweb.sourceforge.net/swingweb/
Licence: LGPL