Adobe's Flash platform consists of the open source Flex SDK, a free Flex compiler, a proprietary Eclipse-based IDE called Flash Builder, the Flash Player browser plug-in, and Adobe AIR, a runtime for Windows, Mac, and Linux that allows rich Internet applications to be deployed directly to the desktop.
In addition, Adobe offers a suite of tools (available as part of CS5 or standalone) that enhance Flash development. In additon to the Flash Professional authoring tool, there's the new Flash Catalyst, an interaction design tool for quick prototyping of user interfaces and behaviours, and either LiveCycle Data Services or Adobe's open sourced BlazeDS for Java remoting and messaging.
Flash may not be coming to the iPhone or iPad, but it still has the edge over Silverlight in client support, thanks to the ubiquitous Flash Player. Flash is also stronger on digital rights management, providing granular controls over streaming media and data downloads via Flash Access 2.0. Adobe's development environment doesn't stack up with Microsoft's now that Silverlight tools have been integrated into Visual Studio 2010, nor has Adobe done as good a job as Microsoft in integrating design and development. Nevertheless, the Flash Builder IDE is no slouch, and Flash Catalyst is a welcome addition.
With Flash 10.1 and Flash Builder 4 the Flash platform has been bolstered for better data access. Flash remoting can now tap SOAP and REST web services as well as ASP.Net, J2EE, PHP, BlazeDS and Adobe's ColdFusion and LiveCycle Data Services server for data streaming. Some may view Flash's lack of tight, direct integration with common server technologies, such as Silverlight's access to .Net, COM and WCF, as a drawback. But I think this server-independent solution makes a perfect pairing for the flexible, modular applications in demand today.
With the advent of ActionScript 3, Adobe graduated from a general scripting language to a far more powerful, object-oriented, event-driven programming language. Developers gained familiar constructs like classes and objects, and Flash gained a multifold speed boost in the process.
New releases to Flash Player and AIR, the first major AIR rev in two years, bring important features onboard that address faults for which Adobe has recently faced much public criticism. Hibernation of inactive Flash apps (ie, those running in a hidden browser tab) help improve perceived performance and reduce memory and power demands. Adobe has also added multitouch and gesture support, along with awareness for onscreen keyboards, making Flash friendlier to tablet and smartphone deployment.
New memory management tweaks and improved garbage collection routines will boost both desktop and mobile performance. In addition, hardware acceleration of video decoding and playback makes for a more efficient power consumption profile.
The Mac runtime has now been migrated to the Cocoa framework, Apple's Objective-C development platform. Providing native support for graphics, sound and print functions, the realignment should improve compatibility and diminish the number of Flash-induced Mac crashes.
With version 2, AIR digs deeper into the desktop, supporting calls to native code (.Net and Java libraries, for example) and drag-and-drop between the AIR client and the operating system, as well as support for UDP, IPv6 networking and better network fault tolerance. The Windows client also gets easy DRM via the Adobe Flash Access 2 SDK, which provides facilities for controlling on-demand streaming and "expiring" content rentals.
Developers will find some nice facilities in the SDK and IDE as well. For example, the Flex SDK offers impressive data validation classes. Although they are not as well-suited to managing asynchronous data as their counterparts in Silverlight, they are very easy to implement.
As for the IDE, I won't rehash my review of Adobe Flash Builder 4, but highlights include comprehensive introspection of services and data sources, speedy two-way data binding, wizard-driven code generation for a variety of tasks, quick and easy wiring of data and event handlers to UI components, and prefabricated data paging routines that help ease coding to handle large data sets.
Since that review, which was written upon Flash Builder 4's release in March, Adobe also released Flash Catalyst, which is now promoted to first class citizen within the CS5 (Creative Suite 5) bundle. Catalyst's point-and-click framework makes it snap to wire event triggers and behaviors into your interfaces, and its symbiosis with the CS5 app suite (Illustrator, Photoshop and Fireworks) simplifies passing projects from designer to developer.
Disappointingly, this workflow is a one-way street. Although I could bring Photoshop and Illustrator files into Catalyst, I had no luck going in the opposite direction. Modifications made to Catalyst files in Flash Builder induced errors when I reopened the files in Catalyst, despite my using the FXP file export option in Builder.
Still, Catalyst is an easy means for non-technical designers to contribute to UI development without getting bogged down by the underlying MXML language. Catalyst let me quickly define common interface components (scroll bars, buttons, etc) from imported art files and tie them to data. Although the Catalyst interface is less than elegant (compared to other CS5 apps), its simplicity and Dreamweaver-style layout should minimise the learning curve.
If your application will be making basic service calls to feed data and won't require a lot of processing overhead, or if your goal is eye-popping layouts or 3D graphics for customer-facing communications, ie, whenever the development process is design-intensive, then you'll benefit from Adobe's designer oriented approach.