What is UltraLightClient (ULC) all about?
Designed for full fledged desktop applications, Swing is the Java standard for high-end rich user interfaces. There is only one drawback with conventional Swing-based clients: they do not fit into a web architecture that runs all services on the server-side with the exception of the user interface. ULC resolves this issue by bridging the gap between Swing's user interface components and a web architecture, thus enabling you to leverage both the advantages of client-side Java and server-side application management.
As a developer, you build the application GUI using server-side proxy classes that offer the familiar API of Swing, e.g. ULCTable instead of JTable, ULCTree instead of JTree, etc. The ULC library then takes care of the separation between client and server, including object synchronization and communication. The application runs on the server, except for a thin, client-side Presentation engine that serves any number of applications, like a browser.
An application communicates with the Presentation Engine via any of the standard Java EE channels (HTTP or HTTPS), where the choice of protocol is merely a matter of configuration. Note that ULC is a lean library that affects only the presentation layer of an application; for all other layers, the architecture is entirely open.
The entire state of the application is maintained on the server. The Presentation Engine displays the user interface and forwards user interactions to the server. Smart event handling, lazy loading and caching ensure that both client-server interaction and network traffic are optimized. The server-side model simplifies development and maintenance, while built-in optimizations facilitate scalability and performance. A special development runner runs a ULC application as a simple Java application where both the client and the server run in the same Java Virtual Machine. This obviates the need of deployment in an application server during the development phase.