Macromedia Flash, or simply Flash, refers to both a multimedia authoring program and the Macromedia Flash Player, written and distributed by Macromedia (and recently purchased by Adobe), that utilizes vector and raster graphics, program code and bidirectional streaming video and audio. Strictly speaking, Macromedia Flash is the authoring environment and Flash Player is the virtual machine application used to run the Flash files, but in colloquial language these have become mixed: "Flash" can mean either the authoring environment, the player or the application files.
The Flash files, which usually have an SWF file extension, may appear in a web page for viewing in a web browser, or standalone Flash players may "play" them. Flash files occur most often as animations, advertisements or design elements on web pages, and more recently Rich Internet Applications. A Flash file can contain more diverse information than a GIF or JPEG file of the same size.
Flash allows the embedding, combination and presentation of program code, images, sounds, movies and simple HTML-like text. Flash Player, from version 6, also supports two-way streaming of sound, video and custom data (upstreaming of sound and video only available when used in conjunction with Macromedia Flash Communication Server). This makes it a suitable platform for high-level multi-user applications, a simple example of this being a chat room.
Flash has advanced features for data loading through XML data, querystring-formatted HTTP data, JPEG images, MP3 sounds, other Flash movies, and TCP Socket connections. The TCP connection can also be used to send data to server.
Flash supports progressive streaming by default (frames of animation load individually and can be shown before the entire file is loaded). It also has support for loading in true streaming video using Flash Communication Server. Flash supports Unicode, which makes it suitable for internationalization.
Flash content is not tied to the HTML framework, so it does not use browser settings for font size, color, etc; Text may appear tiny for vision-impaired people or those with high resolution screens (though some people consider a possibility to create content, looking same way in every browser of every user, as an advantage). Users can still zoom in the Flash movie if the developer hasn't disabled this feature.
The content is binary and thus more challenging for search engines to index than HTML. As a result, sites using solely Flash experience will have decreased visibility for their inner content in search engines. Google indexes the content of Flash files (for example: ), however, it is not clear if this includes dynamically loaded content. Macromedia has also released a search engine SDK to make it easy for search engines to index Flash content.
ActionScript 2.0 can be considered a full-fledged object-oriented programming language, including its free-form coding style, events, interfaces and inheritance. Many object-oriented features are those of the compiler; it is still a scripting programming language withoutrun-time strong types or many other object-oriented programming features.
ActionScript 2.0 can be compiled with the built-in compiler in the Flash IDE or with Motion Twin ActionScript2 Compiler (MTASC). See external links.
Flash Player uses a sandbox security model, which means that Flash applications running in a browser have very strict and limited resources available to them. The applications cannot, for example, read files from the hard disk (except the cookie-like data they themselves have written). They can only communicate with the domain they originated from, unless explicitly allowed by another domain.
Flash Player is, as any application that handles files received from the Internet, susceptible to attacks. Specially crafted files could potentially cause the application to malfunction, by allowing execution of malevolent code. The Player plug-in has had security flaws which may expose a computer to remote attacks. See  and  for a December 2002 problem, addressed by a public warning and patch from Macromedia. Fortunately, all the security incidents have been only proof-of-concept breaches and never escalated into real-world problems.
Flash can retain information locally (in a manner similar, but more extensive, to browser cookies), giving the client the ability to, for example, remember the level or score a user has achieved on a Flash-based game, or the settings used on a previously visited website. This can compromise the security of users' data and privacy, and there are already reports of existing exploitation by advertisers (for example, Persistent Information Element). Most users, including those familiar with Flash who protect themselves from cookies, are unaware of this kind of tracking, which is not curtailed by customary in-browser cookie settings and most cookie-cleaning utilities. The persistent data can be avoided by applying settings described at Macromedia web site .
There is no direct way for saving .swf files from the browser. However, if a link points to the URL of the file, users can utilize the "Save target as..." command available in the context menu of most browsers. The files can also be downloaded by using web grabber software such as Wget. Once the .swf file is saved locally, the Flash application files can quite easily be decompiled into its source code and assets. Several available programs extract graphics, sounds and program code from swf files. For example, an open source program called Flasm allows users to extract ActionScript from a swf file as virtual machine intermediate language ("byte-code"), edit it, and then reinsert it into the file. Obfuscation of the swf files makes the extraction infeasible in most cases.
Compared to other plugins such as Java, QuickTime or Windows Media Player, the Flash Player has very small install size and fast initialization time.
Like CSS with HTML, PostScript, SVG and PDF, Flash can be used to specify exact positioning of the various page elements. This gives the designer a great degree of control over how the user interface looks. The layout can also be adjusted programmatically at run-time.
The use of vector graphics (like PostScript, SVG and PDF) - especially when combined with program code - allows Flash files to translate to small file sizes which take less bandwidth to transmit than bitmaps or video clips do. In many cases, Flash is very attractive solution for delivering mixed content. If the content is purely one format (such as text, video or audio), other alternatives may provide better outcome. Also, depending on the type of application or animation created (in particular, transparency or large screen updates as in photographic or text fades) a Flash movie may need more CPU power than alternatives.
Flash as a format has become very widespread on the desktop market. Through an NPD study, Macromedia claims that 98% of Web users have Flash Player installed  ��" 90% having the latest version. Numbers vary depending on the detection scheme and research demographics: Webhits (German page) counts only 71% of Flash-enabled browsers.
Flash players exist for a wide variety of different systems and devices. Flash content can run consistently on Microsoft Windows, Mac OS, Linux and various other Unix systems (Macromedia has created or licensed players for the following operating systems: GNU/Linux x86, Windows, Mac OS 9/X, Solaris, HP-UX, Pocket PC, OS/2, Symbian, Palm OS, BeOS and IRIX). Olivier Debon has written an open source version of the Flash 3 player; ports of this exist to numerous operating systems, including the Amiga. See also Macromedia Flash Lite for Flash compatibility on other devices.
Macromedia has released the specifications of the Flash file format (excluding specifications of related formats such as AMF), and compatible third-party tools exist. However, Macromedia retains control of the format. Since Flash files do not depend on a truly 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 utilize and generate the SWF file format and a large and vibrant open source community. Apparently, the 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.
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. February 1999 saw the launch of MorphInk 99, the first non-Macromedia or 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. Many open and free libraries based on the information released to the public in 1998, and from later study of the SWF file format, such as the Ming library, exist to produce SWF files on many platforms. Macromedia has made the Flash Files specifications for versions 6 and later available only as a PDF under a non-disclosure agreement.
Many shareware developers produced Flash creation tools and sold them for under $50 USD between 2000 and 2002. In 2003 competition and the emergence of free Flash creation tools, most notably OpenOffice.org, 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 $100 USD and support Actionscript. F4L has started to develop such a tool including an interface similar to that of Macromedia's.
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. Adobe cancelled it in 2003.
In November 2003 Microsoft announced that it had started working on a competing product, Sparkle, whose release would coincide with that of their next-generation Windows operating system, Windows Vista. The purchase of Creature House Inc.'s assets in September 2003 has led to speculation that their Expression graphics engine would form the basis for the Sparkle product.
The nature and popularity of Flash has had a large influence in graphic design. Its rotoscoping feature led to the widespread popularity of rotoscoped vector graphics in the default pastel colors of the Flash authoring tools. Many flyers, advertisements, magazines, and even websites which did not use Flash adopted this graphic style. For example, the Apple iPod campaign with character outlines on colorful backgrounds can be seen heavily influenced by the paradigmatic Flash design style.
Probably due to wide usage of Flash in web advertisements, tools have emerged for blocking Flash content in some or all web sites, or temporarily or permanently turning Flash Player off. For example, FlashBlock for the Mozilla Firefox browser.
Attendees at selected Macromedia seminars and conferences in 2004 previewed some future features of the Flash player (version 8). The most notable new features included realtime video alpha channels, improved Flash player detection and bitmap effects (blurs, drop shadows). Video alpha channels allow Flash to display video clips with transparency. The example SWF shown used a video clip of a person walking across the screen while the background video clip could be changed by clicking separate buttons. The clip of the person blended seamlessly into whichever background was selected.
Flash guru Colin Moock has a blog entry that highlights some of the new features and provides video clips from Macromedia's presentation in Tokyo.