Coding -- stateful clients and comparison of adobe flex, google web tool and OpenLazlo

Kevin Whinnery blog -- The defining characteristic of any RIA is that it has a stateful client that is (or should be) platform and browser independent. With the advent of new RIA platforms like Flex, GWT, and OpenLaszlo, developers now have all the reach of a traditional thin-client web application with many of the useful characteristics of thick-client applications, such as the ability to maintain state on the client. Is there a clear winner of the three, one toolkit that developers should focus on at the expense of the others?

Kevin Whinnery blog
Source link

Here I thought I would dedicate a little web space to throwing in my two cents about what I think those strengths and weaknesses are. Is there a clear winner of the three, one toolkit that developers should focus on at the expense of the others? I don’t really think so. Much of that decision is based on the requirements for your project. But Flex, GWT, and LZX are certainly not created equal for all tasks, and I hope to give you a sense of what tool is going to be the best choice for your project.

In grade school teacher style, I have scored these three frameworks based on my own appraisal of their utility in the area specified:
Flex Report Card:

* Language Syntax: B
* Development Process: C+ (B+ with purchase of the 400 dollar Flex Builder Eclipse plugin)
* Widgets/Features/Power of Toolkit: A
* Ease of Deployment: B
* Server-Side Data Integration: B+
* Client-Side Performance: A-
* Platform Flexibility: B-

Notes:

Adobe Flex, in my opinion, is the most powerful of the three frameworks in terms of what you can accomplish visually with the least amount of work. Native drag and drop support for many widgets, CSS-type styling for components, and fine-tuned control over component behaviors give the developer the most tools to do wild and crazy stuff with their user interface.

The language syntax is based on XML and ActionScript, which coupled together provide an expressive means of composing a UI. MXML tags work well to nest components and easily create layouts that are human readable. In terms of client-side performance, Adobe Flex 2 stacks up pretty well, as version 9 of the Flash Player (required for Flex 2) offers some serious performance upgrades over previous versions. Flex is agnostic in where it retrieves server-side data and provides solid functionality for SOAP web services, REST web services, and Java/ColdFusion remote object functionality (though I’ve never personally used the remote object stuff).

In the negative column, Flex is (ironically) the least flexible of the frameworks in terms of platform, as it can only run in version 9 of the Flash Player (and it can be compiled for Adobe AIR, but that is a topic outside of this conversation). The good news is that according to Adobe, over 90% of the web community in most developed markets already have Flash Player 9 installed, and that number increases all the time. And unless you purchase the spendy Flex Builder Eclipse plugin, the Flex development cycle can be a chore, as Flex files must be compiled via a script. Also, the command line debugger is not very user friendly when compared to most modern IDE debuggers.

See next page for GWT Report Card and OpenLaszlo Report Card...

GWT Report Card:

* Language Syntax: B-
* Development Process:B+
* Widgets/Features/Power of Toolkit: B
* Ease of Deployment: C
* Server-Side Data Integration: A
* Client-Side Performance: A-
* Platform Flexibility: B+

Notes:

GWT has a lot of very cool, fascinating features that I have only begun to scratch the surface of. Generally speaking, if you like Java and your server back end is going to be Java, then GWT is almost certainly the way to go for you. GWT apps are written in Java, which allows you to use existing knowledge in that area to get started fast and get others up to speed quickly. You can develop GWT applications with your favorite Java IDE and debug them just as you would a regular Java app.

GWT apps integrate very well with Java server back ends by providing the best remote object style integration of any of the frameworks. GWT is also technically agnostic when it comes to retrieving server-side data, so support for other web service types is available as well. The JavaScript created by the GWT compiler performs well (see Gmail), and the finished product ends up looking pretty nice, if not on the same level as a Flex application. The generated JavaScript also protects the developer from browser quirks (for the most part), and functions very well cross-browser, giving GWT apps solid flexibility.

The big knock on GWT for me is actually what is touted as its greatest strength - the fact that you write UI logic in Java. I am a huge fan of Java on the server side, but laying out components for display in procedural code gets tiresome very quickly (see this post for more on that topic). But for registered Javaphiles that want to take advantage of their existing skills and IDEs, you can’t beat GWT.
OpenLaszlo Report Card:

* Language Syntax: B-
* Development Process: B-
* Widgets/Features/Power of Toolkit: B+
* Ease of Deployment: B-
* Server-Side Data Integration: B
* Client-Side Performance: C
* Platform Flexibility: A+

Notes:Open Laszlo, without any heavy hitters advocating and supporting its development, is less polished than the other two frameworks on this list, but provides some features and characteristics the other two lack. IDE support is non-existent, but luckily Laszlo features an interactive debugger that lets you inspect your application’s state in the browser window and execute arbitrary methods, which is handy. Like Flex, it allows very fine-grained control over component look and feel, but lacks a CSS-type means of skinning all components in an application. But Laszlo’s main differentiator is that it is runtime agnostic, and is meant to (eventually) be compiled for all kinds of platforms, such as Flash and DHTML (currently supported), and in the future Java ME, iPhone, Silverlight, you name it. If you’re looking to run the same code on a lot of different devices and platforms, Laszlo is worth a look.

The main deficiencies of Laszlo are apparent in its lack of polish when compared to the other platforms. The out of the box widgets look shabbier and the animations are not as smooth as a Flex equivalent. In my personal experience, some of the components don’t work exactly as advertised, which requires a lot of message board hunting at times when problems arise. And client-side performance is an issue, as the Flash binary that gets generated by Laszlo does not perform as well as a Flex 2 equivalent, and the DHTML versions are a little pokey at times as well. For those that need the platform flexibility Laszlo provides, it really is the ticket. But in other areas, Laszlo does not have much to recommend its self over the other frameworks on this list.

Conclusion

Hopefully, this will help you start to evaluate for yourself the strengths and weaknesses of the various RIA platforms that are out there, particularly these three. All are generally serviceable for most RIA applications, but sometimes optimal choices can and should be made given the requirements of a project. If you’re looking for maximum control over presentation and the best possible appearance for the finished product, I would say Flex is probably the way to go. If you’re a Java developer using Java on the server side, or you just can’t stand the thought of having your app run in the Flash player and would prefer JavaScript, GWT is probably going to work out very well for you. Open Laszlo is going to offer a great deal of platform versatility, but at the expense of some polish and features available in the other two frameworks.

Godspeed on your next RIA development project…

Resources

Recent Assets

  • Top100Logo2013.png
  • DieterTolksdorf2_web.jpg
  • hp-portfolio.png
  • mt41 (2).png
  • mt41 (1).png
  • IGEL_Gebaeude_small.jpg
  • army-zero.jpg
  • IGEL_Markenbekanntheit_sm.jpg
  • IGELDualCoreOffensive.jpg
  • UD3_Dual_Core.jpg

About this Entry

This page contains a single entry by Staff published on January 24, 2008 2:34 PM.

Panel-PC Integrated Thin Client from IGEL was the previous entry in this blog.

Linux Thin Client Networks Design and Deployment guide is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Monthly Archives