Years ago, Macromedia realized that Flash was attracting application programmers, but it also realized it was an awkward fit. Not only was the programming environment unconventional, ActionScript and the Flash Player only weakly supported the data handling, business logic and application management needed in full-scale Web applications. The company's response was to develop the Flex Framework, a core of application services and classes that has gone through several tortured iterations on the way to stability and depth —Flex 1.0, 1.5, 2 and soon Flex 3. At the same time the ActionScript language was broadened to give it more general programming capability.
There are two ways to use Flex. One way is to use the free Flex SDK, which supports many different IDEs, includes the Flash code compiler (no more application server required), and can work with other language components (specifically AJAX and Java). On the downside, the SDK may be complicated to set up and debugging can be Byzantine.
The other way to use Flex is through the $499 Flex Builder, an IDE which, as might be expected, has all the right hooks and tools to do the job. Flex Builder is implemented in the ubiquitous Eclipse environment as either a plug-in (if you already use Eclipse) or in a standalone version. It's a solid, no frills implementation with just enough hand holding for beginners without getting in the way of code jockeys. A full library of components is available to drag and drop onto a WYSIWIG design surface, but the code editor is clearly the center of attention.
To develop an application, Flex uses MXML, a rich, declarative XML-based markup language, and ActionScript 3.0. MXML is used primarily to create the user interface and handle basic application setup. ActionScript is used to provide sophisticated event handlers and almost anything else that ActionScript can do (which is a lot). Many rich effects such as wipes, blurs and dissolves are created by manually inserting code inside the MXML tags of controls dropped onto the design surface — a mix of GUI and manual coding. The interplay of MXML and ActionScript is not always obvious or well documented; learning both of them presents a fairly steep learning curve. That said, the Flex coding environment makes very good use of Eclipse, and MXML/ActionScript 3.0 make some stunning visual effects very easy.
Debugging in Flex covers the bases, including a useful debugging runtime version of Flash Player. The Eclipse workbench is famously extensible, so features such as version control or code profiling can be added as plug-ins. However, there is a sense that Adobe is sometimes leaning on the generic capabilities of Eclipse rather than expending resources to integrate programming features that are highlighted in development environments such as Microsoft Visual Studio .Net and many J2EE IDEs.