Ultra Light Client Java

Ultra Light Client (ULC) for Java is a widget set that enables a Swing Look and Feel for Servlets.

For Servlet Developers that long for Menus, ContextMenus, Quicktips, ProgressBars, Trees, Tables, TreeTables, Sliders, Toolbars, SplitPanes, TabbedPanes etc. the ULC is a library that deploys with your Servlet. Unlike Applets / JavaScript / Flash no code is transmitted to the client. All programming logic, incl. presentation logic, resides on the server using a swing-like API.

ULC consists of an application independent presentation client, together with a comprehensive set of components and server infrastructure for the development and deployment of thin client applications. Presentation distribution at runtime and network optimizations are transparent to the software developer. Hence, building applications with ULC strongly resembles fat client development.

The presentation client of ULC is called UI Engine. It connects to the server part of a ULC application and displays the user interface of such an application. The UI Engine is implemented in Java and uses the Swing library for displaying the user interface and handling user input. The UI Engine is fairly small (~280 KB) and can be run as a Java application or a Java applet. The UI Engine itself is stateless. The entire presentation state is maintained entirely on the server side, although the UI Engine caches the presentation state in order to improve performance. Traditional "hand-crafted" thin clients, by contrast, still tend to have parts of the application logic on the client, which in the long run makes it hard to keep client and server in synch.

The server side consists of a framework for developing and deploying applications which use the UI Engine to handle display and user input management. A ULC application is run as a server process and can serve many client UI Engines. The framework provides a set of user interface widgets which are customized for thin client applications. From a development perspective the application programmer interface (API) resembles the Swing library, although the widgets have been streamlined for distribution and minimizing network traffic. Experience has shown that developers familiar with Swing become productive in a very short time, usually less than a week. From a software development perspective the distributed architecture is transparent and therefore resembles the implementation of a fat client.

For more information go to http://www.canoo.com/ulc/. Check out the trial version!


Sounds like X :).
What the UltraLightClientJava has in common with X is that the programmer does not care about the distribution. In contrast to X (and e.g. TerminalServer?) the UltraLightClientJava does not send every local event (keystroke, mouse movement) to the server, but only those that the application needs to deal with. That makes it possible use it even through very low bandwidth connections.

There is another important difference: while in X all the logic is on the server, the UltraLightClientJava has specialized parts of the presentation logic on the client! There are for example validations of text entries that can be evaluated locally without server roundtrip. 'Enablers' allow you to set the 'setEnabled()' state of a widget based on the state of other enabling widgets. Again locally without server roundtrip. The trick is here to set some kind of constraints that are evaluated by the UI Engine. -- DierkKoenig


I like Java a lot, use it every day, and recommend it for many purposes. But... There are Java clients, and there are ultra-light clients, but there are not ultra-light Java clients, at least not in the absolute sense. A Java runtime alone (before you run anything at all, light or otherwise) is pretty heavy compared to complete applications written in various other languages. An interesting illustration of this is the Opera browser. The Java support add-on is considerably larger than the browser itself. -- KyleCordes

I totally agree. "Ultra light" is a relative value. Compared to some specialized platform-optimized clients it may better be called "medium heavy". Compared to typical Fat-Client Java Solutions its "super-fast almost-no-weight" :-) -- DierkKoenig


EditText of this page (last edited February 23, 2006) or FindPage with title or text search