Absolutely. A lot of "real projects" have been built using Flex. Before going any further, I think there needs to be some demystification of what flex is. People seem to treat Flex as if it is some unknown product on the far reaching corners of the web galaxy.
Flex is just a way to create RIAs or other "Flash" content without using the Adobe "Flash" IDE. Flex has Flex Builder, the tool created by Adobe to write Flex apps, but in reality, Flex is just a framework to build RIAs that play in the Flash player (or AIR now that we have it).
I spoke at the Adobe MAX conference last year in Chicago on "Next Generation User Experiences" and how you can develop them in Flex.
Here are some examples of Sites that are built on Flex, and these projects have been worked on by myself, someone I know or have met in one capacity or another. I am just stating that so you can understand that this is first-hand information as opposed to "that could have been built in Flex".
Out of the giant list of Flex apps that have been launched to the public, here is a handful that you might recognize:
- www.scion.com - Full Flex application with Flash assets being loaded.
- Ebay Desktop - AIR Application that my old crew at EffectiveUI built using Flex
- anywhere.fm - online media player replacement for iTunes.
- Picnik - Online image editor application
- Mixbook.com - Book creation and sharing
- Snapfish - http://www.snapfish.com/
- Mastercard - http://www.mastercard.com/us
- Finetune Desktop - http://www.finetune.com
One amazing new application that is built on Flex was built by the folks at Adobe Consulting: www.searchme.com. Also, most of the applications that you find Adobe putting out (labs.adobe.com) are built on Flex.
If you have Adobe CS3, you've seen the Adobe "Video Workshop"... which was shipped with CS3 on DVD and is also hosted online at www.adobe.com/designcenter/video_workshop
This application was built by my team for Adobe using Flex and also packaged up using the Adobe Flash standalone player to run on DVD, etc.
"So... What's Up with Adobe Flex?"
I could go on for ages on this topic. (But I will try not to!)
Flex: First, it isn't the perfect tool for everyone.
It is, however, a great choice for a platform if you are building an RIA or online application where the user experience could see significnat benefits from a "rich" interface. (all applications?)
Flex is going to be quite daunting for someone who knows the Flash IDE, but is not familiar with OO programming, design patterns, MVC, etc.
Flex was intended for "programmers". As the market has created demand for better user experiences and RIAs, there just aren't enough Flash developers out there to meet the demand. Flex allows non-visual developers (i.e Java developers) to jump into RIA development by giving them a tool that let's them build apps using the skills that they have as opposed to trying to learn Flash itself.
"So why Flex? Could you list out some reasons?
You need to answer that relative to other platforms."
Sure. I can tackle this one.
Flex isn't perfect for everyone. I've seen a lot of people with solid Flash chops try to use Flex and just get frustrated. (Nobody said Flex was "easy") :)
There has been a ton of improvement in the product since the early days. Flex 1.5 was rough to say the least. Flex 2.0 was a ton better, and Flex 3 is proof positive that Adobe has been listening to the community to make the tool more robust and more integrated with the CS3 line of tools.
"Why Flex over Flash?"
I think the case for Flex over flash has to do with the type of application you are building, and who is building it.
If you've got a very robust "application", Flex is probably the right tool. If you've got a team of "developers" as opposed to "Flash developers", Flex is probably the right tool.
If you've got a project that requires heavy use of data, data visualization, or needs to utilize some more advanced back-end systems ... Flex is the right tool.
This is especially the case when thinking about applications that might utilize LiveCycle Data Services or the OpenSource Blaze Data Services.
Flex isn't better than flash... it is just a different tool to accomplish the same end goal. You have to use a tool that works best for you and your team.
"Why is Flex better than AJAX?"
So, instead of saying "Why Flex over AJAX", I will instead say "Why the Flash player over AJAX".
Both Adobe Flash and Flex output Flash player content. Whatever you use to develop your application, there are significant benefits to using Flex over AJAX... again it depends on your specific project!
I will say that in recent months, I've done several evaluations of technology for client projects, and have had to compare Flex to AJAX for each.
In my opinion, the biggest advantages of using the Flash player as a runtime for your RIA as opposed to using AJAX:
- Write once, deploy cross platform
- You can turn your Flex application into a desktop application without much code refactoring (using AIR).
- With the evolution of browsers, you can be less concerned about how to migrate your code to keep up with changes in the Document Object Model in AJAX, as the Flash player is backwards compatible.
- The Flash player now has hardware acceleration... so you can build UI's that look and feel the way YOU want them to, and not forced into having limitations by your development technology
- 3-d integration (using papervision or another framework)
- Handles LOTS of data much, much, much better (data grids with tons of rows, etc)
To help you understand what other benefits flex can offer, check out www.flex.org.
"So, how is Flex perfect when these java/rails/jango/foobar developers need to learn yap (yet another platform). Given the transition/learning time - what are the net benefits that make it better than sticking with the tried and true?"
It isn't. It should be a primary rule of building software: Use the Tools that you Know.
I will say that the ramp-up time for experienced Java or C# developers to move to Flex is nominal. ActionScript 3.0 is a lot like Java or C#.
The benefits aren't from a technology point of view. I really think that the benefits are around the user experience that you can get from a Flex application as opposed to something else.
If you know Java and that's your thing, then Flex isn't too far off from your comfort level.
Again, I wouldn't recommend anyone use a new technology on a critical project Especially a technology that is completely unfamiliar.
One thing I will say about developing in Flex is that to make "killer" flex apps, you need to really know the framework and be able to proof-of-concept your way from the initial idea to a working application.
You can build a flex application that "looks right" but has performance issues due to the way it was coded. There have been several projects we've worked on in the past where we were called in to help "save' a project that was built in Flex, but wasn't built properly. It was all there, but in order to make it launch-ready, needed a bit of refactoring, etc in order to be optimized for a great user experience.
All in all, Flex has been a really good tool in my experiences... But I preface that by saying I've been fortunate enough to work with some extremely talented software engineers that really know the framework and how to make it sing.