How Does it Work?
ULC is based on a presentation server
development paradigm, where the business logic (such as managing the state of a shopping cart) and the presentation logic (such as managing the state of user selections on a list) run on the server, and the user interface display status (such as list widths and relative sizing) are handled on the client. This is done to minimize server round trips as much as possible. So for example, if you make a list selection and want the UI to update accordingly, it should only have to request informationnot presentation, from the server. It handles presentation on its own, reducing bandwidth and increasing performance. It does this through an innovative half-object
design paradigm, where essentially half of the object runs on the server, and the other half on the client!
This also helps with scalability and portability of applications, as should you need to move across servers, that support different versions of the servlet framework or Struts, you have no problemsthe client engine handles all the UI and visual presentation and your server infrastructure just delivers information to it.
This is the value proposition of Canooa cost-effective best-of-all-worlds approach that can give you rich GUI from pure Java code, managed by a commercial-grade presentation engine.
Writing Code for UltraLightClient
Once installed, ULC, comes with a wealth of documentation, which is useful, but the documentation is in PDF format, which is a bit of a drag. It would be much nicer if it was in an easy-to-manage format, such as Help files, or at least HTML. (There is an HTML-based JavaDoc format API documentation, but everything else is PDF.)
Coding ULC is like coding any other Java GUI, requiring amany lines of code for the simplest task. If you are an experienced Java GUI coder with Swing or other APIs you'll take to it like a fish to water. As an example, the header box from Figure 1 above requires this code:
ULCBoxPane result = new ULCBoxPane(4, 0);
result.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
result.add(ULCBoxPane.BOX_LEFT_EXPAND, new ULCLabel(IconFactory.getIcon(Constants.LOGO_ICON)));
result.add(ULCBoxPane.BOX_LEFT_EXPAND, new ULCLabel(IconFactory.getIcon(Constants.TITLE_ICON)));
result.add(ULCBoxPane.BOX_RIGHT_EXPAND, new ULCLabel(IconFactory.getIcon(Constants.CANOO_ICON)));
Should you want a code generation tool, based upon a Visual Editor, Canoo offers an Eclipse-based one for an extra fee.
If you have to develop and maintain a Web-based application (and who doesn't nowadays) you will have doubtless encountered many design debates over fat vs. thin clients and endlessly evaluated the advantages and disadvantages of each. ULC from Canoo offers an innovative best-of-both-worlds solution that could be perfect for your needs. It isn't perfect: the documentation could be better and an integrated visual design environment would be handy, but it is certainly an innovative solution that is worth checking out. It is quite unique and difficult to compare with any other GUI toolkit because of the nature of its 'half-object' approach, but you can download an evaluation from http://www.canoo.com/ulc and see if it suits your needs.
UltraLightClient costs $1,499 per seat (developer).