This new Flex, of which we tried the Alpha release, is a major step for Macromedia. On the technical side, there is the new IDE, an updated Flash player (8.5), and crucially version 3.0 of ActionScript. This implements significant new features, including an official extension called Ecmascript for XML (E4X) which is attracting a lot of attention from ActionScript developers.
E4X adds native XML types to the language, and arguably represents the most productive approach yet devised for working programmatically with XML. The new Flash includes an updated ActionScript virtual machine, which Macromedia states is substantially more performant than its predecessor, which becomes slow with larger applications. Our brief tests bear out this claim, even in the Alpha release. At a more detailed level, there many new Flex components, and new support for messaging, data and testing in the Enterprise Services layer.
Macromedia is also adopting a different marketing strategy. Flex 1.x is an expensive product sold on a per-CPU basis, making it interesting only to enterprises. Flex 2 will be marketed with per-developer licenses for Flex Builder and Flex Charting Components.
Put another way, this means that a developer-oriented IDE for Flash client applications will now be within reach of any organization, a long-overdue step for Macromedia. If the strategy succeeds, it will impact the enterprise market as well, by broadening the availability of Flex development skills.
The timing of Flex 2.0 is good. There is much debate centred on the client, and how to move beyond the capabilities of the browser without sacrificing benefits like zero deployment. Technologies like AJAX, Java, and Microsoft’s .NET and forthcoming XAML are scrambling for position. Flash is a competent platform, which deserves consideration. Flex removes one of the key objections, which is the weakness of the Flash IDE for application development.
There remain weaknesses. One is offline working; Macromedia is working on solutions for this, and Flash had limited support using a technology called local shared objects, but currently Flex is not ideal for occasionally connected clients, an area where .NET is particularly strong.
Another issue is that Flash applications are by design sandboxed, so if seamless operating system integration is desired Flex will not be suitable. Some developers will not want to give up the richness of C#, Java or C/C++ for the sparser Flash and ActionScript environment, or will prefer to work with the same language on client and server.
On mobile devices, Flash is making progress but is still much less widely deployed than Java. This still leaves a substantial subset of applications where Flash is more than sufficient. Flex 2.0 is likely to broaden its adoption considerably.