Today Adobe released
Flex 3 and
AIR. AIR can be compared to the
.NET runtime environment by Microsoft, and Flex to Mircosofts
Silverlight: You can create
Flash applets using Flex and run them on your desktop with some additional functionality like file saving and similar using AIR. Being originally a C++ programmer, I've also gathered some development experiences using Flash and Flex, (actually I've even worked on a now released commercial game based on Flash last year), and I think Flex is a very good software development platform especially for browser applets, if confronted with .NET and
Java. In short, from the perspective of a game developer, there are only some very few points which are important. I've brought them face to face in the following table:
Technology | Platforms | GFX Rendering | Availability |
Flex/AIR | Win/Mac/Linux | Excellent | very good |
.NET/Silverlight | Win, ~Mac | OK | poor |
Java | Win/Mac/Linux | Slow | decreasing |
Note: this table may not be 100% correct and represents my personal experiences. See below for explanations.
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.