I am at Mix07 in London. Having looked in some detail as Adobe Flex and AIR in recent weeks, it is interesting to compare and contrast. I am looking primarily at the developer aspect, rather than video or multimedia.
Silverlight is not a direct competitor to Adobe AIR, in that it does not run outside the browser (though I guess you could do something funky with an embedded browser control). It is a closer competitor to Flex, though there is no exact equivalent to Adobe LiveCycle, which is not needed for Silverlight. However, the two technologies do have a number of parallel features, including the following:
- Cross-platform runtime – Windows, Mac and Linux (the last a recent Microsoft announcement)
- XML language to define the GUI
- Embedded video capability
- Timeline for animations etc.
- Strongly-typed, object-oriented language with just-in-time compilation
- Easy access to XML web services
- Dedicated design tools (Expression Blend for Silverlight, Flash IDE for Flex and AIR)
- Dedicated developer tools (Visual Studio for Silverlight, FlexBuilder for Flex and AIR
So what are the differentiating factors? There are some obvious differences. For example, Flash 9.0, and therefore Flex, runs on Windows 98; Silverlight 1.1 will not. On the Silverlight side, there is the advantage of language choices: Silverlight allows Visual Basic, C#, Python or Ruby. Flex has only Actionscript 3.0.
The real difference
These technical differences are dwarfed by cultural factors. Microsoft’s advantage is the comfort factor of Silverlight for developers already familiar with Visual Studio and C#, and perhaps beginning to look at WPF. Microsoft does strong tools, and FlexBuilder does not currently come close. This will help establish Silverlight for enterprise development. With increasing numbers of Macs popping up incoveniently in Windows networks, Silverlight could soon find a role. Similarly, for ASP.NET developers who want to give users a richer client, Silverlight is a compelling option.
Adobe’s strength is that it already has a strong hold on the designer community. While the Expression products are being well received, they would have to be extraordinary to win substantial numbers of switchers from Flash, Dreamweaver, Photoshop and so on. Adobe also wins on deployment. Flash is well established, whereas Silverlight is new; it will be especially hard for Microsoft to place it on non-Windows mobile devices.
I don’t see either of these technologies failing. I suspect Microsoft is introducing Silverlight in time to stem a bleed of .NET developers to cross-platform development with Flex and perhaps AIR, but I would be surprised to see large numbers of defections from Adobe’s camp.
Interesting questions
A few questions to which I do not yet know the answer:
- How does the performance of Microsoft’s IL + JIT compiler compare with Adobe’s Actionscript 3.0 + JIT compiler? On Windows and on other platforms?
- Adobe’s AMF protocol is more efficient than XML for data delivered via web services. Is this a significant performance benefit?
- MXML vs XAML. My impression is that WPF is more expressive, but I have not researched it sufficiently to back this up. I would be interested in comments.
As ever, your thoughts are welcome.
Tim,
Good to see a comparison between Flex/Flash/AIR and SilverLight on your blog, I just wanted to provide some additional commentary on this:
– I think the best comparison for SilverLight is actually Flash Player, both are runtimes which exist within the context of the browser. Both provide a VM, together with runtime capabilities and APIs that enable rich media content and RIAs to be deployed. Flash Player 9 currently has 90%+ penetration, meaning developers can deliver RIAs today, rather than having to wait until SilverLight 1.1 is released (2008) and then wait some more until it is widely distributed to users’ browsers.
– Flex does not require LiveCycle – LiveCycle DataServices ES is completely optional for developers who are interested in high performance data exchange, real-time data synchronization, messaging, data push and close integration with J2EE server apps. Developers can build and deploy Flex applications that leverage XML and Web Services for data exchange using just the free Flex SDK.
– James Ward (Flex Evangelist) has a great application on his blog which demonstrates the advantages of AMF over other data exchange formats – you can test it out for here – http://www.jamesward.org/wordpress/2007/08/15/census-ria-benchmark-updated-with-gzip-and-laszlo/
Look forward to seeing more discussions on this topic đ
Andrew Shorten
Platform Evangelist, Adobe
Thanks for the comments Andrew.
That may be fair if you are thinking of Siverlight as a multimedia player, but from the developer perspective I think it is Silverlight vs Flex. It is Flex that provides the XML GUI language, for example.
I understand that. Silverlight does not need LiveCycle because its library will hook into Microsoft’s application server – eg. WCF support, databinding to ADO.NET data etc. That said, there may be features in LiveCycle that make it a better choice in some cases. Of course Silverlight is a natural fit with .NET whereas LiveCycle runs on J2E.
Good link, but doesn’t cover Silverlight or WCF yet. It does illustrate the importance of parse time, so in Silverlight’s case the quality of the parsing libraries and the performance of the JIT compiler will be critical.
Tim
Hi Tim,
Andrew already posted my Census Benchmark app which I was going to direct you to. But I wanted to mention that there isn’t a Silverlight version yet because Silverlight doesn’t have a datagrid control which is necessary to calculate relevant metrics like render time, sort time, client-side memory usage, etc. This actually ends up pointing out one of the major advantages of Flex. Flex has hundreds of skinable, stylable and extensible components created by Adobe and the community. And then there is all the plumbing and programming model facilities of Flex like built-in support for accessibility, internationalization, deep-linking, unit testing, automated testing, data-binding, effects, and drag-and-drop management. I’m not sure how much of that Silverlight has.
-James
Thanks James. We’ve been told that a datagrid for Silverlight will be in the next pre-release of 1.1, skinning is supported as well. Look forward to your tests!
Tim
I think the more important difference to developers (especially those that don’t consider one language to be THE language) is the hooks into the server side. Silverlight obviously hooks in with .NET but also supports Ruby and Python. Flex supports just about anything.
On the other hand, you can write a web service in any language and so maybe it doesn’t matter.
There are browser plugins. There are frameworks. There are compilers, also programming environments. There are desktop applications, and in-browser applications.
Comparing like things to like is straightforward. Comparing browser plugins to frameworks and compilers gets a little mysterious.
“but from the developer perspective I think it is Silverlight vs Flex. It is Flex that provides the XML GUI language, for example.”
When I read that, I hear “I wonder if I should learn to write XAML, or learn to write MXML”, and that you are using labels “silverlight” and “flex” as shortcuts to other meanings. Do I have an accurate translation? Or are you actually trying to compare a video plugin for browsers with a declarative framework, component architecture, multi-OS compilers, and the rest that makes up Adobe Flex 2?
jd/adobe
I am referring to Silverlight 1.1, which has all the things you mention except perhaps “the rest”?
Tim
So you’re comparing next year’s planned browser plugin to all the different parts of today’s Adobe Flex 2?
(As you can probably tell, a lot of us have already dealt more than enough with comparisons of potential browser plugins to existing frameworks, compilers, architectures. I’ve had Microsoft staffers tell me that AIR is “just another browser”. Confusion seems part of the plan.)
A plugin is a plugin. An XML interface schema is an XML interface schema. A compiler is a compiler. A raven may be seen as a writing desk, but….
jd/adobe
Yes, I’m talking about Silverlight 1.1. I believe that is clear if you read my post, especially in context (a series of posts on the Mix UK conference). Yes, it is coming out next year. It would not be interesting if it were just “a browser plug-in”, though it is that; it is interesting because of the way it extends the usefulness of .NET. Flash is a browser plug-in too; it is also the client runtime for Flex.
I’m sorry, but a Microsoft staffer’s misunderstanding of AIR is not my fault.
Tim
“Iâm sorry, but a Microsoft stafferâs misunderstanding of AIR is not my fault.”
Oh, agreed! But that context does show why a title such as “Microsoft Silverlight vs Adobe Flex” drew such quick attention…. đ
tx, jd/adobe
Huh, where did you get this information? There isn’t even a DataGrid in WPF yet, and none announced, yet somehow there will be one for Silverlight? If you’re right, What does that say about WPF’s importance?
Specifically, we were promised a bindable GridView control at the UK Mix07, during Scott Guthrie’s presentation.
I believe Microsoft want to keep some measure of compatibility between WPF and Silverlight; this could just be the WPF ListView control which can contain a bindable grid, I’m not sure.
As for WPF – see my post earlier today. I think Silverlight is just as important if not more so.
Tim
My organization is 100% sold on Flex/Air, and my job is to figure out if/how WCF can play a role.
Given LiveCycle’s ability to push data, does WCF stand a chance? Web services are great for interoperability, but when it comes down to performance and programability, can it possibly compete with LiveCycle?
This is, of course, assuming that I have no choice but to support Flex/Air on the client.
I guess my question to the community is — can LiveCycle potentially consume WCF code, treating it like any other data source? Can WCF behave like LiveCycle, and push data in an interoperable manner?
Any thoughts?
Charlie,
Actually the .NET interop is interesting. Some of the folk at Adobe MAX advised not using LiveCycle with Flex when you have a .NET app server: just use web services. Main snag is that you don’t get the faster binary protocol used by LiveCycle, but that might not be the bottleneck anyway. You can also use LiveCycle as an intermediary. Try a few tests.
Tim
Tim, any idea why the recommend not using LiveCycle w/ Flex? I’m not a Flex expert…but didn’t LiveCycle start out as “Flex Data Services”?
As to the first point, I’m going to take a serious look at what it would take to drive a WCF service using LiveCycle. Could be an interesting combination — the primary goal being to turn Basic Http Web services into a push/synchronized service, rather than relying on polling (very specific to something that we need to do).
This is only in the case where the app server is .NET. Comment edited to make that clear. Further, this isn’t the official recommendation, just one of several options.
The problem is that LiveCycle (which was once Flex Data Services) needs a Java app server to run on, which can be inconvenient if you are using .NET. So one option is not to use it.
For push you might want the Flex Message Service which does need LiveCycle.
Tim
Its been a while – what are your opinions now that some time has passed?
Any changes of heart?
Lee
I think Silverlight is compelling for organizations using Microsoft’s platform, and developers with existing .NET skills, but I’m not sure that it will escape that (admittedly large) niche.
Tim
I am developing a topic map-based knowledge management and repository application with Adobe Flex and Adobe AIR: http://www.quesucede.com/page/show/id/polishedcode. The experience is a good one. The Platform is very productive. Flex allows the developer to build very rich desktop-like user interfaces with all the advantages of being accessible over the web.