I have wanted to cover this basic question for a really long time but it is a very hard question to answer. Flex is many things but I wanted to put a definition out there to help everyone see what it is, where we are headed, and why we created it. With all my presentations I start with “What is Flex?” and it is about time my blog had the same information. So here is my definition:
What is Flex?
Flex is a way to make SWF files!
At the heart of Flex is the ability to create SWF files that run in Adobe Flash Player. Distill all the features down and really it is a development paradigm that compiles to SWF. It really is that simple but often we make the definition much harder. Just like Flash can create SWF files, so can Flex but the way you develop is completely different.
Flex is for developers.
Flex is for making applications…
Flex was built for making rich client side application behavior. It wasn’t built for making web pages, banner ads, or server side logic it was built for creating client-side applications that run over the Internet talking to remote servers. Flex has been used to make some really great apps like Buzzword (Document Editor like Microsoft Word but in the web) or Picnik (Photo Editor/Manager for touching up your best snapshots) or SlideRocket (Presentation software like Apple Keynote but in the web) or Oracle Sales Prospector (An enterprise ERP application. Yes Oracle uses Adobe Flex! ) or many other applications you can see at Flex.org. The real key is that all these examples provide an application experience just like desktop software.
that run on the web (Adobe Flash Player)…
Flash Player 9 is installed on more than 95% of computers that use the Internet and has been installed more than 3,500,000,000 times at a rate of over 10,000,000 times per day. When you develop software, you want it to run compatibly in as many places as possible. Adobe Flash Player provides a solid foundation to build these experiences without the need to install or update anything on the end users computer. If you were running a store you would want that store available to as many customers as possible and choosing Flash Player allows you to provide a great experience (rich) to 95% of the web (reach). Make sure to look at the reach of the technology you select, if you choose something not widely installed or incompatible, you are simply turning away customers and business.
Adobe AIR is a new runtime in development by Adobe and we are very close to releasing Adobe AIR 1.0. AIR allows you to write desktop software that runs on 3 operating systems (MAC,WIN,LINUX) with the same file. This allows your application to be a true desktop application rather then just a website and allows you to do much more than the web allows today. AIR applications are real native desktop applications and provide APIs for writing files, drag-drop, system notifications, network detection, and more. AIR empowers developers to write desktop software that leverages the Internet.
…or on mobile devices.
We are working to enable Flex to build applications for mobile platforms and support a wide range of devices. Just as Flex can be used to write a web based application or desktop application, it can be used to write software for mobile devices. The fact is that devices are becoming ever more powerful and more plentiful. It is just a matter of time before we enable developers to leverage Flex to deliver mobile applications on Flash Lite or AIR on mobile.
In summary, Flex is a development paradigm that allows you to write software for the web and desktop that many people can use compatibly today. It leverages the tools, servers, and development models that you already know and allows you to write the next generation of software compatibly. At Adobe we are working around the clock to make this ecosystem of software better and provide you with the best tools and platforms to make your projects a success.
I encourage you to take a fresh look at Adobe Flex and discover the opportunity in learning a new language and ecosystem. Developers around the world are embracing it to create all sorts of new applications and I think you should jump in too.
My biased answer:
Flex: A development platform that is revolutionizing how the world writes and deploys software!