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 was not built for animators, writers, accountants; it was written for software developers and the paradigm matches the development methodology you already know. If you know Java, C, C++, C#, Delphi, VB, PHP, ColdFusion, Python, Ruby, you can learn Flex with little effort. The goal when Flex was created was to make a development paradigm that developers could learn easily matching the methodology they already know yet create SWF files for Flash Player (and now AIR). Flex has classes, components, a compiler, a debugger, class libraries, and uses XML (MXML) for declarative markup of components. The ActionScript programming language is based on ECMAScript 4 (the language standard behind JavaScript) and has full support for the ECMA XML scripting standard E4X. It also has most of the UI components that you already use ( like button, list, datagrid, combobox, and tree) but it also supports containers like HBox, VBox, TabNavigator, TitleWindow and many others. If you have written software before you can learn Flex easily. Better still is that Flex is compatible with all HTTP servers, version control systems, and any server side programming language, so the knowledge you have of servlets, php, ASP.net, or JSP is really handy. Flex just lets you program the client side in a paradigm you already know and understand.
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.
...on the desktop (Adobe AIR)...
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!Cheers,
Ted :)
DIGG IT! 
Irrefragable answer! :)
I've been asked this a few times since I started my new job with Arum Systems Ltd (UK) back in December last year. My response has been, "Flash for Application Developers", which I like to think sums up your post succinctly. :)
As a Java developer with over 9 years I have to admit that I am really enjoying using Flex!! =)
That's much better than my typical response (to non-developers) which often goes like this: "You know that annoying animated Flash ads? Yeah, we use that technology to build things that don't suck."
Great answer to an omnipresent question these days...
I get that question so often that my answers have varied in all colors of the rainbow.
from the technical definitive and concise I have gone through various states of abstract and high-level explanations to the decidedly foggy and unclear explanations...
I think your definition is right on the spot and is exact and concise...
I think its great that you take your time to give us poor tech'ies some ammo for explaining why this technology is so cool :)
Right on! Thank you for that answer. I've been trying to get my superiors on board with Flex; however, I resist as much as I can not to say "Flash" in any of the conversations, because that word is taboo in the .NET jungle I'm required to develop in now.
.... It's the ground beef, of course!
;)
(for those not in on the joke, see the "My take on Flex 2" section here )
As a developer/consultant starting to push my clients towards flex I'm finding the need for a simple one or two page overview of flex that I can use to convince them how cool this is.
I like your info above, but it reads more for techheads than the average manager I end up dealing with.
There's piles of info on adobe.com, but its too long and in-depth as a starting point.
Any suggestions?
Flex is the promise of Java applets realized.
(but I like Doug's answer better ;))
Flex is:
An Actions panel plus component set that doesn't suck, for much less than 10K.
;)
You name it, flex is the father of them all :)
Adrian.
I posted my thoughts/understanding in flex_india list sometimes back:-
http://groups.google.com/group/flex_india/msg/fa1d6d0df1a4f635
-abdul
very nice
Thank you, very nice article about flex. and what the difference between flex and macromedia flash editor?
Yes, nice!
yes thanks , very clear
thanks!
I have not absolutely understood, it is the demonstration version?
It's really good article about flex.
http://www.webtelefonkonyv.hu
Thanks!
Thank you, very nice article about flex...
Thanks!!! nice job
Thanks a lot to u people for leaving such new articles.Its realy a new revolution for the programmers.
thanks again and all the best.
Top work Abdul, very well explained
Sean
thanks a lot... from this article i got to know about flex
http://shariffdotnet.blogspot.com
Hi guys,
I would like to know if Flex along with some techs ( PHP for example... ), could some how make a web-based program like Vectorian Giotto ( a desktop-based Flash CS3 like ) ?
Thanks in advance for any comments.
i used nearly all components in Flex , it look and feel is good , nice experience