Adobe Flash Player
Adobe Flash Player
Adobe Flash Player (labeled Shockwave Flash in Internet Explorer and Firefox) is freeware software for using content created on the Adobe Flash platform, including viewing multimedia, executing rich Internet applications, and streaming video and audio. Flash Player can run from a web browser as a browser plug-in or on supported mobile devices. Flash Player was created byMacromedia and has been developed and distributed by Adobe Systems since Adobe acquired Macromedia.
Flash Player has a wide user base, and is a common format for games, animations, and graphical user interfaces (GUIs) embedded in web pages. Adobe states that more than 400 million out of more than 1 billion connected desktops update to the new version of Flash Player within six weeks of release.
Flash Player can be downloaded for free and its plug-in version is available for every major web browser. Google Chrome comes bundled with the sandboxed Adobe Flash plug-in and will continue to support the plug-in in Windows 8 Metro mode.
Adobe Flash Player is a runtime that executes and displays content from a provided SWF file, although it has no in-built features to modify the SWF file at runtime. It can execute software written in the ActionScript programming language which enables the runtime manipulation of text, data, vector graphics, raster graphics, sound and video. The player can also access certain connected hardware devices, including web cameras and microphones, after permission for the same has been granted by the user.
Flash Player is used internally by the Adobe Integrated Runtime (AIR), to provide a cross-platform runtime environment for desktop applications and mobile applications. AIR supports installable applications on Windows, Linux, macOS, and some mobile operating systems such as iOS and Android. Flash applications must specifically be built for the AIR runtime to use additional features provided, such as file system integration, native client extensions, native window/screen integration, taskbar/dock integration, and hardware integration with connected Accelerometer and GPS devices.
Flash Player includes native support for many different data formats, some of which can only be accessed through the ActionScript scripting interface.
- XML: Flash Player has included native support for XML parsing and generation since version 8. XML data is held in memory as an XML Document Object Model, and can be manipulated using ActionScript. ActionScript 3 also supports ECMAScript for XML (E4X), which allows XML data to be manipulated more easily.
- AMF: Flash Player allows application data to be stored on users computers, in the form of Local Shared Objects, the Flash equivalent to browser cookies. Flash Player can also natively read and write files in the Action Message Format, the default data format for Local Shared Objects. Since the AMF format specification is published, data can be transferred to and from Flash applications using AMF datasets instead of JSON or XML, reducing the need for parsing and validating such data.
- SWF: The specification for the SWF file format was published by Adobe, enabling the development of the SWX Format project, which used the SWF file format and AMF as a means for Flash applications to exchange data with server side applications. The SWX system stores data as standard SWF bytecode which is automatically interpreted by Flash Player. Another open-source project, SWXml allows Flash applications to load XML files as native ActionScript objects without any client-side XML parsing, by converting XML files to SWF/AMF on the server.
Flash Player is primarily a graphics and multimedia platform, and has supported raster graphics and vector graphics since its earliest version. It supports the following different multimedia formats which it can natively decode and playback.
- MP3: Support for decoding and playback of streaming MPEG-2 Audio Layer III (MP3) audio was introduced in Flash Player 4. MP3 files can be accessed and played back from a server via HTTP, or embedded inside an SWF file, which is also a streaming format.
- FLV: Support for decoding and playing back video and audio inside Flash Video (FLV and F4V) files, a format developed by Adobe Systems and Macromedia. Flash Video is only a container format and supports multiple different video codecs, such as Sorenson Spark, VP6 and more recently H.264. Flash Player uses hardware acceleration to display video where present, using technologies such as DirectX Video Acceleration and OpenGL to do so. Flash Video is used by YouTube, Hulu, Yahoo! Video, BBC Online and other news providers. FLV files can be played back from a server using HTTP progressive download, and can also be embedded inside an SWF file. Flash Video can also be streamed via RTMP using the Adobe Flash Media Server or other such server-side software.
- PNG: Support for decoding and rendering Portable Network Graphics (PNG) images, in both its 24-bit (opaque) and 32-bit (semi-transparent) variants. Flash Player 11 can also encode a PNG bitmap via ActionScript.
- JPEG: Support for decoding and rendering compressed JPEG images. Flash Player 10 added support for the JPEG-XR advanced image compression standard developed byMicrosoft Corporation, which results in better compression and quality than JPEG. JPEG-XR enables lossy and lossless compression with or without alpha channeltransparency. Flash Player 11 can also encode a JPEG or JPEG-XR bitmap via ActionScript.
- GIF: Support for decoding and rendering compressed Graphics Interchange Format (GIF) images, in its single-frame variants only. Loading a multi-frame GIF will display only the first image frame.
- HTTP: Support for communicating with web servers using HTTP requests and POST data. However, only websites that explicitly allow Flash to connect to them can be accessed via HTTP or sockets, to prevent Flash being used as a tool for cross-site request forgery, cross-site scripting, DNS rebinding and denial-of-service attacks. Websites must host a certain XML file termed a cross domain policy, allowing or denying Flash content from specific websites to connect to them. Certain websites, such asDigg, Flickr, Photobucket already host a cross domain policy that permits Flash content to access their website via HTTP.
- RTMP: Support for live audio and video streaming using the Real Time Messaging Protocol (RTMP) developed by Macromedia. RTMP supports a non-encrypted version over the Transmission Control Protocol (TCP) or an encrypted version over a secure Transport Layer Security (SSL) connection. RTMPT can also be encapsulated within HTTPrequests to traverse firewalls that only allow HTTP traffic.
- TCP: Support for Transmission Control Protocol (TCP) Internet socket communication to communicate with any type of server, using stream sockets. Sockets can be used only via ActionScript, and can transfer plain text, XML or binary data (ActionScript 3.0 and later). To prevent security issues, web servers that permit Flash content to communicate with them using sockets must host an XML-based cross domain policy file, served on Port 843. Sockets enable AS3 programs to interface with any kind of server software, such as MySQL.
Until version 10 of the Flash player, there was no support for GPU acceleration. Version 10 added a limited form of support for shaders on materials in the form of the Pixel Bender API, but still did not have GPU-accelerated 3D vertex processing. A significant change came in version 11, which added a new low-level API called Stage3D (initially codenamed Molehill), which provides full GPU acceleration, similar to WebGL. (The partial support for GPU acceleration in Pixel Bender was completely removed in Flash 11.8, resulting in the disruption of some projects like MIT’s Scratch, which lacked the manpower to recode their applications quickly enough.)
Current versions of Flash Player are optimized to use hardware acceleration for video playback and 3D graphics rendering on many devices, including desktop computers. Performance is similar to HTML5 video playback. Also, Flash Player has been used on multiple mobile devices as a primary user interface renderer.
Although code written in ActionScript 3 executes up to 10 times faster than the prior ActionScript 2, the Adobe ActionScript 3 compiler is a non-optimizing compiler, and produces inefficient bytecode in the resulting SWF, when compared to toolkits such as CrossBridge.
CrossBridge, a toolkit that targets C++ code to run within the Flash Player, uses the LLVM compiler to produce bytecode that runs up to 10 times faster than code the ActionScript 3 compiler produces, only because the LLVM compiler uses more aggressive optimization.
Adobe has released ActionScript Compiler 2 (ASC2) in Flex 4.7 and onwards, which improves compilation times and optimizes the generated bytecode and supports method inlining, improving its performance at runtime.
As of 2012, the Haxe multiplatform language can build programs for Flash Player that perform faster than the same application built with the Adobe Flex SDK compiler.[unreliable source?]
Flash Player applications and games can be built in two significantly different methods:
- “Flex” applications: The Adobe Flex Framework is an integrated collection of stylable Graphical User Interface, data manipulation and networking components, and applications built upon it are termed “Flex” applications. Startup time is reduced since the Flex framework must be downloaded before the application begins, and weighs in at approximately 500 KB. Editors include Adobe Flash Builder and FlashDevelop.
- “Pure ActionScript” applications: Applications built without the Flex framework allow greater flexibility and performance. Video games built for Flash Player are typically pure-Actionscript projects. Various open-source component frameworks are available for pure ActionScript projects, such as MadComponents, that provide UI Components at significantly smaller SWF file sizes.
In both methods, developers can access the full Flash Player set of functions, including text, vector graphics, bitmap graphics, video, audio, camera, microphone, and others. AIR also includes added features such as file system integration, native extensions, native desktop integration, and hardware integration with connected devices.
Adobe provides five ways of developing applications for Flash Player:
- Adobe Flash Builder: enterprise application development and debugging
- Adobe Animate: graphic design, animation and scripting toolset
- Adobe Scout: visual profiler for performance optimization
- Apache Flex: a free SDK to compile Flash and Adobe AIR applications from source code; developed by Adobe and donated to the Apache Foundation
- CrossBridge: a free SDK to cross-compile C++ code to run in Flash Player
Third-party development environments are also available:
- FlashDevelop: an open-source Flash ActionScript IDE, which includes a debugger for AIR applications
- Powerflasher FDT: a commercial ActionScript IDE
- CodeDrive: an extension to Microsoft Visual Studio 2010 for ActionScript 3 development and debugging
- MTASC: a compiler
- Haxe: a multi-platform language
Adobe offers the free Adobe Gaming SDK, consisting (as of August 2014) of several open-source AS3 libraries built on the Flash Player Stage3D APIs for GPU-accelerated graphics:
- Away3D: GPU-accelerated 3D graphics and animation engine
- Starling: GPU-accelerated 2D graphics that mimics the Flash display list API
- Feathers: GPU-accelerated skinnable GUI library built on top of Starling
- Dragon Bones: GPU-accelerated 2D skeletal animation library
A few commercial game engines target Flash Player (Stage3D) as run-time environment, such as Unity 3D and Unreal Engine 3. Before the introduction of Stage3D, a number of older 2D engines or isometric engines like Flixel saw their heyday.
Adobe also developed the CrossBridge toolkit which cross-compiles C/C++ code to run within the Flash Player, using LLVM and GCC as compiler backends, and high-performance memory-access opcodes in the Flash Player (termed “Domain Memory”) to work with in-memory data quickly. CrossBridge is targeted toward the game development industry, and includes tools for building, testing, and debugging C/C++ projects in Flash Player.
Notable online video games developed in Flash include Angry Birds, FarmVille and FarmVille 2, and AdventureQuest (started in 2002, and still active as of 2011).
The latest version of Flash Player is available for Windows XP and later, Mac OS X 10.6 and later, and Google Chrome. Adobe no longer releases downloadable Flash plugins forLinux, although Flash Player 11.2 continues to receive security updates.
Adobe released an alpha version of Flash Player 10 for x86-64 Linux on November 17, 2008. Adobe released a beta version of Flash Player 11 on July 13, 2011, which has 64-bit editions for all supported platforms. Flash Player 11 was released to web on October 3, 2011.
Adobe Flash Player is available in three flavors: “ActiveX”, “Plug-in” and “Projector”. The “ActiveX” version is an ActiveX control for use in Internet Explorer and other Windows software that supports ActiveX technology. The “plug-in” version is available for Windows, macOS and Linux apps that support NPAPI technology. The “projector” version is a standalone player that can open SWF files directly.
In February 2012, Adobe announced it would discontinue development of Flash Player on Linux for all browsers except Google Chrome.
The Extended Support Release (ESR) of Flash Player on macOS and Windows was a version of Flash Player kept up to date with security updates, but none of the new features or bug fixes available in later versions. It has been on version 11.7 as of 9 July 2013, version 13 as of 13 May 2014., and version 18 as of 11 August 2015. Adobe has decided to discontinue the ESR branch and instead focus solely on the standard release as of August 2016.
In 2011, Flash Player had emerged as the de facto standard for online video publishing on the desktop, with adaptive bitrate video streaming, DRM, and fullscreen support.On mobile devices however, after Apple refused to allow the Flash Player within the inbuilt iOS web browser, Adobe changed strategy, enabling Flash content to be delivered as native mobile applications using the Adobe Integrated Runtime.
Up until 2012, Flash Player 11 was available for the Android (ARM Cortex-A8 and above), although in June 2012, Google announced that Android 4.1 (codenamed Jelly Bean) would not support Flash by default. Starting in August 2012, Adobe no longer updates Flash for Android. In spite of this, Adobe Flash is still available to install on Android devices via Adobe’s update archives (up to Android 4.3).
Flash Player is certified to be supported on a select range of mobile and tablet devices, from Acer, BlackBerry 10, Dell, HTC, Lenovo, Logitech, LG, Motorola, Samsung, Sharp,SoftBank, Sony (and Sony Ericsson), and Toshiba. As of 2012, Adobe has stopped browser-based Flash Player development for mobile browsers in favor ofHTML5, however Adobe continues to support Flash content on mobile devices with the Adobe Integrated Runtime, which allows developers to publish content that runs as native applications on certain supported mobile phone platforms.
Version 9 is the most recent version currently available for the Linux/ARM-based Nokia 770/N800/N810 Internet tablets running Maemo OS2008, classic Mac OS and Windows 95/NT. Version 10 can be run under Windows 98/Me using KernelEx. HP offers Version 6 of the player for HP-UX. Other versions of the player have been available at some point for OS/2, Symbian OS, Palm OS, BeOS and IRIX. The Kodak Easyshare One includes Flash Player.
Adobe said it will optimize Flash for use on ARM architecture (ARMv7 and ARMv6 architectures used in the Cortex-A series of processors and in the ARM11 family) and release it in the second half of 2009. The company also stated it wants to enable Flash on NVIDIA Tegra, Texas Instruments OMAP 3 and Samsung ARMs. Beginning 2009, it was announced that Adobe would be bringing Flash to TV sets via Intel Media Processor CE 3100 before mid-2009. ARM Holdings later said it welcomes the move of Flash, because “it will transform mobile applications and it removes the claim that the desktop controls the Internet.” However, as of May 2009, the expected ARM/Linux netbookdevices had poor support for Web video and fragmented software base.
Among other devices, LeapFrog Enterprises provides Flash Player with their Leapster Multimedia Learning System and extended the Flash Player with touch-screen support.Sony has integrated Flash Player 6 into the PlayStation Portable’s web browser via firmware version 2.70 and Flash Player 9 into the PlayStation 3’s web browser in firmware version 2.50. Nintendo has integrated Flash Lite 3.1, equivalent to Flash 8, in the Internet Channel on the Wii.
The following table documents Flash Player and AIR support on mobile operating systems:
Some CPU emulators have been created for Flash Player, including Chip8, Commodore 64, ZX Spectrum and the Nintendo Entertainment System. They enable video games created for such platforms to run within Flash Player.
Adobe has taken steps to reduce or eliminate Flash licensing costs. For instance, the SWF file format documentation is provided free of charge after they relaxed the requirement of accepting a non-disclosure agreement to view it in 2008. Adobe also created the Open Screen Project which removes licensing fees and opens data protocols for Flash.
Adobe has also open-sourced many components relating to Flash.
- In 2006, the ActionScript Virtual Machine 2 (AVM2) which implements ActionScript 3 was donated as open-source to Mozilla Foundation, to begin work on the Tamarin virtual machine that will finally implement the ECMAScript 4 language standard with the help of the Mozilla community. It was released under the terms of a MPL/GPL/LGPL tri-license and includes the specification for the ActionScript bytecode format; Tamarin Project jointly managed by Mozilla and Adobe Systems It is now considered obsolete by Mozilla.
- In 2011, the Adobe Flex Framework was donated as open-source to the Apache Software Foundation and rebranded as Apache Flex. Some saw this move as Adobe abandoning Flex, and stepping away from the Flash Platform as a whole. Sources from Apache say that “Enterprise application development is no longer a focus at Adobe. At least as Flash is concerned, Adobe is concentrating on games and video.”, and they conclude that “Flex Innovation is Exploding!”. The donated source code included a partly developed AS3 compiler (dubbed “Falcon”) and the BlazeDS set of technologies.
- In 2013, the CrossBridge C++ cross-compilation toolset was open sourced by Adobe and released on GitHub. The project was formerly termed “Alchemy” and “Flash Runtime C++ Compiler”, and targeted the game development market to enable C++ video games to run in Adobe Flash Player.
However, Adobe has not been willing to make complete source code of the Flash Player available for free software development. Free and open source alternatives to the Adobe Flash Player such as Shumway and Gnash have been built, but are no longer under active development and therefore not a viable alternative. The only fully functional open-source third-party Flash Player is the commercially available Scaleform GFx Player, which is game development middleware designed for integration into non-Flash video games.