All three technologies have very good and fast compilers, nicely designed languages with strong and static typing, comprehensive and very powerful libraries and relatively fast execution speed. There are a lot of other things to compare, but basically, the ones shown in the table above are the categories which I would consider, and based on them, Flex is the winner in my opinion.
Flex compiles to .swf files which are browser embedded Flash applets, and thanks to YouTube and similar, nearly everybody has a Flash plugin installed today. But what about Silverlight and Java? I have not yet come across a website using Silverlight. And the times when Java applets were popular are clearly over for whatever reason. Silverlight wants to be cross platform too like Java and Flash, but it's still Microsoft, nearly completely ignoring every non-Microsoft OS. There is a Linux port of Silverlight, named Moonlight, but not done by Microsoft, and it is not finished yet.
And thinking about graphics rendering, I've made the experience that you can do quite nice things using .NET, but Flashs optimized 2D vector rasterizer is not easy to beat, in my opinion. Java today also has some neat 2D rendering capabilities and they are also working on hardware accelerated output (last time I checked this had to be manually enabled on the client side, so nobody actually used this feature), but in my opinion it still feels a bit slow.
Now, with AIR, Flash has the same advantage as Java and .NET: You can create desktop applications with it as well. So I think if you should ever want to write some game, Flex is now a good place to start.
twelve comments, already:
In my experience, the great advantage of Flex 3 is that it’s incredibly easy to build your own applications. When we needed some good test applications for our AMF3 support in SilkPerformer, my colleagues were able to build their own Flex apps within a day without any prior knowledge. On the other side, AMF3 (the serialization format of Flex 3 for ActionScript objects) is… uhm… interesting.
ak () (link) - 25 02 08 - 18:25
I actually didn’t know that Flex was free, never mind open source – I just assumed that being Adobe, it was proprietary & expensive. That’s really nice, I think I’ll download it and have a play sometime.
steve () (link) - 25 02 08 - 19:06
My stupid opinion:
First of all, I have work with c++, java and c#, never with Flex. All lenguage are powerful, i have see incredible things with all 3 language bat IMHO on Internet there are other important point to discriminate the real power of a language : – Easy to understand and rapid to use. For example, php are the very easy to understand and use. – Open. The specification of language o vm are open and all can use in his platform. It’s not important that the language are open source bat a ISO as PDF are very useful. – No royalty . royalty free.
Linefinc - 25 02 08 - 21:20
In combination with Eclipse you don’t even need the Flex Builder, which isn’t for free…
Delight - 25 02 08 - 22:04
Adobe is giving FlexBuilder free to students and educators – not sure if that is only in the US though:
Swiftcoder () - 26 02 08 - 03:37
Why did they name it Flex… Flex is a free lexical analyzer generator.
Michael - 26 02 08 - 18:33
“thinking about graphics rendering, I’ve made the experience that you can do quite nice things using .NET”
Just a thought: you might be confusing the WPF/Silverlight renderer with GDI+, as encapsulated by the System.Drawing library, which is what you would usually encounter when using older .NET versions (before 3.0). GDI+ is slow and ugly, and should not be compared to the Flash renderer in this context.
Also, I would be hesitant to judge Silverlight at this stage, when even the first beta has yet to come out (not counting Silverlight 1.1, which was indeed an odd beast).
Jonas - 27 02 08 - 23:22
Don’t forget about server side programming. Flex 3 apps are client side apps and they interact with server side scripts written in Java, PHP, .NET etc.
From this point if view, AIR can’t be compared to .net, because AIR can’t be used for server side programming.
I use flex to write user interface (instead of ajax or asp.net) and PHP, or C# to write server side code.
Anyway, good article
Vasile () (link) - 28 02 08 - 11:05
Think actionscript has a chance against C#? Forget it already. W/ little to no experience in the platform/language front, it’s a matter of time Flash/Flex loses out to the .Net juggernaut. Just think of this: Who wants to learn ActionScript? Certainly not every .Net programmer out there, which way out-numbers all Flex programmers. Now if M$ gives them SilverLight 2 allowing them to code RIAs in C#, VB.net and so on w/ the benefit of the mighty .Net framework, Intellisense from Visual Studio and end-to-end support across all 3 tiers for not only RIAs but also enterprise web apps, how many of .Net developers are willing to use Flex/AIR instead? You will see an army of .Net programmers adopting SL2 and soon come out w/ a bunch of APPs and make SL2 the dominant RIA solution in the market.
Flex in my opinion won’t fare much better than Borland C++ or Delphi.
derk - 17 03 08 - 02:31
In terms of the “Microsoft Jugganaut”... that thing is dying. Java has far more developers that .Net (all languages put together) and PHP has more websites than either .net or Java!
If Adobe plays this right, it could be quite viable alternative to the JavaFX and Silverlight. On the Linux front, a lot of people are starting to question if Moonlight is going to be worth working with even though Nokia will include it in their 810 pad. The bigger question is which one of these will work with Google’s Android platform. As of right now, neither Apple nor Google will support SilverLight. Google seems to be open to Flash and will run Java.
Personally, I think the battle will be JavaFX vs Flash with SilverLight going the way of Microsoft Bob.
Sean - 17 03 08 - 14:24
Sean, I’m from the Win/.Net world and you are from the other front. It’s obvious we will disagree a lot if we start a religious fight. So I’ll keep it focused on Flex VS SilverLight.
That being said, I don’t think Adobe is good at building virtual machine or designing languages and compilers, which was reflected in how big a joke AS2 was and Flex not gaining much eyeball despite being out there for a while. W/ M$ chasing them, they start to open up and turn to Java world for help. Smart for them. Might as well just drop the ego and merge Flex w/ JavaFX. Why get overlapped here while both are under the threat of a common enemy you know who.
As for our .Net web developers. I don’t see anyone in their right mind will switch to Flex. We have a strong Sql Server as the data tier and a powerful WCF as the middle tier. Both fit right in w/ SilverLight to form an end to end solution, so no point to use Flex for the presentation tier. Especially to think of coding in what, AS3? No thank you, we love our generics, threading, LINQ, etc so we prefer C# (in Visual Studio no less)..
The end result will pretty much be like this: Flex is adopted by WHATEVER-nix/Java platform and SilverLight rules the Windows world. Like the current J2EE VS .Net situation. Given Adobe’s track record in the Linux world, hoho, better behave this time.
derk - 18 03 08 - 02:33
Joseph () - 09 04 08 - 12:01