It seems that nowadays we have two big players on the RIA framework/tools market willing to win the battle: the older and experienced Adobe and the newer but powerful Microsoft. Sometimes it's quite difficult to see the differences in both of them, but it's even harder when they have more than a single framework tool for it. After looking through my visitor statistics and search keywords I've decided to write a bit about some of the differences and how I see them so it may keep simpler for some of you to decide or clear your mind.
At first sight, both companies aim to improve richness in applications with the goal to create better user experiences in web and desktop. But here comes the problem, each company has a solid base of followers with a very different skill and mind set. Adobe has a solid legion of designers, creatives and art directors willing to use their blades to create beautiful applications while Microsoft has fervor followers devoted to code, enterprise and business workflows aiming to improve internal processes and services. So, what happens when any of the former try to walk across the line of their competitors? Exactly the actual situation, we have both things in both places performed in different ways and by different people. So to clear a bit the tidy waters here's my two cents on explaining what are the differences among them.
Let's start from the beginning. Flash. It's an small plugin/addin to web browsers that creates a player for a custom animation format created by FutureWave in 1993 and modified to work with vectors and frame-by-frame animation in 1995 before Macromedia bought the product in 1996 renaming it to Flash (contraction of Future Splash) and distributed it the way we know it today before it was bought by Adobe in late 2005. Actually the Flash feature set can be resumed in:
- Multi-browser support (Safari, Opera, Internet Explorer, Firefox)
- Multi-OS support (OS X, Windows)
- Programmability support (Action Script)
- Software rendered (until Flash 10 hits the market and adds support for GPU acceleration and pixel shaders)
- 3D support via third party frameworks (like Paper Vision, that are software based, until Flash 10 adds 3D support)
- Used via Embed or Object tags and instantiating a plugin in each browser
- Vector based animations and transformations (using the Tweening method)
- Frame based animations (similar to traditional animation)
- Multimedia support for streaming video and audio
- Capable of running in desktop without web browsers (creating, in Windows, an executable player with animation embedded)
- The drawing and animation format is proprietary, although it has been opensourced recently
- Authoring tool is Adobe Flash CS and it's license based
So after the Flash hegemony for almost a decade it came the turn to Windows Presentation Foundation, shorted to WPF. It's a complete platform for developing new user interfaces and a re-write of the graphics subsystem for the .NET Framework 3.0 that was released in November 2006. One year later, a new version of the framework was released and Windows Presentation Foundation was updated to 3.5 with new features and improvements. Actually the WPF feature set can be resumed in:
- Supported in Windows Vista and Windows XP SP2 or higher (added support for Linux systems with The Mono Project)
- Browser applications supported in Internet Explorer (via XBAP Applications)
- Programmability support (the complete .NET Framework and Microsoft Enterprise Servers SDK's)
- Hardware rendered (it relays on the operating system and hardware, that's the reason why it's only Windows based)
- Direct 3D support (included through the DirectX API)
- Vector based animations (it has no transformations of objects, it has path transformations but can't add or remove nodes, just animate them)
- Time based and Event based animation model (quite different form Flash, and the harder part for Flashers to understand)
- Running directly on desktops and capable of running embedded in Internet Explorer (but user needs .NET Framework installed)
- The drawing and animation format although somehow proprietary is based in Declarative UI trends
- Authoring tool is Expression Blend for animation and interaction design and Expression Design for vector design, both of them license based
- Code authoring tool is Visual Studio 2005 or 2008 and it's also license based
And after all this started to create a branch of applications in web and desktop the hordes arrived with Silverlight and Air. To me, it seems that both companies aimed to get a marketshare of their competitors or to extend to a broader audience by supporting online and offline scenarios. So here we go with the two newcomers.
At first hand, Silverlight, formerly WPF/Everywhere, appeared in September 2007 and it was soon updated with new preview releases of Silverlight 2.0 since exactly the same date. The latest version, 2.0, is supposed to go out around September 2008. Silverlight is an small browser plugin that includes a Dynamic Language Runtime with a subset of the .NET Framework and support for interoperability through WCF and REST services. It may seem that Silverlight is the WPF subset to compete on the web with Flash. Nowadays, the Silverlight feature set can be resumed in:
- Multi-browser support (Safari, Opera, Internet Explorer, Firefox)
- Multi-OS support (OS X, Windows, Windows Mobile and Linux via Moonlight)
- Programmability support (a subset of the .NET Framework)
- Software rendered (although some hardware acceleration is included for Scale transformations)
- Multimedia support for streaming video and audio
- No 3D support (some third-party frameworks add basic functionality)
- Use of Embed or Object tags to create an instance of the player
- And the rest of authoring tools and animation specs are exactly the same that in WPF
And finally, we have Adobe Air appearing on stage for the first time in June 2008 as a mix of Flash, JavaScript, AJAX and Flex technologies within a container to develop more traditional desktop applications with existing Flash knowledge. So it basically adds all the Flash and Web power to the desktop within that container. Adobe AIR stands form Adobe Integrated Runtime and it's available for OS X and Windows. Most of the graphic specifications are based on Flash, so there's no need to detail them. The only difference is that it's supported on desktop and knowledge, code, effort can be reused because it's not a subset, it's the complete thing.
Conclusions? No, don't think so. But I have an opinion :)
So, this is the picture. What do you think? Personally I think that Adobe has all the power regarding graphic design and interaction, because most of their experience has been focused on that for the last decade, but they lack a set of enterprise servers widely distributed and real service programmers. On the other hand, while Microsoft has the power of a complete set of enterprise services and a great horde of software developers they lack a decent amount of graphic designers and interaction designers. So, to me, none of them are in a good position because both have to improve one of the parts to achieve a complete knowledge of both skills.
If you are familiar with Adobe tools, migrating to the WPF and Silverlight subset is not hard for your as designer although migrating from ActionScript to the whole Object Oriented paradigm of the .NET Framework can be harder. And if you are familiar with .NET Framework it will take you some time to became proficient with graphic design and Adobe Tools, although coding in ActionScript will seem like playing if you are familiar .NET Framework... I'll try to explore both of them, but my actual knowledge drives me further into the Silverlight and Windows Presentation Foundation set because they are familiar to me and I can produce content faster.
I don't know all the existing frameworks for each platforms, so please, apologize me if I omitted an important feature provided by a third-party framework or upcoming release. Comment here, I would love to hear your opinions too.