24 July 2011
The Adobe Flash Platform is the leading web design and development platform for creating expressive applications, content, and video that run consistently across operating systems and devices and reach over 98% of Internet-connected desktop users. The Flash Platform consists of an integrated set of technologies—including client runtimes, tools, frameworks, services, and servers—that provide everything you need to deliver applications, content, and high-definition video to the widest possible audience.
This overview covers the following topics:
At the center of the Flash Platform are the client runtimes: Adobe Flash Player for the browser and Adobe AIR for outside the browser. The runtimes render rich Internet applications (RIAs) created on the Flash Platform (in the form of SWF files).
More than 98% of Internet users have Flash Player installed and penetration of new releases is rapid, consistently reaching 80% within nine months. In most cases, the upgrade process to a newer version of Flash Player can be seamless, with the user not required to abandon the page they are browsing to update the player. More than 85% of the most popular websites use Flash Player to provide an improved user experience. These more expressive and interactive experiences are made possible due to the much richer object model and frame playback mechanism at the heart of Flash Player.
Flash Player also provides support for both prerecorded and real-time video streaming and high-definition video. Currently, more than 80% of all the video on the web is delivered via Flash Player with over 97% of people on the web viewing a video online with Flash Player each month.
Flash Player is the client runtime for RIAs created on the Flash Platform in the browser. You can also deploy RIAs (both Ajax and Flash) to the desktop and mobile devices as Adobe AIR applications using the Flash Platform tools. This enables you to share code between web, desktop, and mobile versions of your RIAs and also to make use of your developers' existing skill sets. This can save you a lot of time and money that would otherwise be spent to develop different versions of an application for use on the web and multiple operating systems on the desktop and across devices.
The Adobe AIR client runtime is a combination of Flash Player, an embedded SQLite database engine, and the WebKit browser engine. Because AIR applications are not running in the browser sandbox, they can have additional functionality not available in web applications including the ability to interact with the file system (reading, writing, appending, and deleting files, and creating and deleting folders) and to detect network connectivity and then store data offline in files or in a local database, which can be synced up with the server when connectivity is reestablished. AIR applications can also consist of multiple operating system windows and use system tray icons, native menus, toast notifications, and more.
You create the SWF files to be executed in the Flash Player and AIR runtimes using the Flash Platform tools. Adobe Flash Professional provides designers with a set of drawing tools and a timeline to easily create animated content. Adobe Flash Builder provides programmers a code-based way to create SWF files. Adobe Flash Catalyst provides designers a way to rapidly create application interfaces and interactive content without writing code.
Adobe Flash, released in 1994, is the original tool for creating Flash content (SWF files), and for about a decade it was the only Adobe tool for creating it. Historically, it has been used most extensively for creating animations, rich media experiences, and to play back or stream video content. Animations are created visually using drawing tools and a timeline.
Over the last decade, web designers and developers began to use Flash not just for creating rich media, but also to build applications rich in interactivity. Typically, the visual tools and timeline are used to define the application interfaces and the ActionScript programming language is used to program functionality. ActionScript is the core language of Flash Player and is based on the ECMAScript standard.
With the rise of SWF files on the web, more and more developers with diverse skill sets became interested in creating them. The Flash development environment with its visual development process, however, did not appeal to more traditional code-centric programmers and the need for an additional development environment to create SWF files purely from code became evident. Flex Builder (now called Flash Builder) was developed for this purpose and was released in 2004.
Flash Builder is a plug-in for the open-source, standard Eclipse development environment used by many programmers. It is a code editor that also has tools for debugging and profiling applications and visually creating and styling interfaces. You use two languages to develop SWF applications: ActionScript and MXML. MXML is part of the Flex framework and is a declarative tag-based language used to create application interfaces more quickly. When the application is compiled, the MXML is parsed and converted to ActionScript in memory, and then all the ActionScript is compiled into a SWF file. Typically, MXML is used to create the visual layout of applications and ActionScript is used for the business logic.
Adobe Flash Catalyst is a new design tool for rapidly creating application interfaces and interactive content without writing code. You can import static compositions created in Photoshop CS4 or later, Illustrator CS4 or later, or Fireworks CS4 or later into Flash Catalyst and then convert the artwork into interfaces and interactive content by visually defining events, transitions, and motion from menus. Interactivity is based on states and events instead of timelines.
The resulting Flash Catalyst project can be handed off to developers who can use Flash Builder to add more functionality such as connecting to back-end systems, or it can be published directly as a SWF file to run in Flash Player in the browser or as an AIR application to be deployed to the desktop.
Flash Catalyst fits into the workflow by enabling designers to more quickly and easily prototype user interfaces for applications as well as create standalone, interactive content, such as interactive ads, product guides, or design portfolios.
In addition to developing tools for creating applications, Adobe also created frameworks to help developers more quickly and easily build robust applications rich in functionality.
The Flex framework is a free, open source framework consisting of a standards-based language and programming model, a package of extendable ActionScript classes, and command-line tools to compile and debug applications. Although the Flex SDK can be used on its own, most developers use it in conjunction with the Flash Builder IDE to build more rapidly applications. Because the framework is open source, developers can directly discuss ideas and proposals with project committers, submit code through the open bug tracking system, and contribute enhancements directly to the Flex project.
The package of ActionScript classes provides extensible, skinnable building blocks for your applications. It includes visual components for data entry text inputs, radio buttons, check boxes, combo boxes, list boxes, buttons, date choosers, steppers, spinners, sliders; for data display data grids, trees, and charts; and media display images and video players. It also includes containers to manage layout horizontally, vertically, in a tile, with or without custom borders, in a form, in a panel to help you easily build fluid or flexible interfaces that take up all available screen real estate and respond to changes in window size and navigators that allow you to efficiently swap and manage views view stacks, accordions, and tab navigators.
In addition to components, the framework also provides classes to validate and format data, manipulate objects and collections of objects, manipulate display objects via animation, drag and drop, filters, skinning, and styling, make remote procedure calls to send and retrieve data from back-end servers, loading application functionality dynamically at runtime modules, runtime shared libraries, enabling browser navigation and deep-linking/bookmarking of applications, and more.
A great way to get an overview of the components and see them in action is to use the Tour de Flex application. Available as a web, desktop, and mobile application, Tour de Flex shows over 450 running samples, each with source code, links to documentation, and other details. Topics include the Flex components, data access, AIR desktop capabilities, cloud APIs, data visualization, mapping, and a growing collection of custom components, effects, and skins.
If you are creating a rich, interactive application, the extensive set of classes provided by the Flex framework along with the rich object model provided by the Flash Platform runtimes almost always makes it easier and faster to create your application with Flex than any other technology.
The Flash Platform includes several servers for delivering media and data to your SWF files. For delivering media, use the Adobe Flash Media Server family which provides a way to stream, protect, and monetize your media assets. For delivering data and integrating with your IT systems and business processes, use ColdFusion or a J2EE server with BlazeDS or the Adobe Digital Enterprise Platform (ADEP).
You can make your SWF files created with the Flash Platform tools dynamic, that is, able to retrieve, display, collect, and send data to servers by using ActionScript to make HTTP requests, web service calls, and Flash Remoting calls.
You can get an idea of the differences in data-loading speeds for these various methods compared to each other and Ajax by checking out James Ward's data loading benchmark application.
The Flash Platform runtimes handle serialization and deserialization of data on the client side. A web application installed on the application server handles the requests from Flash Player or AIR runtime clients; it invokes the right method of the right server-side class, handles deserialization of any data passed to the method and conversion to the corresponding server-side data types, and then for any return data, does the corresponding conversion back to ActionScript data types and serialization of the data, and sends the result back to the Flash Platform client.
In addition to using these remote procedure call methods to make requests or push data to servers, you can also use messaging to pull data from servers. Both Flash Remoting and messaging are part of a number of Flash Platform server products, including ColdFusion remoting only, BlazeDS remoting and messaging, and Adobe Digital Enterprise Platform remoting, messaging, and more. However, the technology and the binary protocol are now open source so you'll also find various alternative implementations for J2EE and most other servers including both open source and commercial offerings.
The Adobe Flash Media Server family provides a way to stream video and add real-time communication to your SWF applications. This industry-leading solution includes servers for encoding video to the FLV format required by the Flash Player; one-way streaming of protected, high-quality live and on-demand video; streaming for multiway applications, like webcam chat, online games, and VoIP; and a way to protect media content delivered to applications.
The Adobe Digital Enterprise Platform (ADEP) is the enterprise server companion for applications built using the Flex SDK and Adobe Flash Builder. Based on modular Java using OSGi, ADEP provides Flex application developers access to a wide variety of capabilities such as connectivity to data, content, and document services. Additionally, ADEP features SDKs to build rich enterprise applications within Adobe Flash Builder leveraging fully skinnable compositions and component frameworks.
ColdFusion is an application server that provides a way to quickly create server-side logic that you can easily call from your Flash Platform applications using Flash Remoting. Flash Remoting is built into the ColdFusion server.
ColdFusion is a declarative server-side markup language that is simpler to use and requires less code than alternative solutions. It runs natively on J2EE application servers and can easily extend or integrate with Java, .NET, Microsoft Exchange Server, web services, and more to be your bridge to nearly all enterprise data and infrastructure services.
BlazeDS is an open-source, Java server-based remoting and web messaging technology. It provides an easy way to connect non-ColdFusion, J2EE servers to back-end data for free. To use BlazeDS, you install it as a web application on your application server.
In addition to providing Flash Remoting capabilities to J2EE servers to execute remote actions, BlazeDS also allows data to be pushed in real-time to SWF files (or Flash applications), giving you a way to build messaging and collaborative applications. You can provide ColdFusion applications with messaging capabilities by installing BlazeDS on your ColdFusion server.
Note: If you are not using ColdFusion or a J2EE application server, you can still use the Flash Remoting and messaging capabilities of the Flash Platform by using an alternate server-side implementation of the Adobe open source remoting and messaging technologies. For example, FluorineFx provides an implementation of Flash Remoting and messaging functionality for the .NET framework and AMFPHP provides the same functionality for PHP servers.
In addition to providing runtimes, tools, and servers, to create and render rich Flash content, Adobe also provides the following service to enhance an application's functionality.
The collaboration service provides Flex developers a way to quickly and easily add real-time social capabilities to their applications without having to buy and maintain their own servers. The service consists of both Flex-based client components and a hosted services infrastructure on Acrobat.com. The service includes capabilities for adding chat, audio, video, whiteboards, file sharing, and user management to your applications.
The runtimes, tools, frameworks, services, and servers which make up the Flash Platform are supported by an established ecosystem of support programs, partners, and user communities to facilitate the development and deployment of your applications.
Adobe offers several programs to accelerate the creation, maintenance, and adoption of Flash Platform solutions.
Adobe offers support programs for purchase to enterprises, workgroups, developers, or individuals where world-class Adobe support teams can answer your questions, enable your users to leverage the full potential of the technology, minimize costly downtime for your teams, maximize adoption of the solution in your organization, and supplement your in-house IT support staff.
Adobe Labs provides the opportunity to experience and evaluate new and emerging innovations, technologies, and products from Adobe before they are released. You will find early access to software downloads, hosted applications, and related samples, documentation, tutorials and more. In addition, collaborative tools such as the online forums give you the opportunity to help shape a release.
The Flash Platform ecosystem includes both technology and solution partners. Industry leaders like SAP, SpringSource, Salesforce.com, Zend, Facebook, and many others help extend the reach of Flash Platform technologies through cooperative development and integration. A network of solutions partners exists to provide you with additional training, consulting, application development, extended products, services, and more.
Over one million designers and developers deliver interactive content, video, and applications on the web using the Flash Platform and a large number of online and local communities exist for sharing best practices, knowledge, and experience. The number and location of these communities are always changing, but some specific communities that Adobe actively helps foster include the following.
Local user groups usually meet monthly and help you meet others in the community, unveil the latest technology innovations, and reveal the techniques that turn novices into experts, and experts into gurus.
The Adobe forums provide an interactive online environment where users exchange questions, offer ideas and suggestions, and share tips and tricks. The forums are a great source for education and troubleshooting, and are an alternative to Adobe's official customer support channels.
The Adobe Developer Connection is a central repository for articles, tutorials, videos, code examples, and sample applications created by Adobe and the community about all of its technologies. Users can submit content, add comments, rank content, and more. The Developer Center also serves as a portal for related technology resources including links to documentation, seminars, community resources, and more. At the bottom of many of the Developer Center technology pages (for example, Flex Developer Center), you will also find an In the community widget which provides links to recent community blogs, events, and articles.