فلش پلیر چیست و چرا به آن نیاز داریم؟ — به زبان ساده
«آدوبی فلش پلیر» (Adobe Flash Player) که در مرورگرهای کروم، فایرفاکس و اینترنت اکسپلورر به صورت Shockwave Flash نامگذاری شده است، یک نرمافزار رایانهای است که برای بهرهگیری از محتوای تولید شده در پلتفرم Adobe Flash شامل مشاهده محتوای مالتیمدیا، اجرای اپلیکیشنهای اینترنتی با امکانات کامل و استریم صوت و ویدئو ساخته شده است. فلش پلیر میتواند از یک مرورگر وب به صورت یک پلاگین و یا روی دستگاههای موبایل پشتیبانی شده اجرا شود.
تاریخچه فلش پلیر
فلش پلیر از سوی شرکت «ماکرومدیا» (Macromedia) ساخته شده و از سوی Adobe Systems توسعه یافته و توزیع شده است، زیرا آدوبی در سال 2005 شرکت ماکرومدیا را خریداری کرده است. فلش پلیر به صورت رایگان عرضه میشود. در این مطلب به بررسی تاریخچه پانزده ساله صعود و سقوط یک امپراطوری مهم به نام Adobe Flash خواهیم پرداخت که روزگاری همه دنیای وب را به زیر سلطه خود کشیده بود، اما امروز تا اعلام مرگ کامل آن فاصله چندانی نداریم. برای این که با روایت این فراز و فرود آشنا شوید، با ما همراه باشید.
فلش پلیر فایلهای SWF را که توسط نرمافزارهای Adobe Flash Professional، Adobe Flash Builder یا ابزارهای ثالث مانند FlashDevelop ساخته شدهاند اجرا میکند. فلش پلیر از گرافیکهای وکتور، گرافیکهای 3 بعدی، صوت، ویدئو و گرافیکهای raster جاسازیشده و یک زبان اسکریپتنویسی به نام ActionScript پشتیبانی میکند. ActionScript بر اساس ECMAScript (مشابه جاوا اسکریپت) ساخته شده و از کد شیءگرا پشتیبانی میکند. فلش پلیر به صورت رایگان توزیع شده و نسخههای پلاگین آن برای اغلب مرورگرهای عمده و سیستمهای عامل مهم عرضه شده است. گوگل کروم، اینترنت اکسپلورر 11 و بعد، مرورگر Edge مایکروسافت دارای یک پلاگین فلش پلیر آماده هستند.
در زمان نه چندان دوری فلش پلیر کاربران زیادی داشت و یک فرمت رایج برای بازیهای وب، انیمیشنها و عناصر رابطهای کاربری گرافیکی که در صفحههای وب قرار میگیرند محسوب میشد. آدوبی در سال 2013 اعلام کرد که بیش از 400 میلیون از یک میلیارد رایانه دسکتاپ متصل به اینترنت در سراسر دنیا در طی شش هفته از زمان انتشار نسخه جدید فلش پلیر، به این نسخه آپدیت کردهاند. با این حال فلش پلیر به خاطر عملکردش، مصرف باتری روی دستگاههای موبایل، تعداد زیاد آسیبپذیریهای امنیتی که در نرمافزار کشف میشد و ماهیت بسته پلتفرم خود به شدت مورد انتقاد قرار میگرفت.
استیو جایز، همبنیانگذار شرکت اپل یکی از چهرههای جدی منتقد فلش پلیر بود. وی یک نامه عمومی در مورد دلیل عدم پشتیبانی از فلش روی دستگاههای خانواده iOS منتشر کرد. همچنین بخشی از کاربردهای فلش پلیر به دلیل استانداردهای مدرن وب که کاردهای فلش را بدون نیاز به پلاگینهای شخص ثالث تأمین میکردند، از دست رفتند.
در جولای 2017 شرکت آدوبی اعلام کرد که پشتیبانی از فلش پلیر در تاریخ 31 دسامبر 2020 (11 دی 1399) متوقف خواهد شد و کاربران را تشویق به استفاده از استانداردهای باز HTML5 به جای فلش میکند. این اعلامیه با شرکتهای اپل، فیسبوک، گوگل، مایکروسافت و بنیاد موزیلا هماهنگ شده بود. در شهریور 1398 مایکروسافت اعلام کرد که در تاریخ یادشده فلش به طور کامل از همه مرورگرها از طریق یک آپدیت ویندوز حذف خواهد شد.
قابلیتهای فلش پلیر
آدوبی فلش پلیر یک محیط «زمان اجرا» (runtime) است که محتوا را از یک فایل SWF ارائه شده نمایش میدهد، اگر چه هیچ قابلیت داخلی برای ویرایش SWF در زمان اجرا ندارد. این محیط زمان اجرا میتواند نرمافزارهای نوشته شده در زبان برنامهنویسی ActionScript را اجرا کند و به زمان اجرا امکان میدهد که متن، دادهها، گرافیکهای وکتور، گرافیکهای پیکسلی، صوت و ویدئو را ویرایش و دستکاری کند. این پلیر میتواند به برخی سختافزارهای خاص متصل به دستگاه نیز دسترسی پیدا کند که شامل دوربینهای وب و میکروفنها میشود. فلش پلیر به منظور این دسترسیها باید مجوزی از کاربر دریافت کند.
فلش پلیر به صورت داخلی از سوی Adobe Integrated Runtime استفاده میشود تا محیط زمان اجرای چندپلتفرمی برای اپلیکیشنهای دسکتاپ و موبایل عرضه کند. AIR از اپلیکیشنهای نصبی روی سیستمهای ویندوز، لینوکس، مکاواس و دیگر سیستمهای عامل موبایل مانند اندروید و iOS پشتیبانی میکند. اپلیکیشنهای فلش باید به طور خاص برای زمان اجرای AIR ساخته شده باشند تا از قابلیتهای اضافی ارائه شده مانند یکپارچهسازی با فایل سیستم، اکستنشنهای نیتیو کلاینت، یکپارچگی نیتیو پنجره/صفحه، یکپارچگی taskbar/dock و یکپارچگی سختافزاری با دستگاههای شتابسنج و جیپیاس استفاده کند.
فرمتهای داده
فلش پلیر پشتیبانی نیتیوی از بسیاری از فرمتهای داده انجام میدهد که برخی از آنها از طریق اینترفیس اسکریپتنویسی اکشن اسکریپت در دسترس ما قرار گرفتهاند. از جمله این فرمتهای داده شامل XML، JSON، AMF و SWF است.
فرمتهای مالتیمدیا: فلش پلیر اساساً یک پلتفرم گرافیکی و مالتیمدیا است و از گرافیکهای Raster و برداری از اولین نسخههای خود پشتیبانی میکند. این پلتفرم از فرمتهای مختلف مالتیمدیا شامل MP3، FLV، PNG، JPEG و GIF پشتیبانی کرده و میتواند آنها را دیکد و پخش کند.
پروتکلهای استریم: فلش پلیر از بسیاری از پروتکلهای استریم نیز پشتیبانی میکند که شامل HTTP، RTMP و TCP میشود.
عملکرد فلش پلیر
در این بخش به بررسی عملکرد فلش پلیر میپردازیم.
شتابدهی سختافزاری: تا نسخه 10 فلش پلیر هیچ نوع پشتیبانی از شتابدهی GPU وجود نداشت. در نسخه 10 پشتیبانی محدودی از Shader-ها ارائه شد. نسخههای کنونی فلش پلیر برای شتابدهی سختافزاری جهت پخش رندرینگ گرافیکهای 3 بعدی روی بسیاری از دستگاهها از جمله رایانههای دسکتاپ بهینهسازی شدهاند.
فرایند کامپایل: با این که کد نوشته شده در اکشن اسکریپت 3 تا 10 بار سریعتر از اکشن اسکریپت 2 اجرا میشود، اما کامپایلر آدوبی اکشن اسکریپت یک کامپایلر غیر بهینهساز است و در قیاس با ابزارهایی مانند CrossBridge، بایتکد ناکارآمدی در SWF حاصل تولید میکند.
روشهای توسعه اپلیکیشنهای فلش پلیر
بازیها و اپلیکیشنهای فلش پلیر را به طور عمده به دو روش میتوان ساخت:
- اپلیکیشنهای Flex: فریمورک Adobe Flex یک مجموعه یکپارچه از اینترفیس رابط گرافیکی قابل استایلدهی، کامپوننتهای دستکاری داده و شبکهبندی است و اپلیکیشنهایی که با آن ساخته شده به نام اپلیکیشنهای فلکس شناخته میشوند.
- اپلیکیشنهای اکشن اسکریپت خالص: اپلیکیشنهای ساخته شده بدون فریمورک Flex انعطافپذیری و عملکرد بالاتری دارند. بازیهای ویدئویی ساخته شده برای فلش پلیر به طور معمول پروژههای اکشن اسکریپت خالص هستند. فریمورکهای کامپوننت اوپن سورس مختلفی برای پروژههای اکشن اسکریپت خالص ارائه شدهاند که شامل MadComponents میشود که کامپوننتهای UI را در اندازهی بسیار کوچکتر از SWF ارائه میکند.
توجه کنید که در هر دوی این روشها توسعهدهندگان میتوانند به کارکردهای فلش پلیر مانند متن، گرافیک وکتور، گرافیک بیتی، ویدئو، صوت، دوربین، میکروفن و موارد دیگر دسترسی داشته باشند. شرکت آدوبی پنج روش برای توسعه اپلیکیشنهای فلش پلیر به شرح زیر ارائه کرده است:
- Adobe Flash Builder: برای توسعه و دیباگ اپلیکیشنهای سازمانی
- Adobe Animate: مجموعه ابزارهایی برای طراحی گرافیکی، انیمیشن و اسکریپتنویسی.
- Adobe Scout: پروفایلر بصری برای بهینهسازی عملکرد
- Apache Flex: یک SDK رایگان برای کامپایل اپلیکیشنهای فلش و Adobe AIR از سورس کد
- CrossBridge: یک SDK رایگان برای کراس-کامپایل کد C+ جهت اجرا در فلش پلیر
پلتفرمهای پشتیبانیکننده از فلش پلیر
جدیدترین نسخه فلش پلیر برای ویندوز نسخه XP SP2+ به بالا و Mac OS X 10.6 به بالا و لینوکس عرضه شده است.
پلتفرمهای دسکتاپ
آدوبی فلش پلیر در چهار گونه مختلف عرضه شده است:
- اینترنت اکسپلورر ( ActiveX) – این گونه در واقع یک کنترل ActiveX برای استفاده در مرورگر اینترنت اکسپلورر و پوستههای آن و دیگر اپلیکیشنهای ویندوزی است که از ActiveX پشتیبانی میکنند.
- فایرفاکس (NPAPI) – این گونه برای فایرفاکس و دیگر اپلیکیشنهایی عرضه شده است که از NPAPI پشتیبانی میکنند.
- اپرا و کرومیوم (PPAPI) – این گونه برای مرورگرهای کرومیوم و دیگر مرورگرهای مبتنی بر آن مانند اپرا و دیگر اپلیکیشنهایی که از PPAPI پشتیبانی میکنند عرضه شده است.
- Projector – این گونه یک پلیر مستقل است که فایلهای SWF را به صورت مستقیم باز میکند.
پلتفرمهای موبایل
در سال 2011 فلش پلیر به عنوان یک استاندارد ناگزیر برای انتشار آنلاین ویدئو روی دسکتاپ مطرح شد، چون امکان استریم با بیتریت متفاوت، DRM، و پخش تمام صفحه را پشتیبانی میکرد. با این حال روی دستگاههای موبایل پس از آن که اپل از قبول فلش پلیر درون مرورگر داخلی iOS سرباز زد، آدوبی راهبرد خود را تغییر داد و محتوای FLASH را از طریق اپلیکیشنهای نیتیو موبایل با استفاده از زمان اجرای Adobe Integrated ارائه کرد.
فلش پلیر 11 تا سال 2012 برای اندروید عرضه میشد اما از ماه جون این سال گوگل اعلام کرد که از اندروید 4.1 به بعد دیگر فلش به صورت پیشفرض پشتیبانی نمیشود. از اواسط تابستان این سال ادوبی دیگر فلش را برای اندروید بهروزرسانی نکرد. با این حال همچنان امکان نصب Adobe Flash روی دستگاههای اندروید از طریق آرشیوهای آپدیت آدوبی وجود داشت.
انتقادها از فلش پلیر
فلش پلیر در طی عمر خود با انتقادات زیادی مواجه شده است که در ادامه برخی از آنها را با هم مرور میکنیم.
کاربردپذیری
نسخههای قبلی فلش روی برخی مرورگرها پیش از نصب بهروزرسانی باید، uninstall میشدند. با این حال از نسخه 11.2 به بعد روی ویندوز گزینه بهروزرسانی خودکار ارائه شد. لینوکس پشتیبانی کاملی نداشت چون آدوبی با گوگل برای پیادهسازی آن از طریق مرورگر وب کروم روی همه پلتفرمهای لینوکس همکاری داشت.
ترکیب اپلیکیشنهای فلش با HTML موجب بروز رفتارهای غیرمنتظره در مرورگر در خصوص مدیریت ورودیها یعنی ماوس و کیبورد میشد که منتهی به تجربه کاربری بد در صفحههای وب میگشت.
حریم خصوصی
فلش پلیر از ذخیرهسازی دائمی لوکال دادههای پشتیبانی میکند که میتواند به طور مشابه برای کوکیها، یا Web Storage در وباپلیکیشنها استفاده شود. ذخیرهسازی لوکال در فلش پلیر به وبسایتها امکان میدهد که دادههای غیر مبادلهای مانند اطلاعات احراز هویت، امتیازهای بازی یا بازیهای ذخیره شده، شناسههای نشستهای مبتنی بر سرور، ترجیحهای سایت، کارهای ذخیره شده یا فایلهای موقت را روی رایانه کاربر ذخیره کنند. فلش پلیر تنها به آن دامنه که دادهها را ذخیره کرده امکان دسترسی به این دادهها را میدهد.
از آنجا که ذخیرهسازی لوکال میتواند برای ذخیره اطلاعات جهت بازیابی متعاقب از سوی همان سایت استفاده شود، یک سایت میتواند از آن برای گردآوری آمار استفاده کند. این وضعیت برخی دغدغهها در خصوص حریم خصوصی کاربران ایجاد کرده است. بنابراین امکان غیر فعالسازی ناقص یا کامل این قابلیت از سوی فلش پلیر نیز ارائه شده است.
امنیت
آدوبی به صورت مداوم باگهای امنیتی را رصد کرده و بهروزرسانیهای امنیتی را ارائه میکند، اما یادداشتهای ارائه شده به همراه بهروزرسانیهای فلش پلیر این آسیبپذیریهای امنیتی را افشا میکند و ضرورت نصب یک بهروزرسانی خاص را دشوار میسازد.
در سال 2010 شرکت آدوبی به طور رسمی به خاطر عدم اصلاح یک آسیبپذیری به مدت یک سال از کاربران عذرخواهی کرد. در ژوئن این سال یک آسیبپذیری حیاتی در نسخههای جدید فلش پلیر اعلام شد که مورد استفاده فعال قرار گرفته است. در اکتبر این سال آدوبی اعلام کرد که یک آسیبپذیری مهم دیگر امکان تأثیرگذاری روی دستگاههای اندروید را یافته است. به کاربران اندروید توصیه شد که فلش پلیر را غیر فعال کنند. استیو جایز نیز به جهت این آسیبپذیریهای امنیتی فلش پلیر را مورد انتقاد قرار داد.
انحصار ارائهکننده
فلش پلیر 11.2 انواع خاصی از محتوا را پخش نمیکرد مگر این که به صورت دیجیتالی از سوی آدوبی امضا شده بودند و یک پروانه از سوی آدوبی دریافت میشد. این حرکت از سوی آدوبی مورد انتقاد گستردهای قرار گرفت چون موجب انحصار در برابر ابزارهای مستقل توسعهدهندگان میشد. این مشکل در اوایل سال 2013 حل شد و آدوبی اعلام کرد که دیگر هیچ لایسنس یا هزینه از توسعهدهنده دریافت نمیکند.