Most clients in Client/Server architectures follow the MVC pattern for
their GUIs. The View and Controller reside on the client and the Model
is distributed between the client and the server. The split between
the client part and the server part is normally done at the Model or
the Controller level. This is the usual fat client
architecture. This architecture has two problems, one of development
time complexity and the second of deployment.
The development is complex due the distribution at the model level
between the client and the server. The programmers endeavor
throughout is to keep the client side and server side models in synch
at runtime. A lot of effort is spent in establishing and coding the
client server communication protocol. In addition, the programmer
spends time on optimizing the client-server roundtrips by implementing
mechanisms like caching, request batching, etc., which are specific to
The deployment is complex because the client is application specific.
The client part has to be installed on each desktop and configured,
which is a time consuming and expensive process. This is especially so
for the internet/intranet applications which require seamless
deployment of the application on the end users machine over the
Solutions to the above problems exist in a flavor of Thin Client
architecture that splits the application between client and server at
the View level. In this architecture the client is an application
independent presentation component, which acts as a universal client.
The GUI is completely controlled from the server side and the
controller and the model too reside on the server side, the client
just interprets and renders the GUI. Thus the entire application is
server centric, which makes development and maintenance simpler. The
application independent client makes for the easy deployment.
Ultra Light Client (ULC) from Canoo Engineering AG is an efficient and
complete framework, which implements the above mentioned architecture.
ULC is a Java framework for developing thin client internet/intranet
applications. An ULC application has two components. The client is an
application independent, thin, presentation component, which renders
the applications GUIs using SWING. The presentation component
is 300KB of Java code, which can run on the client as a standalone
Java program using Java Web Start or as an applet within a Web
Browser. The server is the ULC application, built using ULC UI
components/widgets, which runs as a Servlet or an EJB session bean in
a web or an EJB container. ULC applications are pure Java applications
and fully compliant with the J2EE standards.
ULC has the following advantages:
For developers, ULC enables faster development, almost 50% faster, as
compared to a comparable applet/fat client solution. This is because
of the fact that ULC framework takes care of client/server
distribution, communication, and roundtrip optimizations thus saving
lot of programming effort on the part of the developers.
For the end user, ULC delivers fat client like GUIs that are much
richer as compared to HTML based solutions. Additionally, it keeps the
cost of ownership low because of the application independent client.
Such a client is good for any number of applications on the server and
does not have to be reinstalled if the application on the server
For more information: www.canoo.com/ulc