Building effective applications -- ones that can be distributed and run smoothly over the Internet -- requires circumventing
the shortcomings inherent in static Web browser delivery. Many companies are turning to RIAs (rich Internet applications)
to achieve that goal.
Two updated products, Macromedia Flex 1.5 and Laszlo Presentation Server 2.2, offer RIA platforms with a delivery model involving
server-side proxies for data aggregation and the Macromedia Flash run time as a desktop thin client.
These Flash applications request and receive data via the server but manage the presentation layer and processing logic locally.
The interaction feels like a desktop application, runs in a browser, and, after the initial application is loaded, requires
only a minimum amount of data transfer to update the local display. The process reduces the number of round-trip page refreshes
required to accomplish a task using browser-based HTML delivery.
The Flex and LPS (Laszlo Presentation Server) platforms have a distinct advantage over other RIA vendors in that Flash run
time has broad market penetration and acceptance, making it a trustworthy delivery model for consumer-side applications.
Further, your UIs get a usability upgrade thanks to the glitzy Flash animation. With effects now accessible programmatically,
there's no need for developers to endure the tedium of frame-based animation.
Macromedia and Laszlo take different approaches to reach the same goal. Unlike Macromedia's bundled IDE, Flex Builder, Laszlo
offers no development tools to speak of, aside from a rudimentary debugger. However, Laszlo recently open-sourced LPS under
the CPL (Common Public License), making it available free for commercial reuse and perhaps a little easier to justify to a
cost-conscious executive.
Because Flex and LPS are just presentation-layer tools, they snap onto, rather than replace, existing back-end infrastructure.
That makes it easy to build and deploy apps at a fraction of traditional development costs. With features for charting and
support for Web services calls, they make a good match to tasks like improving customer service initiatives and implementing
executive dashboards applications with ease.
Overall, both vendors did an impressive job. In the grand scheme, though, you'll still need to look to Integra SP's AltioLive
and other vendors for bells and whistles such as XML transformation tools or Web services connection wizardry. For features
such as offline sync, local file access, reliable persistence, and information sharing across local RIA apps -- like the baked-in
capabilities in Digital Harbor's PiiE -- you'll need Macromedia Central to circumvent Flash sandbox restrictions.
RIA Showtime
Getting started with these packages was easy; both use a one-click process to set up the server. LPS streamlines installation
by bundling and installing all of the third-party pieces in its Java-based infrastructure -- namely, Jakarta Tomcat app server,
Python XML parser, and JGenerator (an open source tool used to merge run-time data into Flash bytecode, similar to Macromedia's
Generator).
The architectural basics of LPS and Flex are grounded in the same primary fundamentals: a Java application server platform,
with XML and JavaScript (ActionScript, in the case of Flex) defining a foundation class for event management and data binding,
and a variety of canned, customizable interface components for building event-driven apps.
Both vendors' development languages are XML-based. LPS has its own LZX presentation language, and Flex uses MXML (Macromedia
Flex Markup Language). Although both were easy enough to follow, Flex Builder, included in Flex's pricing, is a welcome addition
for quickly creating and binding interfaces.
However, there's something disappointingly ironic about a UI development platform being as deficient in its own user interface
as Laszlo is, because it lacks an IDE. Flex Builder, on the other hand, provides a DreamWeaver-like experience for managing
MXML. I could work in both code view and design view simultaneously, easily effect data binding, and work with events from
a pallet of predefined behaviors.