The ULC Rich Client Paradigm
ULC works on both the server and the client side of
applications. On the server, ULC can take the form of a servlet
or a stateful session bean. ULC will work with any J2EE
compliant application server. On the client, ULC can be deployed
either as an applet or a Java application. Either way, the
client requires the UI engine, a 300kb kernel that controls the
Swing-based UI classes.
The interaction between ULC UI widgets and server-side logic is
all done using ULC's "half objects": the client half
handles the display, interaction with the user and sending
events to the server. The server half provides a proxy to
server-side logic. ULC includes a number of widgets, such as
drop-down boxes, trees and split boxes that can be used to
design a UI. Additionally, ULC handles remote server access by
loading only what is currently viewable by a user, and gathering
additional information as the user scrolls or otherwise opens up
to more data.
Additionally, UIs must be able to validate data and perform
simple logic on the client, minimizing network interaction. ULC
handles this in a number of ways. First, ULC allows for client
logic through validators (which validate data entry), formatters
(which auto-format data entry) and enablers (which enable other
widgets to change based on user interaction). Second, events on
the server are registered in ULC, allowing the ULC client to
only send information from registered events to the server.
Finally, ULC handles this interaction asynchronously. This means
that while the UI is awaiting response from the server, the user
will still be able to continue working and interacting with the
application.
ULC Development and Deployment
ULC applications are basically deployed in two areas: the client
and the server. The server aspect of the application is deployed
as the EJB or servlet, using whatever method you typically use
for J2EE deployment. The client can be deployed as an applet,
standalone or using Java Web Start. Coding ULC applications
simply requires coding the application as a single entity. In
the end, the application can be packaged in a WAR (or EAR if the
EJB server is used) file and deployed on the J2EE server.
Developing the client is done much as a Swing-based application
would be, in fact anyone familiar with Swing will take on ULC
development rather well. However, J2EE developers will have to
learn the art of UI development and all that entails. UI
creation, widget implementation and even handlers are all coded
and compiled to the chosen client technology.
ULC is extensible to a certain degree. ULC includes the ability
to access files and perform other client-side tasks, such as
launching information in a browser window. Additionally, Java
classes can be integrated on both the client and the server.
Conclusion
ULC is definitely a step in the right direction, it is nice to
see that someone is moving towards rapid development of rich
clients for the J2EE environment. ULC would be the right
application for some companies and some environments:
specifically controlled enterprise environments where every
computer will have access to a JVM and in departments where
Swing knowledge and non-SOA (Service-Oriented Architecture)
applications knowledge is readily available. However, Java has
had, and remains to have its problems on the client, primarily
JVM inconsistencies and performance issues. Many J2EE developers
are not fully comfortable developing with Swing. SOA
applications are becoming increasingly ubiquitous and I found no
mention of Web Services in any of the ULC documentation (Though
the documentation was surprisingly lacking for a 5.1 version).
ULC has some great features and will certainly reduce
development time, but we should look to the future for advances
in rich client technologies.
Drew Falkman is the author of the JRun Web Application Construction Kit and co-author (with Ben Forta) of Reality ColdFusion: J2EE Integration, both published by Macromedia Press. Over the past 6 years, Drew has developed over 150 Web applications in all sizes using ColdFusion and Java. Currently Drew consults, speaks at events, writes for numerous publications, and teaches courses at Portland State University. His latest project through his consulting company, Veraison LLC, was a real-time cattle auction using Flash Remoting and Flash Communication Server. In addition, Drew is a member of Team Macromedia, a certified ColdFusion Developer and a certified Macromedia instructor.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|