Adobe Flash Player (відомий в Internet Explorer, Firefox і Google Chrome як Shockwave Flash) — це комп'ютерне програмне забезпечення для перегляду мультимедійного вмісту, виконання багатофункціональних Інтернет-додатків і потокового аудіо- та відеоконтенту, створеного на платформі Adobe Flash . Він може запускатися з веб-браузера як плагін браузера або окремо на підтримуваних пристроях. Спочатку створений FutureWave під назвою FutureSplash Player, він був перейменований на Macromedia Flash Player після придбання Macromedia FutureWave у 1996 році. Він був розроблений і поширений компанією Adobe Systems як Flash Player після придбання Adobe Macromedia у 2005 році. Зараз його розробляє та розповсюджує Zhongcheng для користувачів у Китаї та Harman International для корпоративних користувачів за межами Китаю у співпраці з Adobe.
Flash Player запускає файли SWF, які можна створити за допомогою Adobe Flash Professional, Adobe Flash Builder або сторонніх інструментів, таких як FlashDevelop. Flash Player підтримує векторну графіку, 3D-графіку, вбудовану аудіо-, відео- та растрову графіку, а також мову сценаріїв під назвою ActionScript, яка базується на ECMAScript (подібно до JavaScript) і підтримує об'єктно-орієнтований код . Internet Explorer 11 і Microsoft Edge Legacy у Windows 8 і новіших версіях, а також Google Chrome у всіх версіях Windows постачалися разом із плагіном Adobe Flash із ізольованим програмним середовищем.
Flash Player колись мав велику базу користувачів і був поширеним форматом для веб-ігор, анімації та елементів графічного інтерфейсу користувача (GUI), вбудованих у веб-сторінки. У 2013 році Adobe заявила, що понад 400 мільйонів із понад 1 мільярда підключених комп'ютерів оновили до нових версій Flash Player протягом шести тижнів після випуску. Однак Flash Player дедалі частіше критикували за його продуктивність, споживання заряду батареї на мобільних пристроях, кількість вразливостей безпеки, які були виявлені в програмному забезпеченні, і його закриту платформну природу. Співзасновник Apple Стів Джобс різко критикував Flash Player, опублікувавши відкритий лист, у якому детально описав аргументи Apple щодо відмови від підтримки Flash на своїх пристроях iOS . Його використання також зменшилося через сучасні веб-стандарти, які дозволяють виконувати деякі варіанти використання Flash без сторонніх плагінів. Це призвело до остаточного припинення платформи Adobe. Flash Player було офіційно припинено 31 грудня 2020 року, а його сторінку завантаження було видалено через два дні. З 12 січня 2021 року версії Flash Player (оригінальні глобальні варіанти), новіші за 32.0.0.371, випущені в травні 2020 року, відмовляються відтворювати вміст Flash і натомість відображають статичне попередження. Програмне забезпечення продовжує підтримуватися в материковому Китаї та в деяких корпоративних варіантах.
Особливості Adobe Flash Player — це середовище виконання, яке виконує та відображає вміст із наданого файлу SWF, хоча він не має вбудованих функцій для зміни файлу SWF під час виконання. Він може виконувати програмне забезпечення, написане на мові програмування ActionScript, яке дозволяє маніпулювати текстом, даними, векторною графікою, растровою графікою, звуком і відео під час виконання. Гравець також може отримати доступ до певних підключених апаратних пристроїв, включаючи веб-камери та мікрофони, після того, як користувач надасть на це дозвіл.
Програвач Flash Player використовувався Adobe Integrated Runtime (AIR) для забезпечення міжплатформного середовища виконання для настільних і мобільних програм. AIR підтримує інстальовані програми в Windows, Linux, macOS і деяких мобільних операційних системах, таких як iOS і Android . Флеш-програми мають бути створені спеціально для середовища виконання AIR, щоб використовувати додаткові надані функції, як-от інтеграція файлової системи, власні клієнтські розширення, власна інтеграція вікон/екранів, інтеграція панелі завдань/док-станції та апаратна інтеграція з підключеним акселерометром і GPS- пристроями.
Формати даних Програвач Flash Player включає вбудовану підтримку багатьох форматів даних, деякі з яких доступні лише через інтерфейс сценаріїв ActionScript .
XML: Flash Player включає вбудовану підтримку синтаксичного аналізу та генерації XML, починаючи з версії 8. XML-дані зберігаються в пам'яті як об'єктна модель XML-документа, і ними можна керувати за допомогою ActionScript. ActionScript 3 також підтримує ECMAScript для XML (E4X), що дозволяє легше маніпулювати даними XML. JSON: Flash Player 11 включає вбудовану підтримку імпорту та експорту даних у форматі JavaScript Object Notation (JSON), що забезпечує взаємодію з веб-службами та програмами JavaScript . AMF: Flash Player дозволяє зберігати дані програми на комп'ютерах користувачів у формі локальних спільних об'єктів, еквівалент Flash- файлів cookie браузера . Flash Player також може читати та записувати файли у форматі Action Message Format, стандартному форматі даних для локальних спільних об'єктів. Оскільки специфікація формату AMF опублікована, дані можна передавати в програми Flash і з них за допомогою наборів даних AMF замість JSON або XML, зменшуючи потребу в розборі та перевірці таких даних. SWF: Специфікація формату файлу SWF була опублікована Adobe, що дозволило розробити проект SWX Format, який використовував формат файлу SWF і AMF як засіб для програм Flash для обміну даними з програмами на стороні сервера. Система SWX зберігає дані як стандартний байт-код SWF, який автоматично інтерпретується Flash Player. Інший проект із відкритим вихідним кодом, SWXml, дозволяє програмам Flash завантажувати XML-файли як рідні об'єкти ActionScript без жодного аналізу XML на стороні клієнта, перетворюючи XML-файли у SWF/AMF на сервері.
Мультимедійні формати Flash Player — це передусім графічна та мультимедійна платформа, яка підтримує растрову та векторну графіку з першої версії. Він підтримує наступні різні мультимедійні формати, які він може нативно декодувати та відтворювати.
MP3: у Flash Player 4 з'явилася підтримка декодування та відтворення потокового аудіо MPEG-2 Audio Layer III (MP3). Доступ до MP3-файлів і їх відтворення можна отримати із сервера через HTTP або вбудовано у файл SWF, який також є потоковим форматом. FLV: підтримка декодування та відтворення відео та аудіо у файлах Flash Video (FLV і F4V), формат, розроблений Adobe Systems і Macromedia . Flash Video є лише контейнерним форматом і підтримує кілька різних відеокодеків, таких як Sorenson Spark, VP6 і нещодавно H.264 . Flash Player використовує апаратне прискорення для відображення відео, де воно є, використовуючи для цього такі технології, як DirectX Video Acceleration і OpenGL . Flash Video використовується YouTube, Hulu, Yahoo! Video, BBC Online, та інші постачальники новин. Файли FLV можна відтворювати із сервера за допомогою прогресивного завантаження HTTP, а також можна вставляти у файл SWF. Флеш-відео також можна передавати через RTMP за допомогою Adobe Flash Media Server або іншого подібного програмного забезпечення на стороні сервера. PNG: підтримка декодування та рендерингу зображень Portable Network Graphics (PNG) як у 24-бітному (непрозорому), так і в 32-бітному (напівпрозорому) варіантах. Flash Player 11 також може кодувати растрове зображення PNG за допомогою ActionScript. JPEG: підтримка декодування та відтворення стислих зображень JPEG . Flash Player 10 додав підтримку вдосконаленого стандарту стиснення зображень JPEG-XR, розробленого корпорацією Microsoft, що забезпечує кращі стиснення та якість, ніж JPEG. JPEG-XR забезпечує стиснення без втрат і з прозорістю альфа-каналу або без неї. Flash Player 11 також може кодувати растрове зображення JPEG або JPEG-XR за допомогою ActionScript. GIF: підтримка декодування та рендерингу стиснених зображень у форматі Graphics Interchange Format (GIF) лише в однокадрових варіантах. Завантаження багатокадрового GIF відображатиме лише перший кадр зображення.
Потокові протоколи
HTTP: підтримка зв'язку з веб-серверами за допомогою HTTP- запитів і даних POST . Однак лише веб-сайти, які явно дозволяють Flash підключатися до них, можуть бути доступні через HTTP або сокети, щоб запобігти використанню Flash як інструменту для підробки міжсайтових запитів, виконання міжсайтових сценаріїв, перезв'язування DNSPolicy file changes in Flash Player 9 and Flash Player 10 , Adobe і атаки на відмову в обслуговуванні . Веб-сайти повинні розміщувати певний файл XML, що називається політикою між доменами, дозволяючи або забороняючи Flash-контент із певних веб-сайтів підключатися до них. Певні веб-сайти, як-от Digg, Flickr і Photobucket, уже розміщують міждоменну політику, яка дозволяє вмісту Flash отримувати доступ до веб-сайту через HTTP. RTMP: підтримка потокового аудіо та відео в реальному часі за допомогою протоколу обміну повідомленнями в реальному часі (RTMP), розробленого Macromedia . RTMP підтримує незашифровану версію через протокол керування передачею (TCP) або зашифровану версію через захищене з'єднання безпеки транспортного рівня (SSL). RTMPT також можна інкапсулювати в HTTP- запити для проходження брандмауерів, які дозволяють лише HTTP-трафік. TCP: підтримка протоколу керування передачею (TCP) через Інтернет-сокет для зв'язку з будь-яким типом сервера за допомогою потокових сокетів . Сокети можна використовувати лише через ActionScript і передавати звичайний текст, XML або двійкові дані (ActionScript 3.0 і новіші версії). Щоб запобігти проблемам із безпекою, веб-сервери, які дозволяють Flash-вмісту спілкуватися з ними за допомогою сокетів, повинні розміщувати міждоменний файл політики на основі XML, який подається на порт 843. Сокети дозволяють програмам AS3 взаємодіяти з будь-яким серверним програмним забезпеченням, таким як MySQL .
Продуктивність
Апаратне прискорення До версії 10 Flash Player не було підтримки прискорення GPU . Версія 10 додала обмежену форму підтримки шейдерів на матеріалах у формі Pixel Bender API, але все ще не мала 3D-обробки вершин із прискоренням GPU. Значна зміна відбулася у версії 11, яка додала новий низькорівневий API під назвою Stage3D (спочатку під кодовою назвою Molehill), який забезпечує повне прискорення GPU, подібне до WebGL . (Часткова підтримка прискорення графічного процесора в Pixel Bender була повністю вилучена у Flash 11.8, що призвело до зриву деяких проектів, таких як Scratch Массачусетського технологічного інституту, якому не вистачало робочої сили, щоб досить швидко перекодувати свої програми. )
Поточні версії Flash Player оптимізовано для використання апаратного прискорення для відтворення відео та візуалізації 3D-графіки на багатьох пристроях, включаючи настільні комп'ютери. Продуктивність подібна до відтворення відео HTML5 . Крім того, Flash Player використовувався на багатьох мобільних пристроях як основний рендерер інтерфейсу користувача.
Компіляція Незважаючи на те, що код, написаний на ActionScript 3, виконується в 10 разів швидше, ніж попередній ActionScript 2, компілятор Adobe ActionScript 3 не є оптимізуючим компілятором і створює неефективний байт-код у кінцевому SWF, порівняно з наборами інструментів, такими як CrossBridge . , Adobe Labs, «ASC performs few optimizations at this time»
CrossBridge, набір інструментів, націлений на виконання коду C++ у Flash Player, використовує компілятор LLVM для створення байт-коду, який працює в 10 разів швидше, ніж код, створений компілятором ActionScript 3, лише тому, що компілятор LLVM використовує більш агресивну оптимізацію.
Adobe випустила компілятор ActionScript 2 (ASC2) у Flex 4.7 і новіших версіях, який покращує час компіляції та оптимізує згенерований байт-код, а також підтримує вбудовування методів, покращуючи його продуктивність під час виконання.
З 2012 року багатоплатформна мова Haxe може створювати програми для Flash Player, які працюють швидше, ніж та сама програма, створена за допомогою компілятора Adobe Flex SDK. ]
Методи розробки Програми й ігри Flash Player можна створювати двома значно різними методами: