Accessibility

Flex Learning Path – Designer/Developer

Your background: Little or no experience with programming
Your goal: Learn to build and customize rich Internet applications (RIAs) built in Flex

Learn about the technology

See Flex in Action
In this task, you will browse rich Internet applications built in Flex that are used across a broad variety of industries and use cases. This will provide you with inspiration and ideas, let you see what Flex is capable of, and also give you a look at who is using Flex. Be sure to explore the Flex showcase which is a Flex application letting you browse and search for publicly available Flex applications. In addition to the companies included there, many other companies are developing Flex RIAs for internal applications where complex business processes are simplified by more interactive applications that display rich data. Oracle, SAP, Business Objects, and other enterprise software companies are also integrating Flex technology with their enterprise applications.
Learn how Flex works
In this task, you will learn about the Adobe Flash Platform including its tools (Flex Builder and Creative Suite), clients (Flash Player and Adobe AIR), frameworks (Flex and Ajax), and servers and services (ColdFusion, LiveCycle, BlazeDS, Adobe Flash Media Server, and Scene7). To learn building Flex applications, complete the tasks in the Programmer and/or Designer/Developer paths.
Learn about the Flex framework
In this task, you will get familiar with the various classes in the Flex framework including visual controls, containers, managers, and utilities. To learn building Flex applications, complete the tasks in the Programmer and/or Designer/Developer paths.
Integrate with the browser
In this task, you will get familiar with how a Flex application interacts with the browser. You will review Flash Player penetration statistics, learn about the mechanism for caching the Flex framework on the client, learn how to enable traditional browser-based navigation of a Flex application using the browser forward and back buttons and bookmarking, and finally, how to let your Flex application and JavaScript code in the HTML page talk to one another.
Talk to the server
In this task, you will learn the options for talking to back-end data and business logic. You can make requests to the server using HTTP requests (to request XML files, application server pages, or RESTful web services), web services (to request operations of SOAP-based services), or Flash Remoting (to invoke methods of application server classes). Flash Remoting uses the open-source protocol AMF (Action Message Format, a binary, serialized data transport format) to provide a fast, efficient means of transporting data to your Flex application which accelerates application performance. You will also learn about the various technologies and products available to implement Flash Remoting on various application servers.
Build collaborative applications
In this task, you will learn what tools you need and how to make collaborative Flex applications. Examples of collaborative applications range from a simple chat application, to a shared whiteboard like in Adobe Connect, to a real-time data management application in which data is simultaneously updated on the client, the database on the server, and in other Flash Player clients viewing the data. In order to build a collaborative application, you either need to (1) install BlazeDS or LiveCycle Data Services ES (for Java and ColdFusion servers) or an application with equivalent functionality for other application servers or (2) use the hosted Adobe Flash Collaboration Service. For more details, see the tasks in the Programmer track.
Reduce SWF size and reuse code
In this task, you will learn to decrease the size of your application using release builds, the Flash Player framework cache, modules, runtime shared libraries, and sub-applications with Flex version support using the Marshall Plan. As your application continues to grow in features, the SWF may become too large to ensure quick enough download by your clients. If there is application functionality that not every client will use or may not be used right away, you can split it into a module; a module is compiled into its own SWF and then is loaded at runtime via code. If you have multiple applications that share some of the same code libraries, you can use runtime-shared libraries to only require the code be downloaded once and used by both applications during the browser session. Adobe signed runtime-shared libraries can persist on the client and be cached by the Flash Player after the browser is closed for Flash Player 9 Update 3 (9,0,115,0) or later for only. If you have parts of your applications that were built with different versions of the Flex framework, use sub-applications and the Marshall plan.
Learn about the Flash Player
In this task, you will learn about the Flash Player security model, best practices for creating secure SWFs, garbage collection, rendering, and more about the internal workings of the Flash Player.
Make Flex applications accessible
In this task, you will learn about how to create accessible Flex applications. Flex 3 includes 28 components with support for accessibility built in, automating many of the most common accessibility practices such as providing text equivalents, labeling controls, and promoting keyboard access. You need to tell the compiler explicitly to use these accessible versions of the components because they increase the size of the application.
Create multilingual Flex applications
In this task, you will learn about the capabilities of Flex to create multilingual applications. You create resource properties files and then either bind values from the resource to an expression using the @Resource directive or use methods of the ResourceBundle class to access those values. You can compile multiple locales (resource bundles) into a single SWF or create resource modules from the properties files and then load them at runtime, allowing you to change locale on the fly.
Find and use non Flex framework components
In this task, you will browse for components that are not part of the Flex framework but that can easily be incorporated into Flex applications. Some of these components are created by Adobe, some are created by other companies and developers. Some components are free and others cost money. If you don't find what you are looking for, you can always have your developers create their own components.
Create mashups
In this task, you will learn how to create mashups with various 3rd-party services.
Search SWFs
In this task, you will learn what content in your SWF files is searchable by search engines and see what the plans are for the future.
Track traffic in SWFs
In this task, you will learn how to track traffic in your Flex applications using Google Analytics or Omniture.
Use your existing C/C++ libraries
In this task, you will learn about Alchemy, an Adobe research project that will enable web application developers to reuse hundreds of millions of lines of existing open source C and C++ client or server-side code on the Flash Platform. The C/C++ code is compiled to ActionScript 3.0 as a SWF or SWC that runs on Adobe Flash Player 10 or Adobe AIR 1.5 with minimal degradation.
See what's up with Flex and mobile
In this task, you will learn about the status of Flash and Flex applications on mobile devices.
Compare Flex to other RIA technologies
In this task, you will hear the community compare Flex to other technologies that can be used to build engaging rich Internet applications including Ajax, Silverlight, and JavaFX.
See what's in store for Flex 4
In this task, you will take a look at what's in store for Flex 4, code-named Gumbo, currently scheduled to be released in the second half of 2009. Gumbo has three primary themes: design in mind, developer productivity, and framework evolution. For design in mind, expect to see a new component and skinning architecture that invites easier skinnability of components by various tools; FXG, a new way to describe vector graphics in MXML allowing transfer of info more easily between tools, including a new design-based tool for Flex code-named Thermo; and improvements to the existing experience-oriented features such as states and effects. For developer productivity, look for better compiler performance, CSS improvements, and two-way data binding. For framework evolution, there are new text features, including bidirectional and vertical text and layouts for international applications as well as a new skinnable video component.

Learn about the development process

Learn about the tools
In this task, you will get familiar with the tools you can use to build Flex applications. Although you can develop your application in any IDE and debug and compile it with command line tools, most choose to use Flex Builder which is based on the popular open-source Java development environment Eclipse. If you already have Eclipse, you can install Flex Builder as a plug-in. If you don't already have Eclipse, you can install Flex Builder as a standalone application in which case both Eclipse and the Flex Builder plug-in are installed.
Work in teams
In this task, you will learn how to get teams of developers to work successfully together on Flex projects.
Submit Flex bugs
In this task, you will explore the Flex bug and issue management system which is now available for use by the community to submit, search, and track bugs.
Get familiar with Flex GUI design patterns
In this task, you will learn about the design patterns used to create Flex applications. Everything in Flex is event based; for any code to execute, you have to register to listen for and define handlers to respond to events. In order to create code that is easy to maintain and scale, you should at least implement a basic model-view-controller pattern in which your data is separated from your views and your event-handling logic. This has been facilitated by the Flex framework with the concept of data binding, which enables you to concisely register your views to be notified and updated whenever the data used to populate them changes. Once your application is larger than a single class, you need to exchange data between components by broadcasting and listening for custom events for whose associated event object you can define custom properties. As your application continues to grow, you need to continue to separate and apply patterns to facilitate maintenance and updating, and you may soon graduate into needing an architecture framework. To learn more about architecture frameworks, see the subsequent tasks Learn about the Cairngorm framework and/or Check out other Flex microarchitectures in this Architect path.
Learn about Flex microarchitectures
In this task, you will get introduced to the concept of using a microarchitecture, a collection of design patterns, to build medium to large-scale applications. For more details on specific microarchitectures, see the subsequent Learn about the Cairngorm framework and Check out other Flex microarchitectures tasks.
Learn about the Cairngorm framework
In this task, you will learn about the Cairngorm microarchitecture, one of many architecture frameworks that you can use to build medium to large-scale Flex applications. Cairngorm was originally developed by the software consultancy iteration::two and then released by them as an open-source project for Flex in 2004. It is used extensively by Adobe Consulting to help numerous customers and partners successfully deliver large-scale Flex RIAs. To decide if you should use a microarchitecture, see the previous Learn about Flex microarchitectures task. To learn about other Flex microarchitectures, see the Check out other Flex microarchitectures task in this Architect path.
Check out other Flex microarchitectures
In this task, you will explore other microarchitectures that have been developed for building medium to large-scale Flex applications. To decide if you should use a microarchitecture, see the previous Learn about Flex microarchitectures task. To learn about the Cairngorm microarchitecture, see the previous Learn about the Cairngorm framework task.
Learn to build custom components
In this task, you will learn how to build custom Flex components. Components can be built either with Flex or Flash (Flash CS3 and later has a tool to export as a Flex component). Flex based components can range from simple components that just extend components in the Flex framework by adding properties and methods, to more advanced components for which you add custom events or styles, to more advanced components that override methods of UIComponent, the base class of all Flex components. The latter requires an understanding of the Flex component live cycle, including what methods are called when in the creation and update processes that occur in an application.
Unit test an application
In this task, you will learn to create unit tests for a Flex application using FlexUnit, an open-source unit testing framework for Flex and ActionScript 3.0 applications. FlexUnit provides a low-level automated testing system to help you catch bugs during application development as you add features and refactor code. FlexUnit mimics the functionality of JUnit, a Java unit testing framework, and comes with a graphical test runner. Unit testing can be automated and included as part of the build process using Ant tasks. To learn more about using Ant tasks, see the subsequent Deploy the application task in this Architect path.
Deploy an application
In this task, you will learn to deploy a Flex application. You can manually deploy an application using Flex Builder to compile a release-build to the server or you can automate the application deployment using industry-standard Ant tasks, which enable you to quickly and easily set up complex build processes for your Flex applications. Flex Ant tasks includes two compiler tasks, mxmlc and compc, that extend the Java Ant task. You use these tasks to compile Flex applications, modules, and component libraries. It also includes an html-wrapper task that lets you generate custom HTML wrappers and the supporting files for those wrappers.
Work with designers
In this task, you will learn how designers and developers work together to build a Flex application and how to facilitate the workflow between them. For more details on how the various designer and developer tools work together, see the Integrate with Creative Suite task in the Designer/Developer path.