Adobe Flash

Adobe Flash (previously called Macromedia Flash) is a multimedia platform originally acquired by Macromedia and currently developed and distributed by Adobe Systems. Since its introduction in 1996, Flash has become a popular method for adding animation and interactivity to web pages. Flash is commonly used to create animation, advertisements, and various web page components, to integrate video into web pages, and more recently, to develop rich Internet applications.

Flash can manipulate vector and raster graphics and supports bidirectional streaming of audio and video. It contains a scripting language called ActionScript. Several software products, systems, and devices are able to create or display Flash content, including Adobe Flash Player, which is available free for most common web browsers, some mobile phones and for other electronic devices (using Flash Lite). The Adobe Flash Professional multimedia authoring program is used to create content for the Adobe Engagement Platform, such as web applications, games and movies, and content for mobile phones and other embedded devices.

Files in the SWF format, traditionally called "ShockWave Flash" movies, "Flash movies" or "Flash games", usually have a .swf file extension and may be an object of a web page, strictly "played" in a standalone Flash Player, or incorporated into a Projector, a self-executing Flash movie (with the .exe extension in Microsoft Windows or .hqx for Macintosh). Flash Video files have a .flv file extension and are either used from within .swf files or played through a flv aware player, such as (VLC), or QuickTime and Windows Media Player with external codecs added.

http://

The program Flash was the brainchild of Jonathan Gay, who developed the idea while in college and extended it while working for Silicon Beach Software and its successors.

In January 1993, Jonathan Gay, Charlie Jackson, and Michelle Welsh started a small software company called FutureWave Software and created their first product, SmartSketch. A drawing application for pen computers running the PenPoint OS, SmartSketch was designed to make creating computer graphics as simple as drawing on paper. When PenPoint failed in the marketplace, SmartSketch was ported to Microsoft Windows and Mac OS. As the Internet began to thrive, however, FutureWave began to realize the potential for a vector-based web animation tool that might easily challenge Macromedia's Shockwave technology. In 1995, FutureWave modified SmartSketch by adding frame-by-frame animation features and re-released it as FutureSplash Animator on Macintosh and PC. By that time, the company had added a second programmer Robert Tatsumi, artist Adam Grofcsik, and PR specialist Ralph Mittman. Tatsumi focused on writing the authoring tool's user interface, while Gay wrote the graphics renderer, curve and shape math code and the browser plug-in. The product was offered to Adobe and used by Microsoft in its early work with the Internet (MSN). In December 1996, Macromedia acquired the vector-based animation software and later released it as Flash, contracting "Future" and "Splash" of the FutureWave name. http://
 * FutureSplash Animator (April 10, 1996): initial version of Flash with basic editing tools and a timeline
 * Macromedia Flash 1 (November 1996): a Macromedia re-branded version of the FutureSplash Animator
 * Macromedia Flash 2 (June 1997): Released with Flash Player 2, new features included: the object library
 * Macromedia Flash 3 (May 31, 1998): Released with Flash Player 3, new features included: the movieclip element, JavaScript plug-in integration, transparency and an external stand alone player
 * Macromedia Flash 4 (June 15, 1999): Released with Flash Player 4, new features included: internal variables, an input field, advanced ActionScript, and streaming MP3
 * Macromedia Flash 5 (August 24, 2000): Released with Flash Player 5, new features included: ActionScript 1.0 (based on ECMAScript, making it very similar to JavaScript in syntax), XML support, Smartclips (the precursor to components in Flash), HTML text formatting added for dynamic text
 * Macromedia Flash MX (ver 6) (March 15, 2002): Released with Flash Player 6, new features included: a video codec (Sorenson Spark), Unicode, v1 UI Components, compression, ActionScript vector drawing API
 * Macromedia Flash MX 2004 (ver 7) (September 9, 2003): Released with Flash Player 7, new features included: Actionscript 2.0 (which enabled an object-oriented programming model for Flash)(although it lacked the Script assist function of other versions, meaning Actionscript could only be typed out manually), behaviors, extensibility layer (JSAPI), alias text support, timeline effects
 * Macromedia Flash MX Professional 2004 (ver 7) (September 9, 2003): Released with Flash Player 7, new features included all Flash MX 2004 features plus: Screens (forms for non-linear state-based development and slides for organizing content in a linear slide format like PowerPoint), web services integration, video import wizard, Media Playback components (which encapsulate a complete MP3 and/or FLV player in a component that may be placed in an SWF), Data components (DataSet, XMLConnector, WebServicesConnector, XUpdateResolver, etc) and data binding APIs, the Project Panel, v2 UI components, and Transition class libraries.
 * Macromedia Flash 8:
 * Macromedia Flash Basic 8 (released on September 13, 2005): A less feature-rich version of the Flash authoring tool targeted at new users who only want to do basic drawing, animation and interactivity. Released with Flash Player 8, this version of the product has limited support for video and advanced graphical and animation effects.
 * Macromedia Flash Professional 8 (released on September 13, 2005): Released with the Flash Player 8, Flash Professional 8 added features focused on expressiveness, quality, video, and mobile authoring. New features included Filters and blend modes, easing control for animation, enhanced stroke properties (caps and joins), object-based drawing mode, run-time bitmap caching, FlashType advanced anti-aliasing for text, On2 VP6 advanced video codec, support for alpha transparency in video, a stand-alone encoder and advanced video importer, cue point support in FLV files, an advanced video playback component, and an interactive mobile device emulator.
 * Adobe Flash CS3 Professional (as version 9, released on April 16, 2007): Flash CS3 is the first version of Flash released under the Adobe name. CS3 features full support for ActionScript 3.0, allows entire applications to be converted into ActionScript, adds better integration with other Adobe products such as Adobe Photoshop, and also provides better Vector drawing behavior, becoming more like Adobe Illustrator and Adobe Fireworks.
 * Adobe Flash CS4 Professional (as version 10, released on October 15, 2008): Contains inverse kinematics (bones), basic 3D object manipulation, object-based animation, an enhanced text engine, and further expansions to ActionScript 3.0. CS4 allows the developer to more efficiently and quickly create animations with many improved features that were not included in previous versions.

(previously called Macromedia Labs) is a source for news and pre-release versions of emerging products and technologies from Adobe. Most innovations, such as Flash 9, Flex 3, and ActionScript 3.0 have all been discussed and/or trialled on the site.

One area Adobe is focusing on (as of February 2009) is the deployment of Rich Internet Applications (RIAs). To this end, they released Adobe Integrated Runtime (AIR), a cross-platform runtime environment which can be used to build, using Adobe Flash, rich Internet applications that can be deployed as a desktop application. It recently surpassed 100 million installations worldwide.

Two additional components designed for large scale implementation have been proposed by Adobe for future releases of Flash. First the option to require an ad to be played in full before the main video piece is played. Secondly, Adobe has announced plans to add digital rights management (DRM) capabilities into the new version of Flash. This way Adobe can give companies the option to link an advertisement with content and make sure that both are played and that they not be changed. The current status of these two projects is unclear.

Flash Player for smart phones is expected to be available to handset manufacturers at the end of 2009.

http://

On May 1, 2008 Adobe announced Open Screen Project, which hopes to provide a consistent application interface across devices such as personal computers, mobile devices and consumer electronics. When the project was announced, several goals were outlined: the abolition of licensing fees for Adobe Flash Player and Adobe Integrated Runtime, the removal of restrictions on the use of the Shockwave Flash (SWF) and Flash Video (FLV) file format, the publishing of application programming interfaces for porting Flash to new devices and the publishing of The Flash Cast protocol and Action Message Format (AMF), which let Flash applications receive information from remote databases.

As of February 2009, the specifications removing the restrictions on the use of SWF and FLV/F4V specs have been published. The Flash Cast protocol - now known as the Mobile Content Delivery Protocol - and AMF protocols have also been made available, with AMF available as an open source implementation, BlazeDS. Work on the device porting layers is in the early stages. Adobe intends to remove the licensing fees for Flash Player and Adobe AIR for devices at their release for the Open Screen Project.

The list of mobile device providers who have joined the project includes [http://en.wikipedia.org/wiki/Palm,_Inc. Palm], Motorola and Nokia, who, together with Adobe, have announced a $10 million Open Screen Project fund.

http://

Initially focused on animation, early versions of Flash content offered few interactivity features and thus had very limited scripting capability.

More recent versions include ActionScript, an implementation of the ECMAScript standard which therefore has the same syntax as JavaScript, but in a different programming framework with a different associated set of class libraries. ActionScript is used to create almost all of the interactivity (buttons, text entry fields, drop down menus) seen in many Flash applications.

Flash MX 2004 introduced ActionScript 2.0, a scripting programming language more suited to the development of Flash applications. It is often possible to save time by scripting something rather than animating it, which usually also enables a higher level of editability.

Since the arrival of the Flash Player 9 alpha a newer version of ActionScript has been released, ActionScript 3.0. ActionScript 3.0 is an object oriented programming language allowing for more control and code reusability when building complex Flash applications. ActionScript 3.0 has also allowed for formal software engineering methods to be implemented when working with Flash, because of the object oriented programming approach.

Of late, the Flash libraries are being used with the XML capabilities of the browser to render rich content in the browser. This technology is known as Asynchronous Flash and XML, much like AJAX. This technology of Asynchronous Flash and XML has pushed for a more formal approach of this technology called Adobe Flex, which uses the Flash runtime to build Rich Internet Applications.

This technology can be used in players like those on MySpace and YouTube, to provide protection for the content that the Flash calls, like MP3s and videos. The content called is streamed - or passes - through the Flash files, making downloading for storage a difficult task for most people. Programs such as Real Player Downloader and browser extensions like Firebug can trace the XML files.

http://

Often, Flash developers will decide that while they desire the advantages that Flash affords them in the areas of animation and interactivity, they do not wish to expose their code to the world. However, as with all intermediate language compiled code, once an.swf file is saved locally, it can be decompiled into its source code and assets. Some decompilers are capable of nearly full reconstruction of the original source file, down to the actual code that was used during creation, even though the result varies on a case-by-case basis.

In opposition to the decompilers, ActionScript obfuscators have been introduced to solve this problem. The higher-quality obfuscators implement lexical transformations, as in identifiers renaming, control flow transformation, and data abstraction transformation that makes decompilation virtually impossible to generate anything useful. The lower-quality obfuscators insert traps for the decompilers, making some fail.

http://

http://

Compared to other plug-ins such as Java, Acrobat Reader, QuickTime, or Windows Media Player, the Flash Player has a small install size, quick download time, and fast initialization time. However, care must be taken to detect and embed the Flash Player in (X)HTML in a W3C compliant way. A simple and widely used workaround is provided below:More information on how to detect and embed Flash Objects in a W3C compliant way is provided in the xSWF description.

The use of vector graphics combined with program code allows Flash files to be smaller, or streams to use less bandwidth, than the corresponding bitmaps or video clips. For content in a single format (such as just text, video or audio) other alternatives may provide better performance and consume less CPU power than the corresponding Flash movie, for example when using transparency or making large screen updates such as photographic or text fades.

In addition to a vector-rendering engine, the Flash Player includes a virtual machine called the ActionScript Virtual Machine (AVM) for scripting interactivity at run-time, support for video, MP3-based audio, and bitmap graphics. As of Flash Player 8, it offers two video codecs: On2 Technologies VP6 and Sorenson Spark, and run-time support for JPEG, Progressive JPEG, PNG, and GIF. In the next version, Flash is slated to use a just-in-time compiler for the ActionScript engine.

http://

Flash as a format has become very widespread on the desktop market and created a market dominance. Adobe claims that 98 percent of US Web users and 99.3 percent of all Internet desktop users have the Flash Player installed, with 72%-75% (depending on region) having the latest version. Numbers vary depending on the detection scheme and research demographics.

The Adobe Flash Player exists for a variety of systems and devices: Windows, Mac OS 9/X, Linux, Solaris, HP-UX, Pocket PC, OS/2, QNX, Symbian, Palm OS, BeOS, and IRIX). Officially, Adobe Flash only supports 32-bit platforms, although experimental 64-bit support has been available for Linux since November 2008. For compatibility with devices (embedded systems), see Macromedia Flash Lite.

http://

The W3C's SVG and SMIL standards are seen as the closest competitors of Flash. Adobe used to develop and distribute the 'Adobe SVG Viewer' client plug-in for MS Internet Explorer, but has recently announced its discontinuation. It has been noted by industry commentators that this was probably no coincidence at a time when Adobe moved from competing with Macromedia's Flash, to owning the technology itself. Meanwhile, Opera has supported SVG since version 8 and Safari has since version 3, and Firefox's built-in support for SVG continues to grow.

UIRA was a free software project that intended to become a complete replacement for Adobe Flash. The project collapsed in mid 2007, though people are now discussing reviving or continuing it, and a few other projects like Ajax Animator still exist.

http://

http://

In October 1998, Macromedia disclosed the Flash Version 3 Specification to the world on its website. It did this in response to many new and often semi-open formats competing with SWF, such as Xara's Flare and Sharp's Extended Vector Animation formats. Several developers quickly created a C library for producing SWF. In February 1999, the company introduced MorphInk 99, the first third-party program to create SWF files. Macromedia also hired Middlesoft to create a freely available developers' kit for the SWF file format versions 3 to 5.

Macromedia made the Flash Files specifications for versions 6 and later available only under a non-disclosure agreement, but it is widely available from various sites.

In April 2006, the Flash SWF file format specification was released with details on the then newest version format (Flash 8). Although still lacking specific information on the incorporated video compression formats (On2, Sorenson Spark, etc.), this new documentation covered all the new features offered in Flash v8 including new ActionScript commands, expressive filter controls, and so on. The file format specification document is offered only to developers who agree to a license agreement that permits them to use the specifications only to develop programs that can export to the Flash file format. The license forbids the use of the specifications to create programs that can be used for playback of Flash files. The Flash 9 specification was made available under similar restrictions.

In May 2008, Adobe launched the Open Screen Project (Adobe link), which made the SWF specification available without restrictions. Previously, developers couldn't use the specification for making SWF-compatible players, but only for making SWF-exporting authoring software. The specification remains incomplete, however, as it does not include any details regarding RTMP or Sorenson Spark, both of which are widely used to distribute video through Flash.

http://

Since Flash files do not depend on an open standard such as SVG, this reduces the incentive for non-commercial software to support the format, although there are several third party tools which use and generate the SWF file format. Flash Player cannot ship as part of a pure open source, or completely free operating system, as its distribution is bound to the Macromedia Licensing Program and subject to approval.

There is, as of late 2008, no complete free software replacement which offers all the functionality of the latest version of Adobe Flash Player.

Gnash is an active project that aims to create a free player and browser plugin for the Adobe Flash file format and so provide a free alternative to the Adobe Flash Player under the GNU General Public License. Despite potential patent worries because of the proprietary nature of the files involved, Gnash supports most SWF v7 features and some SWF v8 and v9. Gnash runs on Windows, Linux and other operating systems on 32-bit, 64-bit and other architectures.

Swfdec is another open-source flash player available for Linux, FreeBSD and OpenBSD. See also SWFOpener.

Scaleform GFx is a commercial alternative Flash player that features full hardware acceleration using the GPU and has high conformance up to Flash 8 and AS2. Scaleform GFx is licensed as a game middleware solution and used by many PC and console 3D games for user interfaces, HUDs, mini games, and video playback.

http://

Open Source projects like Ajax Animator and the (now defunct) UIRA aim to create a flash development environment, complete with a graphical user environment. Alternatively, programs such as swfmill, SWFTools, and MTASC provide tools to create SWF files, but do so by compiling text, actionscript or XML files into Flash animations. It is also possible to create SWF files programmatically using the Ming library, which has interfaces for C, PHP, C++, Perl, Python, and Ruby. haXe is an open source, high-level object-oriented programming language geared towards web-content creation that can compile Flash files.

Many shareware developers produced Flash creation tools and sold them for under US$50 between 2000 and 2002. In 2003 competition and the emergence of free Flash creation tools had driven many third-party Flash-creation tool-makers out of the market, allowing the remaining developers to raise their prices, although many of the products still cost less than US$100 and support ActionScript. As for open source tools, KToon can edit vectors and generate SWF, but its interface is very different from Macromedia's. Another, more recent example of a Flash creation tool is SWiSH Max made by an ex-employee of Macromedia. Toon Boom Technologies also sells a traditional animation tool, based on Flash - Toon-Army.

In addition, several programs create .swf-compliant files as output from their programs. Among the most famous of these are Screencast tools, which leverage the ability to do lossless compression and playback of captured screen content in order to produce demos, tutorials, or software simulations of programs. These programs are typically designed for use by non-programmers, and create Flash content quickly and easily, but cannot actually edit the underlying Flash code (i.e. the tweening and transforms, etc.) Screencam is perhaps the oldest screencasting authoring tool to adopt Flash as the preferred output format, having been developed since the mid-90s. That screencasting programs have adopted Flash as the preferred output is testament to Flash's presence as a ubiquitous cross-platform animation file format.

Other tools are focused on creating specific types of Flash content. Anime Studio is a 2D animation software specialized for character animation which creates SWF files. Express Animator is similarly aimed specifically at animators. Question Writer publishes its quizzes to Flash file format.

Users that are not programmers or web designers will also find on-line tools that allow them to build full Flash-based web sites. One of the oldest services available (1998) is FlashToGo. Such companies provide a wide variety of pre-built models (templates) associated to a Content Management System that empowers users to easily build, edit and publish their web sites. Another site, which allows for greater customization and design flexibility is Wix.com.

Adobe wrote a software package called Adobe LiveMotion, designed to create interactive animation content and export it to a variety of formats, including SWF. LiveMotion went through two major releases, but failed to gain any notable user base.

In February 2003, Macromedia purchased Presedia, which had developed a Flash authoring tool that automatically converted PowerPoint files into Flash. Macromedia subsequently released the new product as Breeze, which included many new enhancements. In addition, (as of version 2) [http://en.wikipedia.org/wiki/Apple_Inc. Apple]'s Keynote presentation software also allows users to create interactive presentations and export to SWF.

http://

Flash can be used to embed video in web pages, a feature available since Flash Player version 6. The technique is to create a flash file (.swf) that acts as a player for the video file. This is the basis for many popular video sites, including YouTube and Google Video. The actual video file is either an FLV or H.264 file; both can easily be played by generic videoplayer software. However, getting browsers to display video is still a platform specific issue due to lack of a common video format, and the subject of a web standard for video is a heated debate (see HTML 5). Using Flash has the advantage of Flash Player's wide distribution, but as this is proprietary technology for which there is no real alternative, it also makes multimedia embedded in this way notoriously difficult to access for non-users of the Flash Player, particularly if the location of the multimedia file is moved out of the HTML.

Flash movies can run in browsers with the proper Flash player installed, although it is important to note that Flash movies cannot run within an e-mail client. Outlook, Gmail, Hotmail, etc., cannot run flash movies within an e-mail. Movies must be linked from the message so that a new browser window opens up. Flash has the ability from here to determine if the browser has the correct player installed and whether or not to display the movie, or an alternate message if the user does not have Flash.

http://

Flash Video (.flv files) is a container format, meaning that it is not a video format in itself, but can contain other formats. The video in Flash is encoded in H.263, and starting with Flash player 8, it may alternatively be encoded in VP6. The audio is in MP3. The use of VP6 is common in many companies, because of the large adoption rates of Flash Player 8 and Flash Player 9.

On August 20, 2007, Adobe announced on its blog that with Update 3 of Flash Player 9, Flash Video will also support the MPEG-4 international standard. Specifically, Flash Player will have support for video compressed in H.264 (MPEG-4 Part 10), audio compressed using AAC (MPEG-4 Part 3), the MP4, M4V, M4A, 3GP and MOV multimedia container formats (MPEG-4 Part 14), 3GPP Timed Text specification (MPEG-4 Part 17) which is a standardized subtitle format and partial parsing support for the 'ilst' atom which is the ID3 equivalent iTunes uses to store metadata. Adobe also announced that they will be gradually moving away from the proprietary FLV format to the standard MP4 format owing to functional limits with the FLV structure when streaming H.264. The final release of the Flash Player supporting MPEG-4 had become available in Fall 2007.

http://

http://

Many usability concerns regarding Flash concern how it breaks with conventions associated with normal HTML pages. Things like selecting text, scrollbars, form control and right-clicking act differently than with a regular HTML webpage. Usability expert Jakob Nielsen published an Alertbox in 2000 entitled, Flash: 99% Bad which listed many of these issues. Much of this criticism was due to poor implementation, rather than inherent problems with Flash. Some problems have been fixed since Nielsen's complaints; text size, for example, can now be easily controlled using the full page zoom now implemented in many modern browsers.

The US Justice Department has stated in regard to the Americans with Disabilities Act of 1990:Although it has been possible for authors to include alternative text content in Flash since Flash Player 6, Flash's accessibility features are compatible only with certain screen readers and only under Windows. Internet users who are visually-impaired, or who require larger text sizes or high-contrast color schemes may find sites that make extensive use of Flash difficult, although the former can now be controlled using the full page zoom options found in many modern browsers.

http://

The proprietary nature of Flash is a major concern to advocates of open standards and free software. Its widespread use has, according to some such observers, harmed the otherwise open nature of the World Wide Web. A response may be seen in Adobe's Open Screen Project.

Representing open standards, inventor of CSS and co-author of HTML 5, Håkon Wium Lie explained in a Google tech talk the proposal of Theora as the video codec for HTML 5 (see also the Ogg controversy):Presenting the free software movement, Richard Stallman stated in a speech in October 2004 that:Stallman's argument then was that no free players were comparatively good enough. As of February 2009, Gnash and Swfdec have seen very limited success in competing with Adobe's player. The fact that many important and popular websites expect users to have Adobe's player, combined with no good free alternative have led to frustration among users, suggesting that this is the most common obstacle to enjoying the web in freedom, which presumably relates to the ranking of Gnash as number one on the Free Software Foundation's list of high priority projects.

For free software users willing to accept Adobe's player, the situation has improved lately. From the Linux camp, criticism calmed significantly with two major Flash Player releases, by version 9 (January 17, 2007) and the alpha release of a 64-bit player (November 17, 2008). The need for a 64-bit version was a notorious issue between these two dates, and is becoming apparent for Windows users as of 2009.

Referring to the web's openness, an essential feature is that web pages as well as the files they consist of are coupled together by human readable text. Similarly, the openness of the internet lies in its protocols. Thus, the common practice by video centric websites of hiding the URL of web embedded multimedia using Flash or Silverlight, obfuscating the URL with javascript, or using custom protocols like RTMP (Flash) or MMS (Windows Media streams), may seem threatening to the openness of the web. It also limits interoperability and imposes an illusion that it is technically impossible for users to do whatever they want with such content. Reflecting the latter, the terms "streaming" and "download" are often used in this context as if they were mutually exclusive events, although the distinction is purely on the client side.

http://

Many popular web browsers now have extensions that prevent immediate Flash playback, but lets the user play it by clicking it first. Firefox has NoScript and Flashblock while a separate extension for Opera called Flashblock is available. One similar extension for Internet Explorer is Foxie, and contains a number of features, one of which is also named Flashblock. K-Meleon has a built-in Flash blocker. WebKit-based browsers under Mac OS X have ClickToFlash.
 * It is argued that the performance of Adobe Flash Player on different platforms may not be optimal.
 * Any flash player has to be able to animate on top of the video rendering, which makes hardware accelerated video rendering at least not as straightforward as with a purpose built multimedia player. It is not uncommon for other multimedia players to play fine where Flash Player drops frames and skips audio.