views:

644

answers:

5

Ajax, Flex and Silverlight are a few ways to make more interactive web applications. What kinds of factors would you consider when deciding which to use for a new web application?

Does any one of them offer better cross-platform compatibility, performance, developer tools or community support?

+2  A: 

The web runtimes like Flex and Silverlight all offer enticing things, but come with two big costs:

  • They run only within a rectangle on the page, and don't interact with normal web widgets
  • They are only available to people who have that plug-in installed

Even the nearly-ubiquitous Flash isn't installed on every web browser, so by choosing to use a plug-in runtime you're excluding part of your audience.

In contrast, JavaScript (or Ajax) is available on pretty much every browser, and interacts better with normal web pages, but is a more primitive and restricting language. Using it for complex animations can be tricky, and you'll need to test your applications in more versions on more platforms to make sure it works.

Cross-platform compatibility isn't the issue it used to be, so the issue is this: Will you gain more in the features of a plug-in library than you'll lose in the audience you exclude?

My own answer has so far always been JavaScript/Ajax, but I'd re-evaluate that in any new project.

Marcus Downing
+1  A: 

What is your audience: public web site or an intranet business app? Adoption rates are not relevant if you have a controlled audience who will install what is needed to run your app. However, if you need the largest possible audience to make your web startup a success then it may be critical.

What is your goal? Building something for the lowest cost? Learning new technology?

Can you leverage your existing skills? If you already know .NET then Silverlight gets a boost. Learning Flex may be interesting and useful, but is it more useful to you than more experience with .NET technologies? Remember to consider the opportunity cost of learning something totally new.

I don't see a clear technology winner at this point, and likely there won't be one for a long time, so the choice will come down to fairly subjective factors.

Rob Walker
+13  A: 

Here's a quick rundown of each area (with lots of helpful links):

Cross-platform compatibility

Ajax works in any modern browser that can run JavaScript. Flex requires Flash or anything else that can handle SWFs but, once that's installed, it's a total freeride as far as compatibility. Silverlight is tricky and misunderstood so carefully consider your userbase before going with this MS foray into the rich web applications arms race. Also keep in mind that Silverlight is still in Beta, so it may become more widely used and installed in the future as it is developed.

Performance

I'm fearful of making too many statements about performance because it really depends on how much you are willing to optimize and the exact nature of your application. Also, some technology stacks are just never going to be very fast. Some people out there have been making comparisons, but again, it depends on a great many factors (even the version of the browser from which you are testing!). It's probably best to choose based on other factors and optimize once you've started to develop.

Developer tools

There are the "golden standard" dev tools for each of the three:

  • Ajax has basically unlimited options, depending on the rest of your technology and architecture choices. The big questions you're actually faced with are which libraries to rely upon, and Google has voiced a pretty well adopted answer with things like Web Toolkit. When you get right down to it, it's just XML and JavaScript, right?

  • Flex is from Adobe and, just like with Flash development, you'd better stick with their homegrown tools because--well--they're making the standards as they go along.

  • Microsoft has positioned Microsoft Expression Blend versions 2.0 and 2.5 for designing the UI of Silverlight 1.0 and 2 applications respectively. Visual Studio 2008 can be used to develop and debug Silverlight applications (from Wikipedia).

Community support

There is both official and unofficial community, corporate, and open-source support for all three options. Whichever you are already integrated with and which makes you feel most at home are very individual things, but I'll offer this advice: stick with what you know. If you are a MS developer and have MSDN as your homepage, you are probably going to think the Silverlight documentation and forums are really helpful. Flex has a very similar story; the forums are pretty good and if you're a Flash person already, you're going to be right at home with their documentation and user community.

On the other hand, Ajax is basically all over the place because you can implement so many different ways and use so many widely-varied libraries. Each library can have it's own forums to visit and mailing lists to lurk within for answers.

Once again, all three have corporate giants trying to foster their communities and to get the best support possible to the developers that will give them greater market share in the future.

Sean
+5  A: 

The choice should in my opinion be mostly based on the nature of the application you'll be building (for example, if you need to manipulate vector graphics, Ajax is pretty much out), but here are some general guidelines:

Ubiquity

  1. Ajax -- Supported by all modern browsers across platforms
  2. Flex -- Runtime (Flash Player) has very wide installed base for Windows, Mac OS, Linux. Linux version was a bit buggy the last time I checked, though
  3. Silverlight -- Runtime has quite low installed base (and no Linux support) at the moment

Choice of programming language

(Unordeded because of subjectivity, but note that Silverlight offers the most choice. Also note that the existing language experience of developers in your team should be taken into account.)

  • Silverlight: Any .NET language (C#, Visual Basic, IronPython(?), IronRuby(?)) (and XAML for UI definition)
  • Ajax: JavaScript (and XHTML for UI definition)
  • Flex: ActionScript 3 (and MXML for UI definition)

API Stability and compatibility

  1. Flex -- Runtime is the same across platforms and browsers, more mature and stable at the moment than Silverlight
  2. Silverlight -- Runtime is the same across platforms and browsers, less mature than Flex/Flash, v2.0 is still in beta
  3. Ajax -- Compatibility problems across browsers (may be mitigated via Ajax libraries, though)

Web/Browser Integration

  1. Ajax -- Content is native inside browser, based on standards: searchable by browser and search engine crawlers, subject to any standard UI practices the browser and operating system have established
  2. Flex and Silverlight -- Content not native to browser (i.e. runs in its own little "sandbox/rectangle"): not necessarily subject to established UI practices for the given platform

Developer Tools

  1. Ajax -- Your favorite code editor, browser and debugging toolkit for the browser
  2. Flex -- Flex SDK is available for Windows, Mac OS and Linux for free and can be used with your favorite code editor. A Command-line debugger is included, but the Adobe-provided profiler is only available in the commercial Flex Builder IDE
  3. Silverlight -- AFAIK, The SDK is available for Windows for free and can be used with your favorite .NET development tools
hasseg
A: 

Other than what's already been mentioned here, another huge thing to consider is what your UI is going to be.

If you're going to be using a lot of advanced UI controls like trees, lists, tab controls, etc then consider the following:

  • JavaScript/HTML - No native support for anything beyond things basic drop down boxes, buttons, and text fields. If you want something like a tree control or tab control then you'll have to roll your own or find a third party library.

  • Adobe ActionScript - Native support for a wide array of advanced UI controls

  • Silverlight - 1.0 had very limited UI controls, but 2.0 will be adding many more and I'm sure we'll continue to see controls added in future releases.
17 of 26