RIA platforms lend apps more Flash
Macromedia Flex and Laszlo Presentation Server bring new tricks to Internet application delivery
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.
This version of Flex shows off a new data-grid component that does a fine job of displaying tabular data. I was able to wrap text and images within cells and easily customize row heights. I also preferred the full range of mouse-tracking events, which accommodates mouse-over events, unlike LPS's button messages.
Laslzo has done a good job of improving the LPS developer's guide, and this version offers an impressive number of prebuilt components for building interfaces. I easily modified visual properties programmatically; for example, to highlight a screen element to capture a user's attention based on the value of a variable. With absolute and relative data addressing via XPath, working with LPS's XML data trees was easy.
I did encounter minor rendering difficulties with LPS, and I think better text manipulation tools would benefit layout efforts. Nevertheless, the outcome was a slick-looking application that far surpassed anything possible using straight HTML-based markup.
I found SOAP performance slow and SOAP header support lacking in LPS, but the additional whitelist tag helps to extend security over Java classes being called from your applications. LPS now supports Web services calls using Java RPC, XML-RPC, and SOAP-compressing transmissions using gzip. Flex adds its own AMF (Action Message Format) protocol for binary transfer and compatibility with Flash Remoting.
When it came to running my applications, there was a discernable performance difference between Flex and LPS during both the initialization sequence and in overall server responsiveness. In the past, I found LPS to be sluggish. Although Laszlo has made some improvements to that end, the latest version remains stymied by underperformance.
In general, application startup and initialization performance was better in Flex. Macromedia has re-architected its delivery framework, separating underlying Flash libraries from application code. The new run-time libraries improve performance by allowing applications to share a single code base. Users receive the foundation and application code in the initial transfer, but subsequent applications require downloading only application-specific code, which saves bandwidth.
LPS 2.2 includes a new tool called Krank to help developers optimize application startup performance. Krank jumpstarts initialization by precompiling static views directly into the app, bypassing startup on the client. The problem with Krank was that it caused my applications to grow considerably, often to more than twice and, in one instance, three times the size.
Any perceived user benefits from Kranking an application need to be weighed against factors such as bandwidth availability and processing capability of the client. Some type of profiling tool would offer developers more than the trial-and-error insight currently available.