While I made every effort to provide the details needed to follow along with the examples and start working on a Java+Flex application, there was no way I could discuss the many different Flex tools that are useful in daily Flex development in a single article that was really intended to focus more on why Java developers might use Flex and how Java developers can use Flex with Java. I did list some of my favorite resources in the "Resources" section of that article, but I could not cover them all or cover each of them as thoroughly as I would like. In this blog posting, I intend to lay out some of the development tools and resources that I use most often in my Flex development. The goal is to provide a list of highly accessible tools and resources that can help someone new to Flex come up to speed quickly.
I am intentionally not covering one of the most important tools for many Flex developers, FlexBuilder, because it is well covered online and because its license cost means it is less accessible than the freely available tools and resources. However, many people do find its license cost well worth the savings they enjoy by using it. Similarly, I also do not discuss in any greater detail the Flex-related books such Programming Flex 3, ActionScript 3.0 Cookbook, and Flex 3 Cookbook.
Finally, I intend to approach coverage of each useful Flex tool or resource from a Java developer perspective. That being stated, most of these tools and resources are useful to any Flex developer regardless of whether that developer is using Java with Flex.
Flex 3 Language Reference
During years of Java development, I have found the Java API to be one of my most-used resources. Whether it is integrated with my favorite Java IDE or whether I access it online directly, I find myself frequently accessing this resource. Flex has very similar documentation of its classes and core APIs in the Flex 3 Language Reference.
The ASDoc-based layout of this reference is very similar to that of the Javadoc-based API information. The Flex 3 Language Reference has the added benefit of including actual Flash-rendered examples of several of its visual classes and components that match the example source code included with the API information. It is nice to have same code available to look at and play with and even nicer to see its runtime visual appearance and behavior. The Flex 3 Language Reference provides one-stop shopping as an API/class reference, a source of example code on API/class usage, and as a source of examples on the actual Flash deployment of those source examples.
A final advantage of the Flex 3 Language Reference is that it is part of Adobe's LiveDocs approach which allows readers and fellow developers to post comments and corrections to the reference pages. I have found these comments to be helpful more than once.
Flex 3 Component Explorer
As mentioned previously, a really nice feature of the Flex 3 Language Reference is its inclusion of source code and actually rendered examples of many of its components and classes. The Flex 3 Component Explorer similarly includes source code examples and actual rendering of those examples in a Flash Player, but has the advantage of being focused on the Flex 3 Components. This makes it a nice tool for becoming familiar with the components available in Flex. With its focus on components and effects, the Flex 3 Component Explorer is a nice single stop for identifying useful components and effects, for seeing source code examples of how to use those components and effects, and for seeing those components and effects actually rendered in a Flash Player. For the new Flex developer, I cannot think of an easier way to become familiar with the wide set of components and visual effects available with Flex 3.
Programming ActionScript 3.0
Flex consists of both MXML (an XML grammar) and ActionScript (an ECMAScript implementation). While Flex and ActionScript are most often used in conjunction with one another, there are times when one is more appropriate than the other. I have found that many beginning Flex applications can be written largely in MXML, but ActionScript is soon required for certain aspects of the application (especially event handling and business logic). A freely available online resource covering ActionScript is Programming ActionScript 3 (there is also a PDF version).
Flex 3 Help
The Flex 3 Help is particularly useful for introducing oneself to new Flex concepts. It covers everything from basic ActionScript and basic MXML to server communication and use of Flex with AIR applications. The Flex 3 Help includes a link to the Programming ActionScript 3 just referenced and is another instance of an Adobe LiveDocs document that can be commented on by readers.
Flash Player Debugger Version
The Flex developer who does not use the Flash Player Debugger Version during development can be at a serious disadvantage. The special debugger version of the Flash Player allows the Flex developer to use the trace() functionality, to use the command-line debugger (fdb), and to see useful stack trace information when a Flex error is encountered.
I have seen multiple cases online when Flex developers have been frustrated by lack of debug information that would have been available if they had only installed the debugger version of the Flash Player in their development web browser. Awareness of and use of the the Flash Debug Player is one of the most valuable things a Flex developer can use. I think that Ben Simon's makes a good case for the difference between using and not using this tool in his blog posting Like X-Ray Vision for Flex.
Flex IDE Support
I have blogged previously about a very simple step one can take with jEdit to add some minor Flex support. Others have also blogged about improvements to jEdit for supporting MXML/ActionScript. Similarly, I have also blogged previously about minor NetBeans configuration to better support MXML development and work has started on FlexBean, a plug-in for NetBeans 6.5 to support Flex development. The IntelliJ IDEA IDE includes Flex support as well.
Besides the text editors and Java IDEs, there are other IDEs that can be very helpful in Flex development. These include Spket IDE that I have blogged about previously and Aptana Studio.
Flex 3 Getting Started
The Flex 3 Getting Started resource is, as its name suggests, a great resource for someone just starting to investigate Flex. It includes links to some of the resources that I have mentioned above. I don't use this particular resource as often as the ones listed above, but I list it here for those who are new to Flex.
Flex 3 Showcase
The Flex 3 Showcase is helpful for multiple reasons. First, it may be just what you need to show to a client or manager to help them see the possibilities of Flex. Second, and perhaps more importantly in the context of this blog posting, these sophisticated Flex-based applications demonstrated in Flex Showcase have their View Source functionality enabled. This means that you can right-click on the applications as they are rendered in the Flash Player and select the option "View Source."
Most realistic Flash applications are typically run within an HTML page and Flex-based Flash applications are no different. I have found swfobject to be the most useful tool for embedding the Flex-based .swf files in my HTML pages. I have briefly covered one use of swfobject in my blog posting Communication Between Two Flex Applications.
BlazeDS and the BlazeDS Developer Guide
For the Java developer using Flex rich clients with Java EE back-ends, it is likely that BlazeDS will be of great interest. Like the Flex 3 SDK, BlazeDS is open source and available for free download. The BlazeDS Developer Guide (LiveDocs version and PDF version) is a highly useful resource for learning how to apply BlazeDS's features that include a proxied HTTPService, a proxied WebService, object remoting, and messaging.
Flex Style Explorer
When I blogged about applying CSS styles in Flex, I mentioned the Flex Style Explorer. The Flex Style Explorer does for Flex styling what the previously mentioned Flex Component Explorer does for Flex components. The Flex Style Explorer both demonstrates different aspects of styling in Flex and the Flex-supported CSS code needed to make those styling specifications happen.
Adobe Flash Player 10 Security and Cross-domain Policy File Specification
The Java developer building a Flex client that accesses a remote Java EE server will often encounter the
crossdomain.xmlfile. The Cross-domain Policy File Specification contains valuable insight into how this file works and why it is needed. While I did blog on the crossdomain file previously, that blog posting is already somewhat dated, so it is nice to have a document like this with more up-to-date information. I briefly covered the crossdomain.xml file in the context of using non-proxied HTTPService in the first part of the JavaWorld article and intend to cover it in greater detail related to use of WebService in the forthcoming second part of that article.
crossdomain.xmlfile is part of the overall Flash Player security mechanisms. Because Flash is the deployment environment for Flex applications, it is helpful to understand how Flash works, especially in terms of security. Therefore, the Adobe Flash Player 10 Security white paper can be very useful.
There is a wide variety of useful and sometimes very detailed information on using Flex in the blogosphere. I like to peruse DZone for fresh Flex-related resources and also have found Google's BlogSearch (with "flex" as the search term) to also be useful. Perhaps the most useful thing for me, however, has been the simple Google search engine when I needed to look something specific up.
There are some specific Flex-focused blogs that a Flex developer might want to subscribe to or regularly check out. These include the Official Flex Team Blog, Ted on Flex, Flex.org, Christophe Coenraets's Blog, James Ward's Blog, Per Olsen's old and new blogs, Sean the Flex Guy, Farata Systems Blog, and many, many more. One of the many reasons/motivations/incentives that I have for blogging is to make things available for me to easily and conveniently refer to later. Flex is no different and I have even found my own blog postings on Flex to be useful at times.
As with many products and technologies, support forums can also be of great use to both the new Flex developer and the more seasoned Flex developer. These include the Flex Support Forums and more general forums like Stack Overflow.
Conclusion and Additional Resources
There are a seemingly infinite number of other worthy Flex references online. Because I can never hope to even remember all of them let alone discuss all of them, I am again reminded of the usefulness of a powerful search engine in finding what one needs. However, I tried in the list above to discuss some Flex-related tools and resources that I find myself using enough that I do remember them and appreciate them on a near daily basis. It is also not at all surprising that many of the same resources that are useful for Java developers (such as the search engine, forums, and API documentation) are useful to Flex developers.
Finally, I will now list a couple of links to blog postings that are similar to this one in that they contain a collection of links that the respective blog author considered to be highly useful in that author's Flex work. In fact, as I browse through them, I remember other blogs that deserve specific mention, but this post is already getting too long to add all of them.
→ Bookmark: 60+ Adobe Flex Reference Websites (11 January 2009)
→ Flex Tutorials Roundup (14 January 2009)
→ Best Adobe Flex Resources and Tutorial Sites (25 March 2008)
→ List of 31 Flex APIs, Libraries, Components, and Tools (21 August 2007)
→ 22 ActionScript 3.0 APIs (13 August 2007)
→ Flex: The Unix Geek's Ideal Flash Environment (18 September 2008)
→ What Non-Flex Resources Have Helped You Learn Flex? (30 July 2008)
UPDATE (16 January 2009): The links below this line have been added since the original post and are based on feedback comments.
→ Tour de Flex
→ 104 Free Opensource APIs, Libraries, and tools for the Flash Platform (5 January 2009)
UPDATE (17 January 2009): The reference added next (the ActionScript Reference) is useful for identifying ActionScript classes and APIs that apply to Flex 3.2, AIR 1.5, or both on the Flash Player 10.
→ Adobe Flash Platform ActionScript Reference Rich Internet Application Development