Hawaiʻi's Technology Community

The Three Horse Advanced Web UI Race

During this trip I had the opportunity to chat with a customer about bringing a complex financial desktop application to the web. For this type of application the options we look at are Flex, GWT and Silverlight. All three technologies are capable of producing rich, desktop-like UIs. All are backed by software giants (Adobe, Google and Microsoft respectively.) A good team of developers could do the job with any of these technologies, so which is the best choice? To some degree, it depends on your team. If you are a Microsoft shop you are going to use Silverlight, Adobe guys will use Flex and Java guys will use GWT. But lets say you have a mix and you could go with any of them.

Flex and Silverlight take the VM approach. Rather than dealing with the shortcomings and variability of browsers, they use their own execution environment embedded in the browser. Flex uses the ubiquitous AVM2 (Flash runtime), which has about a 98% penetration rate and runs well on Windows, OS X and most Unix/Linux desktop environments. Silverlight uses the .NET CoreCRL, which currently has only about 25% penetration, but those numbers are increasing quickly. Silverlight runs well on Windows and reasonably well on OS X (a bit slow.) The Moonlight project provides a Sliverlight port for Linux and Unix/X11 based systems but it lags behind the official releases.

Because Flex and Silverlight take a similar VM-based embedded approach they are easier to compare head to head. As a result of Flex's head start on Silverlight, it has a much larger and more robust set of UI controls. WinForms and Swing developers will find all the controls with which they are familiar. Only with the recent beta release of Silverlight 3 do developers get controls such as grids and trees out of the box. Because of the large selection of easily customized components, Flex apps are easy to build. Thanks to a large selection of excellent skins, its easy to make Flex apps look great.

Silverlight is the clear winner in terms of the VM. Silverlight's runtime was designed for application development and supports concepts such as threading. The current version of the AVM still shows signs of its origin as a runtime for Flash animations. It does not, for example, support threading. Silverlight applications can be developed in any .NET language, and the DLR provides the ability to run interpreted code in the client. The presence of an interpreter in the runtime provides an enormous amount of flexibility for features such as user scripting.

GWT allows you to write desktop-like web applications in Java and "compile" them into AJAX UIs. The compile step generates UIs optimized for every popular browser, which means your application will load very quickly, have good performance characteristics and be available to virtually everyone on the web. Google has done an excellent job of providing a solid core, and third party developers such as Ext JS are building impressive higher level widget libraries and skins. There are some limitations to this pure AJAX approach such as an inability to provide the advanced vector graphics and media capabilities of Flex and Silverlight. In these cases it is possible to integrate Flash components and call their APIs via Javascript. You see examples of this in some of Google's recent applications.

Thats it for now. I plan to write follow up posts as these technologies progress. I'm interested to hear which horse TechHuian's are backing and why.

Ikayzo - Design • Build • Localize | Web • Desktop • Mobile

Views: 212


You need to be a member of TechHui to add comments!

Join TechHui

Comment by Konstantin A Lukin on June 2, 2009 at 10:04am
I agree. Google, GWT, AppEngine combo is great. They just released support for Java, GWT 1.6, Eclipse plug-in. I had a chance to develop a simple app, no problem, smooth and pleasant integration. Great documentation, so there is really no need for extra books, etc.. Google Checkout is also pretty fantastic, they recently released support for subscriptions. I would like to see integration of GWT and Checkout API in the near future, which would be a really nice combo for e-commerce sites!
Comment by Kurt Olsen on June 2, 2009 at 9:45am
My choice would be to go with the tech-suite from Google: GWT, AppEngine, Checkout, Deployment, Chrome etc. The integration of their tools is what sells me. You can do a lot of web-work easily using this stuff. Profit.
Comment by Daniel Leuck on May 28, 2009 at 4:33am
Thank you Seth. I'm glad you found it useful.

Hi Nate. Silverlight provides access to the CLR's System.Threading.Thread (managed thread) class. The mapping of managed threads to OS threads is left to the host, but its normally 1:1, so you should be able to take advantage of multi-core processing. Like Swing, the UI uses a single thread, but background threads can do as they please.
Comment by Nate Sanders on May 27, 2009 at 9:29am
Has anybody done benchmarking on these guys? I think the choice of technology is mostly going to be tied to look&feel, what the team is most familiar with, etc, but if you had to do a computationally intensive web app, what would you do it in? Also, are Silverlight's threads intra-VM threads or do you actually get a kernel thread so that multi-core matters?

Good post -- I didn't realize that Silverlight was so different than the Flash runtime.
Comment by Seth Ladd on May 26, 2009 at 2:52pm
nice write up, thanks!


web design, web development, localization

© 2022   Created by Daniel Leuck.   Powered by

Badges  |  Report an Issue  |  Terms of Service