The State of Flex RIA Development Ecosystem
Flex 1.0 was released in March 2004 by Macromedia (acquired by Adobe in 2005). Since then, the Flex based rich internet applications (RIA) development has been increasingly gaining momentum; and RIA has become a well accepted web application development approach. In 2010, Adobe will release Flex 4 along with the Flash Builder 4 and Flash Catalyst, which are part of the Adobe Flash Platform technology. To assess the state of Adobe Flex, InfoQ reviewed the current Flex RIA development ecosystem.
Flex Development Environments
Adobe Flex Builder is still the most broadly used commercial Flex IDE. It’s built on the open source Eclipse IDE platform. It will be renamed to Flash Builder for the Flex 4 release. In addition to Flash Builder, Adobe Flash Catalyst is currently in beta, which is a design tool intends to bridge Flash designers and Flex developers by integrating their design workflows and programming activities.
Besides the tools from Adobe, Flex development has be integrated into varies of existing IDEs.
- IntelliJ IDEA, a successfully Java IDE, has started supporting Flex development from the version 7. The latest IntelliJ IDEA 9 has even more complete set of features to support Flex.
- Amethyst is a Flex IDE that is built into Microsoft Visual Studio. It provides Microsoft platform developers a familiar environment to start Flex development.
- Ensemble Tofino for Visual Studio is also a Flex development tool for Windows developers.
- FlashDevelop is a open source ActionScript 2/3 and web development environment. FlashDevelop integrates with Adobe Flash IDE, Adobe Flex SDK, MTASC (a open source Flash), haXe (a open source programming language that can be compiled to swf) and swfmill (a XML to swf bi-direction processor).
Software frameworks have long been developed and used to implement common software development patterns, to increase programming productivity and improve quality. InfoQ identified a set of Flex/ActionScript frameworks in 2008 that helped Flex gaining momentum. There were Cairngorm, PureMVC, Model-Glue:Flex, Foundry, Guasax Flex Framework, ARP, Flest Framework, EasyMVC and Adobe FAST. Since then there are more frameworks emerged that have enriched the Flex development ecosystem:
- Ruboss is a Flex framework that integrates Ruby on Rails and Merb. Ruboss has also built a RESTful interface to allow Ruboss to talk to Adobe AIR's embedded SQLite database. The Ruboss framework serves Rails and Merb applications in a manner that is similar to Adobe LiveCycle Data Services ES for J2EE applications.
- Mate Flex framework was introduced in 2008 for the purpose of allowing easily develop even driven Flex applications.
- Swiz is Inversion of Control (IoC) framework for Flex. It doesn’t impose restrictions that have been seen within other frameworks such as JEE type of patterns, folder layouts or boilerplate code.
- Prana is another Inversion of Control type of ActionScript framework. This framework is developed based on Spring framework’s XML dialect.
- JumpShip is a MVC ActionScript framework that includes standard data model for automated data sorting, enumeration and search. It’s also against the use of singleton in framework, which is a popular practice with modern software frameworks.
- GAIA is a front-end ActionScript framework for Adobe Flash, which supports Flex Builder.
- Razor is an ActionScript component framework that provides alternatives to the common used Flex components.
- Flight Framework is another ActionScript framework that supports MVC and other design patterns.
Flex and AIR Development Support Tools
A software development will not complete without debugging, testing, logging and documentation. Over the years there have been wide range of development support tools created by the Flex/ActionScript community.
- RIATest is GUI test automation tool for Flex. It supports both Windows and Max OS X environment.
- Flexcover is an open source code coverage tool for Flex, AIR and ActionScript 3 development.
- Alcon is a lightweight debugging tool that supports ActionScript3, Flex and AIR development.
- Fluint, short for Flex unit and integration, is a testing framework for developers writing Flex 2 or Flex 3 applications, regardless of whether they are deployed in the Web browser via Adobe Flash Player or on the desktop via Adobe AIR.
- Arthropod is debugger tool for Flex and AIR development. It allows easily debugging application at run time.
- De MonsterDebugger is an open source lightweight but fully-fledged debugger for Adobe Flash, Flex and AIR projects. It’s completely made in Adobe AIR.
- ASTUce is a regression testing framework inspired by the xUnit architecture such as jUnit. It supports unit test for ActionScript 3.
- AsUnit is an Open-Source unit test framework for ActionScript 3. AsUnit 2.x is fully integrated with the Flash IDE.
- FlexMonkey is a testing framework for Flex apps that provides for the capture, replay and verification of Flex UI functionality. “FlexMonkey can record and playback Flex UI interactions, and generates ActionScript-based testing scripts that can easily be included within a continuous integration process.”
- Xray is Flash application inspection tool for debugging application at run time without adding load to the application.
- FlexPMD is created by Adobe to help to improve code quality by auditing any AS3/Flex source directory and detecting common bad practices.
- Natural Docs is a documentation generator that support multiple languages, including ActionScript 3.
Flex for Enterprise
Adobe has invested heavily in developing technologies support enterprise application system development. Most of the enterprise systems require server side development and integration, where Adobe’s open source BlazeDS and commercial product Livecycle DS play a important role. In addition, the Flex/ActionScript communities have developed alternative server side integration tools to support Flex enterprise RIA development.
- Potomac framework for Flex is for developing large scale Flex application using module approach without using Flex module framework. It’s inspired OSGi, which is widely adapted by application server providers to support server side modular functionalities.
- FluorineFx provides an implementation of Flex/Flash Remoting, Flex Data Services and real-time messaging functionalities for the .NET framework.
- FxStruts is a open source library that provides the same functionality as bean:write in Struts except that the output is in AMF or XML format.
- X2O framework is a web-based data modeling platform for Adobe Flex applications. It generates a remotely-hosted framework so you can program just on the client-side.
- Spring BlazeDS integration is a Spring component to make it easier to build Spring-powered Rich Internet Applications using Adobe Flex as the front-end client.
- Spring ActionScript is formerly the Prana framework (listed above).
- Granite Data Services is a free (LGPL) alternative to Adobe LiveCycle Data Services for J2EE servers.
- Red5 is an open source Flash server written in Java.
- AmFast is a Flash remoting framework for Python that supports NetConnection and RemoteObject RPC.
- Exadel Flamingo allows glue Flex, JavaFX, Swing, J2ME, and Android SDK to Seam, Spring, and JEE.
- There are also Flash Remoting supports for varies of scripting languages: PHPObject, SabreAMF for PHP5, OpenAMF for JEE, AMF::Perl and AmFast for Python.
Moving forward, the next frontier for Flex RIA development could be the mobile platform. Series of announcements have been made that the coming Adobe Flash 10.1 will be adapted on large range of smartphone devices, such as the to be released Google Nexus One phone that will have Flash 10.1 installed. The Flex community is expected to be actively engaging with mobile platform once the Flash mobile technology is ready.
InfoQ will continue monitoring and reporting the new developments in the Flex RIA space.
You are missing one important framework
as3commons and flex-mojos
doomsdayconsole for debugging
(another advertisement for an open-source project seeking attention)
Flex for Mobile