Adobe Flex for MV GUI

Comparison with Silverlight

Silverlight was created by Microsoft and has been called the "Flash Killer". Silverlight is a step behind Flex but it’s really the same: a plugin, XML, and code. Seriously – now that you know what Flex is, you also know what Silverlight is. It’s just a different plugin. The next part of the evaluation is to determine which one is more mature, offers more features, has the bigger community for support, etc.

Silverlight entered the arena with v1.0 targeting Flash and the visual / glitzy aspects of web design. v2.0 added Flex-like controls for text input, lists, grids, etc – more for RIA. It’s still behind Flex but not for long.

With Silverlight, the code can be any of over 30 .NET-compliant languages (including Ruby and Python), not just JavaScript-as-ActionScript. That means anyone who’s already been using Microsoft tools for application development can use Silverlight for RIA. The experience of most JavaScript developers is limited to browser work, not really application work. What’s the significance? Flex developers are roughly divided into groups of two calibers, people who know scripting, and "real" Flex Developers. The real Flex Developers are familiar with OOP, complex logic, and all of the things that application developers have been doing for years. I think they tend to come from a pool of Java developers who have been disillusioned with the lack of Java applets to dominate web development. And this means…? I think with Silverlight the pool of resources is pretty shallow at the moment but the potential for Silverlight to attract a large number of developers is increasing quickly. Flex already has a good pool of developers so some may find this isn’t such a big deal. I dunno – we’ll see.

One of the great things about Flex is that it can be deployed just about anywhere. The Flash plugin has a deployment base of anywhere between 90 and 99% of all PCs – almost everyone has the plugin already installed. The plugin is also available for Mac and Linux and works in virtually all browsers. Silverlight also plugs into just about everything, with Moonlight being the non-Windows version for Linux, Mac, etc. But the cross-platform, cross-browser aspect of Silverlight is also way behind Flex. Silverlight also does not yet have the wide distribution of the Flash plugin. Many years ago I was adamantly against installing "yet another plugin". These days I consider it a mostly necessary evil. If the plugin can be trusted, and I think both Flash and Silverlight can, IMHO there’s no reason not to have both on one’s PC. The opinion of many people differs, and while they’re OK with Flash they are firmly against installing Silverlight. Frankly I don’t see any logic in that whatsoever. It’s just another plugin, this is the way browsers work these days, get over it.

Anyway, I think a key difference between the products is that Flex is for web developers to create RIA, and Silverlight RIA is for application developers to create an attractive browser UI – the audience is very different though Adobe and Microsoft seem to target the same audience in their marketing. Microsoft then has to make great distinctions. They demonstrate the collaboration aspects of Silverlight, with people using Visual Studio for rules and Flex-like RIA, and products like Blend and Expression for the Flash-like eye candy. Well, to some extent Adobe does the same thing with their MX products and a stream of offerings that only serves to confuse people about a simple topic: "how do I create a Flex RIA?" The bottom line is that both of these companies over-complicate their offerings with the commercial value-add products that just seems to chase a lot of people away from either of them.

Comparing ASP.NET to Silverlight

In case there is any confusion, Silverlight and Flex are all about putting code in the client. ASP.NET is server-side technology which dynamically renders controls for a specific browser, and events from those controls are largely handled by C# or VB.NET code on a server. JavaScript is often used on the client for minimal validation and some UI functionality. With Silverlight, a subset of the .NET Framework is loaded on the client along with the plugin. This is the same sort of underpinnings required to support Flash or Java Applets. Code deployed to the Silverlight plugin is run on the client, including event handlers, much of the validation, and even a good amount of the business rules. Running code on the client eliminates a lot of round-trips to the server, which is good for performance, network traffic, and other factors.

There is a sense of elegance with Silverlight, running the same code on the client as one uses on the server. Why use VB.NET on the server and JavaScript on the client when you can use VB.NET at all tiers? And as mentioned above, developers can now use Ruby and Python on the client instead of just on the server. For some people that’s a big deal and the concept of Dynamic Languages has the attention of a lot of people. Hehe, now a lot of people just need to get over the mental speed bump to accept that they need to use a Microsoft tool to do that. As we’ll see soon, you can still use ASP.NET, Tomcat with Java, your LAMP stack, or any other back-end with either Silverlight or Flex.

What about AJAX?

Ajax is about asynchronoous communications between the browser and server. It has nothing to do with the UI, or processing events (except routine events to a server that can handle them). It’s a real stretch if you ask me, but both Silverlight and Flex can be said to use Ajax as the communications mechanism to courier data transparently between client and server.

Java Applets? PHP? What else is there?

There are so many options out there. IMO, Java just hasn’t captured the imagination as people expected it would so many years ago. If you were going to use Java Applets, you’d be there already, so maybe we can take that off the table.

Creating a user interface with PHP is not trivial. Opinions vary widely about how good a language it is. It trumped Perl but various inadequacies just fueled the development of Ruby. PHP is server-side only and you’re still going to have to face issues with browser-specific nuances for rendering controls and processing events. That doesn’t exist with Flex.

What else? You could use Omnis Studio. It’s fine software and also uses the plugin method of deployment, but honestly I don’t see it surviving as an expensive and complex tool in a climate where most everything else is free, popular, and relatively easy to use. Unless the people who own Omnis wake up and figure out how to market that offering in the modern world, I don’t see it going anywhere new.

5 thoughts on “Adobe Flex for MV GUI

Leave a Reply