بررسی نحوه کامپایل برنامه ها در پلتفرم فلش

نوشته شده توسط

حسین معماریان

در ۲۸ شهریور ماه سال ۱۳۸۸

یک دیدگاه

در این نوشته قصد دارم یک بررسی خلاصه وار و از نزدیک در نحوه کامپایل یک برنامه در فلش رو داشته باشم تا شناختمان از روند کامپایل یک برنامه بیشتر شود و این کار باعث می شود که کدهای با کیفیت بهتری تولید کنیم .

کدهایی که با اکشن اسکریپت زده می شود در سه تکنولوژی مختلف قابلیت اجرا رو دارند

FlashPlayer

Flashlite

AIR که  خلاصه شده Adobe Integrate Runtime می باشد.

چون محصولات تولید شده در نهایت درFlashplayer اجرا می شوند ، برنامه های نوشته شده با این تکتولوژی نیازی به سیستم عامل خاص ندارند و روی هر سیستم عاملی که این برنامه نصب باشد اجرا می شود بدون هیچ تغییراتی . این سه تکنولوژی نام برده در بالا  مشهور هستند به Flash Client Runtime Environment که مختصرا  به آن Flash runtime  میگوییم. مورد بعدی که می خواهم توضیح بدم   راجع به AVM2 هست که بعضی ها این رو با Flash runtime اشتباه می گیرند و فکر می کنند که این دو در حقیقت یکی هستند در حالیکه تفاوت های بارزی دارند ، مثلا AVM2 که خلاصه شده Action virtual Machine می باشد یک ماژول نرم افزاری است در داخل فلش پلیر. Flash Runtime نه تنها ماژول نیست بلکه وظایف دیگری به عهده دارد مانند نشان دادن محتوا روی مانیتور فیلم ها و همچنین صداها و ارتباط بین سیستم عامل

مراحل کامپایل:

کامپایل اولیه:

برنامه ای که نوشته ایم با فلش برای اجرا نیازمند چند مرحله می باشد در مرحله اول کدهای نوشته شده که برای انسان قابل فهم هستند باید به زبانی باینری  تبدیل شود که برای Flash Runtime قابل فهم باشد. تبدیل شده این کد مشهور است به Actionscript Bytecode یا (ABC)  هنوز کد ما به مرحله نهایی نرسیده و عملا این کد باینری برای swf. مناسب است نه برای محصول نهایی چون این کد آماده شده برای فایل swf برای نشان دادن محتویات برنامه احتیاج به یک کامپایل دیگر هست. این پروسه که توضیح دادم رو کامپایل swf. یا publishing یا export می گویند. خوب تا اینجای کار فکر کنم تقریبا اکثرا می دانستند و فقط چند اصطلاح جدید وجود داشت که با هم آشنا شدیم. خوب ما باز هم نیاز به یک کامپایلر داریم تا برنامه مان دیده شود در صفحه مانیتور این وظیفه کامپایلر دوم هست که این کامپایلر در ابزارهای Adobe Flash و Flexbuilder به صورت داخلی تعبیه شده اند البته دو نرم افزاری که نام بردم دارای اشتراکهای فراوان هستند در کامپایل ولی عملا با هم متفاوت هستند ، یعنی شما نمی توانید کدی که در Flash نوشته اید در Flex اجرا کنید! به خاطر این که این دو کامپایلر متفاوتی دارند.

کامپایل نهایی:

Just-In-Time compilation : بعد از مراحلی که در بالا توضیح دادم Flash Runtime به صورت اتوماتیک  کد باینری رو تبدیل به زبانی می کند که قابل فهم باشد برای ماشین (کد بومی) که این مرحله معروف است به Jit دلیل این نامگذاری هم فکر کنم از روی نام آن مشخص باشد! در لحظه و در زمان اجرا این عملیات صورت می گیرد . شاید برای برنامه نویس های با تجربه این نکته جالب باشه که کلاس های تعریف شده  در سطح بالا شامل حال این مرحله از کامایل نمی شوند یعنی just-in-time نیستند ، چون یک بار بیشتر اجرا نمیشوند از این رو بیشتر سعی کنید در برنامه هاتون از کلاسهای تعریف شده (منظور کدنویسی) استفاده کنید.

امیدوارم مفید واقع شده باشه همانطور که گفتم بسیار خلاصه بود وگرنه مطلب نسبتا مفصلی راجع به معماریAVM ، JIT   و همینطور فرق کامپایلرها در پلتفرم های مختلف مورد بحث در این مقاله  هستند که بعدها به این موضوع خواهم پرداخت.

یک دیدگاه برای “"بررسی نحوه کامپایل برنامه ها در پلتفرم فلش"”

  1. در ۳۱ شهریور ماه سال ۱۳۸۸

    بسیار جالب بود
    استفاده کردیم… ;)

دیدگاهی برای ما بنویسید